From 6bc5cf1e9329ef32416989e29e918dbcab122cd0 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Mon, 14 Jul 2025 15:34:26 +0200 Subject: [PATCH] recuperat el hit_stop al ser colpejat per un globo (modificable al fitxer de parametres) --- data/config/param_320x240.txt | 2 ++ data/config/param_320x256.txt | 2 ++ source/param.cpp | 12 ++++++++++++ source/param.h | 2 ++ source/sections/game.cpp | 5 ++++- 5 files changed, 22 insertions(+), 1 deletion(-) diff --git a/data/config/param_320x240.txt b/data/config/param_320x240.txt index 340f644..b31e01d 100644 --- a/data/config/param_320x240.txt +++ b/data/config/param_320x240.txt @@ -8,6 +8,8 @@ game.play_area.rect.w 320 # Ancho de la zona jugable game.play_area.rect.h 200 # Alto de la zona jugable game.name_entry_idle_time 10 # Segundos para introducir el nombre al finalizar la partida si no se pulsa nada game.name_entry_total_time 60 # Segundos totales para introducir el nombre al finalizar la partida +game.hit_stop true # Indica si debe haber un paro cuando el jugador es golpeado por un globo +game.hit_stop_ms 300 # Cantidad de milisegundos que dura el hit_stop ## --- FADE --- fade.color 1F2B30 # Color hexadecimal para el efecto de fundido diff --git a/data/config/param_320x256.txt b/data/config/param_320x256.txt index dd90d34..21f24a5 100644 --- a/data/config/param_320x256.txt +++ b/data/config/param_320x256.txt @@ -8,6 +8,8 @@ game.play_area.rect.w 320 # Ancho de la zona jugable game.play_area.rect.h 216 # Alto de la zona jugable game.name_entry_idle_time 10 # Segundos para introducir el nombre al finalizar la partida si no se pulsa nada game.name_entry_total_time 60 # Segundos totales para introducir el nombre al finalizar la partida +game.hit_stop true # Indica si debe haber un paro cuando el jugador es golpeado por un globo +game.hit_stop_ms 300 # Cantidad de milisegundos que dura el hit_stop ## --- FADE --- fade.color 1F2B30 # Color hexadecimal para el efecto de fundido diff --git a/source/param.cpp b/source/param.cpp index ca870a5..4930499 100644 --- a/source/param.cpp +++ b/source/param.cpp @@ -26,6 +26,8 @@ void initParam() param.game.name_entry_idle_time = 10; param.game.name_entry_total_time = 60; param.game.speed = 15; + param.game.hit_stop = true; + param.game.hit_stop_ms = 300; precalculateZones(); // SCOREBOARD @@ -171,6 +173,16 @@ bool setParams(const std::string &var, const std::string &value) param.game.name_entry_total_time = std::stoi(value); } + else if (var == "game.hit_stop") + { + param.game.hit_stop = stringToBool(value); + } + + else if (var == "game.hit_stop_ms") + { + param.game.hit_stop_ms = std::stoi(value); + } + // FADE else if (var == "fade.color") { diff --git a/source/param.h b/source/param.h index dd72f0e..b4dc18c 100644 --- a/source/param.h +++ b/source/param.h @@ -17,6 +17,8 @@ struct ParamGame int name_entry_idle_time; // Segundos para introducir el nombre al finalizar la partida si no se pulsa nada int name_entry_total_time; // Segundos totales para introducir el nombre al finalizar la partida Uint32 speed; // Velocidad a la que transcurre el juego + bool hit_stop; // Indica si debe haber un paro cuando el jugador es golpeado por un globo + Uint32 hit_stop_ms; // Cantidad de milisegundos que dura el hit_stop }; // --- ParĂ¡metros del fade --- diff --git a/source/sections/game.cpp b/source/sections/game.cpp index a1b109d..27a5207 100644 --- a/source/sections/game.cpp +++ b/source/sections/game.cpp @@ -935,8 +935,11 @@ void Game::handlePlayerCollision(std::shared_ptr &player) else { // Si no tiene cafes, muere - balloon_manager_->stopAllBalloons(); playSound("player_collision.wav"); + if (param.game.hit_stop) + { + SDL_Delay(param.game.hit_stop_ms); + } screen_->shake(); playSound("voice_no.wav"); player->setPlayingState(PlayerState::ROLLING);