lab.cpp/SDL#4/xSDL/xSpriteAnimation.h

56 lines
1.4 KiB
C
Raw Normal View History

2016-03-12 23:22:28 +00:00
#ifndef DEF_XSPRITEANIMATION_H
#define DEF_XSPRITEANIMATION_H
class xSpriteAnimation{
public:
xSpriteAnimation(xManager *manager, const char *url, SDL_Rect viewport); // Spritesheet avec taille de chaque sprite
xSpriteAnimation(xManager *manager, SDL_Texture *t, SDL_Rect viewport); // Spritesheet avec taille de chaque sprite
2016-03-12 23:22:28 +00:00
~xSpriteAnimation();
void move(SDL_Rect newpos); // Deplace l'animation
void move(int x, int y); // Deplace l'animation
void addFrame(SDL_Rect clip); // Ajoute une frame en fonction des coordonnees
void clear(); // Supprime les frames
2016-03-12 23:22:28 +00:00
// GETTER
xManager *manager();
SDL_Rect *viewport();
2016-03-13 19:36:16 +00:00
// Gestion de l'ajout au rendu
void push(string index); // Ajout au rendu
void pull(string index); // Retrait du rendu
void pull(); // Retrait du rendu
// Gestion de l'animation
void start(int t, int flags=SPRITE_ANIM_ONCE);
2016-03-13 19:36:16 +00:00
void stop();
2016-03-12 23:22:28 +00:00
protected:
2016-03-12 23:22:28 +00:00
xManager *_manager;
SDL_Texture *_texture;
// Position de l'animation
SDL_Rect _viewport;
2016-03-12 23:22:28 +00:00
// Contiendra les frames
vector<SDL_Rect> _frames;
SDL_Rect _frame; // Frame courante
2016-03-13 23:06:33 +00:00
// Nom
string _index;
int _timeout;
int _flags;
2016-03-12 23:22:28 +00:00
// Contiendra le thread de l'animation
thread *_animation;
friend void xSpriteAnimationProcess(xSpriteAnimation *xSA, int t, int flags );
};
#endif