#include "spriteanimated.h" //Constructor SpriteAnimated::SpriteAnimated() { init(); } //Iniciador void SpriteAnimated::init() { for (Uint8 i = 0; i < 20; i++) { mAnimation[i].numFrames = 0; mAnimation[i].speed = 0; for (Uint8 j = 0; i < 20; i++) { mAnimation[i].frames[j].x = 0; mAnimation[i].frames[j].y = 0; mAnimation[i].frames[j].w = 0; mAnimation[i].frames[j].h = 0; } } mCurrentFrame = 0; mAnimationCounter = 0; } //Calcula el frame correspondiente a la animación void SpriteAnimated::animate(int index) { //Calculamos el frame actual a partir del contador mCurrentFrame = mAnimationCounter / mAnimation[index].speed; //Si alcanzamos el final de la animación, reiniciamos el contador de la animación if (mCurrentFrame >= mAnimation[index].numFrames) { mAnimationCounter = 0; } //En caso contrario else { //Escogemos el frame correspondiente de la animación setSpriteClip(mAnimation[index].frames[mCurrentFrame]); //Incrementamos el contador de la animacion ++mAnimationCounter; } } //Establece el frame actual de la animación void SpriteAnimated::setCurrentFrame(Uint8 num) { mCurrentFrame = num; } //Establece el numero de frames de la animacion void SpriteAnimated::setAnimationCounter(Uint16 num) { mAnimationCounter = num; } //Establece el rectangulo para un frame de una animación void SpriteAnimated::setAnimationFrames(Uint8 index_animation, Uint8 index_frame, int x, int y, int w, int h) { mAnimation[index_animation].frames[index_frame].x = x; mAnimation[index_animation].frames[index_frame].y = y; mAnimation[index_animation].frames[index_frame].w = w; mAnimation[index_animation].frames[index_frame].h = h; } //Establece la velocidad de una animación void SpriteAnimated::setAnimationSpeed(Uint8 index, Uint8 speed) { mAnimation[index].speed = speed; } //Establece el numero de frames de una animación void SpriteAnimated::setAnimationNumFrames(Uint8 index, Uint8 num) { mAnimation[index].numFrames = num; } //Devuelve el rectangulo de una animación y frame concreto SDL_Rect SpriteAnimated::getAnimationClip(Uint8 index_animation, Uint8 index_frame) { return mAnimation[index_animation].frames[index_frame]; }