#ifndef DEF_SPRITE_H #define DEF_SPRITE_H /* [LIBS] Internes =========================================================*/ #include "SDL.h" #include "SDL_image.h" #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(SDL_Rect r); Sprite(const int rgb[], SDL_Rect r); Sprite(const char url[], SDL_Rect r, SDL_Rect clip); ~Sprite(); void setImage(const char url[], int ox=0, int oy=0); void appendTo(SDL_Surface *dest); // GETTERS SDL_Surface *surface(); private: SDL_Surface *_surface; SDL_Rect _rect; SDL_Rect _origin; }; /* [AGGR] Groupement de Sprite =========================================================*/ class SpriteGroup{ public: SpriteGroup(); void add(Sprite *s); void remove(Sprite *s); Sprite* get(int i); void appendTo(SDL_Surface *dest); thread *animate(SDL_Window *win, int t, Sprite *clear=NULL, int flags=0); private: vector _sprites; thread *_animation; friend void SpriteGroupAnimation(SDL_Window *win, SpriteGroup *sg, int t, Sprite *clear=NULL, int flags=SPRITE_ANIM_ONCE ); }; /* [BODY] Inclusion du corps =========================================================*/ #include "Sprite.cpp" #endif