#ifndef DEF_XSPRITEANIMATION_H #define DEF_XSPRITEANIMATION_H #include "SDL.h" #include "xSprite.h" #include "xApplication.h" #include "xElement.h" #include #include using namespace std; #define SPRITE_ANIM_ONCE 0b1 #define SPRITE_ANIM_INFINITE 0b10 #define SPRITE_ANIM_REVERSE 0b100 class xSpriteAnimation : public xSprite { public: // spritesheet with sprite size xSpriteAnimation(const char *url, SDL_Rect dest); xSpriteAnimation(SDL_Surface *s, SDL_Rect dest); ~xSpriteAnimation(); void addFrame(SDL_Rect clip); void clearFrames(); // animation control handles void start(int t, int flags=SPRITE_ANIM_ONCE); void stop(); // implement xElement void draw(SDL_Renderer* renderer) override; protected: vector _frames; // animation int _timeout; int _flags; // animation thread thread *_animation; friend void xSpriteAnimationProcess(xSpriteAnimation *xSA, uint32_t t, int flags); }; #endif