time-based: sub-states pause/gameover sense gate, pause_counter decrementa a 60Hz fixe amb acumulador de fase

This commit is contained in:
2026-05-19 17:55:43 +02:00
parent 54ef4c85eb
commit 4f7333ba46
2 changed files with 137 additions and 18 deletions
+16 -11
View File
@@ -39,8 +39,8 @@ class Game {
private:
// Branques de iterate() — separades per a reduir la complexitat cognitiva
void iteratePaused();
void iterateGameOver();
void iteratePaused(float dt_s);
void iterateGameOver(float dt_s);
void iteratePlaying(float dt_s);
// Cantidad de elementos a escribir en los ficheros de datos
@@ -258,15 +258,19 @@ class Game {
[[nodiscard]] auto isDeathShaking() const -> bool; // Indica si el efecto de agitación intensa está activo
void updateDeathSequence(); // Actualiza la secuencia de muerte del jugador
void updatePausedGame(); // Actualiza las variables del menu de pausa del juego
void updateLeavingPauseMenu(); // Helper de updatePausedGame
void updatePauseMenuUI(); // Helper de updatePausedGame
void renderPausedGame(); // Dibuja el menu de pausa del juego
void enterPausedGame(); // Inicializa el estado de pausa del juego
void updatePausedGame(); // Actualiza el menu de pausa (frame-based)
void updatePausedGame(float dt_s); // Actualiza el menu de pausa (time-based)
void updateLeavingPauseMenu(); // Helper (frame-based)
void updateLeavingPauseMenu(float dt_s); // Helper (time-based)
void updatePauseMenuUI(); // Helper (frame-based)
void updatePauseMenuUI(float dt_s); // Helper (time-based)
void renderPausedGame(); // Dibuja el menu de pausa del juego
void enterPausedGame(); // Inicializa el estado de pausa del juego
void updateGameOverScreen(); // Actualiza los elementos de la pantalla de game over
void renderGameOverScreen(); // Dibuja los elementos de la pantalla de game over
void enterGameOverScreen(); // Inicializa el estado de game over
void updateGameOverScreen(); // Actualiza game over (frame-based)
void updateGameOverScreen(float dt_s); // Actualiza game over (time-based)
void renderGameOverScreen(); // Dibuja los elementos de la pantalla de game over
void enterGameOverScreen(); // Inicializa el estado de game over
auto canPowerBallBeCreated() -> bool; // Indica si se puede crear una powerball
auto calculateScreenPower() -> int; // Calcula el poder actual de los globos en pantalla
@@ -407,7 +411,8 @@ class Game {
Demo demo_; // Variable con todas las variables relacionadas con el modo demo
int total_power_to_complete_game_; // La suma del poder necesario para completar todas las fases
int clouds_speed_{0}; // Velocidad a la que se desplazan las nubes
int pause_counter_; // Contador para salir del menu de pausa y volver al juego
int pause_counter_; // Contador per a sortir del menu de pausa (frame-based, frames)
float pause_counter_phase_s_{0.0F}; // Acumulador de fase per decrementar pause_counter_ a 60Hz (time-based)
bool leaving_pause_menu_; // Indica si esta saliendo del menu de pausa para volver al juego
bool pause_initialized_; // Indica si la pausa ha sido inicializada
bool game_over_initialized_; // Indica si el game over ha sido inicializado