#ifndef DEF_SPRITE_H #define DEF_SPRITE_H /* [LIBS] Internes =========================================================*/ #include "SDL.h" #include "SDL_image.h" #include #include #include /* [LIBS] Externes =========================================================*/ #define SPRITE_ANIM_ONCE 0x1 #define SPRITE_ANIM_INFINITE 0x10 #define SPRITE_ANIM_REVERSE 0x100 /* [NS] Namespaces =========================================================*/ using namespace std; class Sprite{ public: Sprite(sdltl *m); // Sprite vide Sprite(sdltl *m, const int rgb[]); // Sprite couleur Sprite(sdltl *m, const char *url); // Sprite image ~Sprite(); void dimensions(); // Dimensions par defaut void dimensions(SDL_Rect r); // Dimensions sortie void dimensions(SDL_Rect r, SDL_Rect clip); // Dimensions in/out void push(); // Ajoute a l'affichage void pull(); // Retire de l'affichage void update(); // Fait renmonter la mise a jour du manager // GETTERS SDL_Texture *texture(); sdltl *manager(); private: sdltl *_manager; SDL_Texture *_texture; SDL_Rect _dst; SDL_Rect _src; }; /* [AGGR] Groupement de Sprite =========================================================*/ class SpriteGroup{ public: SpriteGroup(); void add(Sprite *s); void remove(Sprite *s); Sprite* get(int i); void push(); // Ajoute les sprites a l'affichage void pull(); // Retire les sprites de l'affichage void update(); // Fait renmonter la mise a jour du manager thread *animate(int t, int flags=0); private: vector _sprites; thread *_animation; friend void SpriteGroupAnimation(SpriteGroup *sg, int t, int flags=SPRITE_ANIM_ONCE ); }; /* [BODY] Inclusion du corps =========================================================*/ #include "Sprite.cpp" #endif