recuperat el hit_stop al ser colpejat per un globo (modificable al fitxer de parametres)

This commit is contained in:
2025-07-14 15:34:26 +02:00
parent 3d26a3022c
commit 6bc5cf1e93
5 changed files with 22 additions and 1 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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")
{

View File

@@ -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 ---

View File

@@ -935,8 +935,11 @@ void Game::handlePlayerCollision(std::shared_ptr<Player> &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);