migrat Scoreboard a time based

This commit is contained in:
2025-10-31 09:30:33 +01:00
parent f08b2f9193
commit 1bb3d00e7c
4 changed files with 31 additions and 16 deletions

View File

@@ -68,22 +68,27 @@ class Scoreboard {
std::shared_ptr<ScoreboardData> data_; // Contiene las variables a mostrar en el marcador
std::shared_ptr<Surface> surface_; // Surface donde dibujar el marcador;
// Constantes de tiempo
static constexpr float ITEMS_COLOR_BLINK_DURATION = 0.333F; // Duración de cada estado del parpadeo (era 10 frames @ 60fps)
static constexpr float SPRITE_WALK_CYCLE_DURATION = 0.667F; // Duración del ciclo de caminar (era 40 frames @ 60fps)
static constexpr int SPRITE_WALK_FRAMES = 4; // Número de frames de animación
// Variables
std::vector<Uint8> color_; // Vector con los colores del objeto
int counter_; // Contador interno
int change_color_speed_; // Cuanto mas alto, mas tarda en cambiar de color
bool is_paused_; // Indica si el marcador esta en modo pausa
Uint32 paused_time_; // Milisegundos que ha estado el marcador en pausa
Uint32 paused_time_elapsed_; // Tiempo acumulado en pausa
ClockData clock_; // Contiene las horas, minutos y segundos transcurridos desde el inicio de la partida
Uint8 items_color_; // Color de la cantidad de items recogidos
SDL_FRect surface_dest_; // Rectangulo donde dibujar la surface del marcador
float time_accumulator_ = 0.0F; // Acumulador de tiempo para animaciones
float items_color_timer_ = 0.0F; // Timer para parpadeo de color de items
// Obtiene el tiempo transcurrido de partida
auto getTime() -> ClockData;
// Actualiza el color de la cantidad de items recogidos
void updateItemsColor();
void updateItemsColor(float delta_time);
// Dibuja los elementos del marcador en la surface
void fillTexture();
@@ -99,7 +104,7 @@ class Scoreboard {
void render();
// Actualiza las variables del objeto
void update();
void update(float delta_time);
// Pone el marcador en modo pausa
void setPaused(bool value);