1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
//Dérivation en Sprit_Animer de Sprit
class Sprit_Animer : public Sprit
{
public:
Sprit_Animer(Ani_Sprit *Conf);
virtual ~Sprit_Animer();
virtual bool BlitSurface(SDL_Surface *screen);
virtual Ani_Sprit *Config()
{return &Config_;}
//Desactivation
virtual SDL_Rect *PictureSize()
{return NULL;}
virtual SDL_Rect SetConfig( Ani_Sprit Cfg ){}//Desactivation
virtual SDL_Rect SetPictureSize( SDL_Rect PS ){}//Desactivation
virtual Ani_Sprit *GetConfig()
{return &Config_;}
//Desactivation
virtual SDL_Rect *GetPictureSize()
{return NULL;}
protected:
Ani_Sprit Config_;
Uint32 TimeM;
};
Sprit_Animer::Sprit_Animer(Ani_Sprit *Conf = NULL )
:Sprit()
{
if(Conf == NULL)
{
Config_.x = 0;
Config_.y = 0;
Config_.Width = 32;
Config_.Height = 32;
Config_.Time = 1000;
Config_.Ani = 0;
Config_.Ani_x = 0;
Config_.Ani_y = 0;
Config_.Ani_Act = 0;
}
else
{
Config_.x = Conf->x;
Config_.y = Conf->y;
Config_.Width = Conf->Width;
Config_.Height = Conf->Height;
Config_.Time = Conf->Time;
Config_.Ani = Conf->Ani;
Config_.Ani_x = Conf->Ani;
Config_.Ani_y = Conf->Ani;
Config_.Ani_Act = Conf->Ani_Act;
}
TimeM = 0;
}
Sprit_Animer::~Sprit_Animer()
{
}
bool Sprit_Animer::BlitSurface(SDL_Surface *screen_r)
{
if(!TimeM){TimeM = SDL_GetTicks();}
if(TimeM < SDL_GetTicks() - Config_.Time )
{
++Config_.Ani_Act;
TimeM = SDL_GetTicks();
if(Config_.Ani_Act > Config_.Ani - 1)
Config_.Ani_Act = 0;
}
Picture_Size.h = Config_.Height;
Picture_Size.w = Config_.Width;
Picture_Size.x = Config_.x + Config_.Ani_x*Config_.Ani_Act;
Picture_Size.y = Config_.y + Config_.Ani_y*Config_.Ani_Act;
SDL_BlitSurface( Picture, &Picture_Size, screen_r, &Sprit_Size );
}
} |
Partager