#pragma once #include #include "movingsprite.h" #include #include #include #include #ifndef ANIMATEDSPRITE_H #define ANIMATEDSPRITE_H // Clase AnimatedSprite class AnimatedSprite : public MovingSprite { private: struct t_animation { std::string name; // Nombre de la animacion std::vector frames; // Cada uno de los frames que componen la animación int speed; // Velocidad de la animación int loop; // Indica a que frame vuelve la animación al terminar. -1 para que no vuelva bool completed; // Indica si ha finalizado la animación int currentFrame; // Frame actual int counter; // Contador para las animaciones }; std::vector animation; // Vector con las diferentes animaciones int currentAnimation; // Animacion activa public: // Constructor AnimatedSprite(LTexture *texture = nullptr, SDL_Renderer *renderer = nullptr, std::string file = ""); // Destructor ~AnimatedSprite(); // Calcula el frame correspondiente a la animación actual void animate(); // Establece el frame actual de la animación void setCurrentFrame(std::string name, int num); // Establece el valor del contador void setAnimationCounter(std::string name, int num); // Establece la velocidad de una animación void setAnimationSpeed(std::string name, int speed); // Establece el frame al que vuelve la animación al finalizar void setAnimationLoop(std::string name, int loop); // Establece el valor de la variable void setAnimationCompleted(std::string name, bool value); // Comprueba si ha terminado la animación bool animationIsCompleted(std::string name); // Devuelve el rectangulo de una animación y frame concreto SDL_Rect getAnimationClip(std::string name, Uint8 index); // Obtiene el indice de la animación a partir del nombre int getIndex(std::string name); // Carga la animación desde un fichero bool load(std::string filePath); // Establece la animacion actual void setCurrentAnimation(std::string name); // Actualiza las variables del objeto void update(); }; #endif