time-based: migrada escena Title (AnimatedSprite/Fade amb dual-API, counters a acumuladors)

This commit is contained in:
2026-05-19 16:31:57 +02:00
parent 2b57bfa4dd
commit fe240c750e
6 changed files with 259 additions and 167 deletions
+9 -5
View File
@@ -12,11 +12,13 @@ class Texture;
struct Animation {
std::string name; // Nombre de la animacion
std::vector<SDL_Rect> frames; // Cada uno de los frames que componen la animación
int speed; // Velocidad de la animación
int speed; // Velocidad de la animación (frame-based: ticks per frame)
float step_duration_s; // Time-based: segons per frame d'animació (derivat de speed al parse: speed/60)
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 current_frame; // Frame actual
int counter; // Contador para las animaciones
int counter; // Contador per a les animacions (frame-based)
float time_accumulator_s; // Acumulador de temps (time-based)
};
struct AnimatedSpriteData {
@@ -37,7 +39,8 @@ class AnimatedSprite : public MovingSprite {
~AnimatedSprite() override; // Destructor
void animate(); // Calcula el frame correspondiente a la animación actual
void animate(); // Calcula el frame correspondiente a la animación actual (frame-based)
void animate(float dt_s); // Calcula el frame correspondiente a la animación actual (time-based)
auto getNumFrames() -> int; // Obtiene el numero de frames de la animación actual
void setCurrentFrame(int num); // Establece el frame actual de la animación
void setAnimationCounter(const std::string &name, int num); // Establece el valor del contador
@@ -56,13 +59,14 @@ class AnimatedSprite : public MovingSprite {
auto getAnimationClip(const std::string &name = "default", Uint8 index = 0) -> SDL_Rect; // Devuelve el rectangulo de una animación y frame concreto
auto getAnimationClip(int index_a = 0, Uint8 index_f = 0) -> SDL_Rect;
auto getIndex(const std::string &name) -> int; // Obtiene el indice de la animación a partir del nombre
auto getIndex(const std::string &name) -> int; // Obtiene el indice de la animación a partir del nombre
auto loadFromVector(const std::vector<std::string> *source) -> bool; // Carga la animación desde un vector
void setCurrentAnimation(const std::string &name = "default"); // Establece la animacion actual
void setCurrentAnimation(int index = 0);
void update() override; // Actualiza las variables del objeto
void update() override; // Actualiza las variables del objeto (frame-based)
void update(float dt_s) override; // Actualiza las variables del objeto (time-based)
void setAnimationFrames(Uint8 index_animation, Uint8 index_frame, int x, int y, int w, int h); // OLD - Establece el rectangulo para un frame de una animación
void setAnimationCounter(int value); // OLD - Establece el contador para todas las animaciones