/* ************************************************************************** */ /* _____ */ /* Animation.cpp | ___| _ ____ ___ */ /* Project : C-Engine | |_ | | | __| / _ \ */ /* | _| | | | |= | __/ */ /* By: Fife |_| |_| |_| \___| */ /* */ /* */ /* ************************************************************************** */ #include "..\Rework\include\Components\Animation.hpp" Animation::Animation() { TabSprite = NULL; nb_image = 0; delay = 0; iterateur = 0; time = 0; waitatend = false; waittheend = false; isend = false; } Animation::Animation(Sprite & v) { TabSprite = &v; nb_image = 1; } Animation::Animation(Sprite * v , int nb , int nbd , bool vwaitatend , bool vwaittheend) { TabSprite = v; nb_image = nb; delay = nbd; waitatend = vwaitatend; waittheend = vwaittheend; } void Animation::SetIt(int v) { iterateur = v; time = RTC_getTicks(); isend = false; } int Animation::GetSizeY() { return TabSprite[iterateur].GetSizeY(); } int Animation::GetSizeX() { return TabSprite[iterateur].GetSizeX(); } int Animation::GetBlitX() { return TabSprite[iterateur].GetBlitX(); } int Animation::GetBlitY() { return TabSprite[iterateur].GetBlitY(); } void Animation::DrawAnim ( int x , int y , int d) { if( iterateur >= nb_image) iterateur = 0; TabSprite[ iterateur ].DrawSprite( x , y , d); if(WaitDelay())iterateur ++; if( iterateur >= nb_image) { isend = true; if(!waitatend)iterateur = 0; else iterateur = nb_image - 1; } } void Animation::DrawReverseAnim ( int x , int y , int d) { if( iterateur >= nb_image) iterateur = 0; TabSprite[ iterateur ].DrawReverseSprite( x , y , d); if(WaitDelay())iterateur ++; if( iterateur >= nb_image) { isend = true; if(!waitatend)iterateur = 0; else iterateur = nb_image - 1; } } bool Animation::WaitDelay() { if(RTC_getTicks() - time > (delay / 7.8125)) // si il s'est écoulé une seconde complète { time = RTC_getTicks(); // et on se rappelle du nombre de ticks de la dernière seconde écoulée return true; } return false; }