nou: musiqueta i veu per al game over i timings ajustats

This commit is contained in:
2025-09-26 17:20:35 +02:00
parent 0c670fd344
commit a40f04a739
4 changed files with 30 additions and 9 deletions

View File

@@ -1043,7 +1043,7 @@ void Game::initPaths() {
paths_.emplace_back(createPath(X1, X2, PathType::HORIZONTAL, Y, 80, easeInQuint), 0);
}
// Recorrido para el texto de "Last Stage!" o de "X stages left" o "Game Over" (2,3)
// Recorrido para el texto de "Last Stage!" o de "X stages left" (2,3)
{
const auto &texture = Resource::get()->getTexture("game_text_last_stage");
const auto H = texture->getHeight();
@@ -1093,6 +1093,18 @@ void Game::initPaths() {
paths_.emplace_back(createPath(X0, X1, PathType::HORIZONTAL, Y, 80, easeOutQuint), 1.0f);
paths_.emplace_back(createPath(X1, X2, PathType::HORIZONTAL, Y, 80, easeInQuint), 0);
}
// Recorrido para el texto de "Game Over" (10,11)
{
const auto &texture = Resource::get()->getTexture("game_text_game_over");
const auto H = texture->getHeight();
const int Y0 = param.game.play_area.rect.h - H;
const int Y1 = param.game.play_area.center_y - (H / 2);
const int Y2 = -H;
const int X = param.game.play_area.center_x;
paths_.emplace_back(createPath(Y0, Y1, PathType::VERTICAL, X, 80, easeOutQuint), 2.0f);
paths_.emplace_back(createPath(Y1, Y2, PathType::VERTICAL, X, 80, easeInQuint), 0);
}
}
// Actualiza las variables de ayuda
@@ -1979,19 +1991,27 @@ void Game::handleGameCompletedEvents() {
// Maneja eventos de game over usando flag para trigger único
void Game::handleGameOverEvents() {
static bool game_over_triggered = false;
static bool game_over_trigger1 = false;
static bool game_over_trigger2 = false;
// Resetear
if (game_over_timer_ == 0.0f) {
game_over_triggered = false;
game_over_trigger1 = false;
game_over_trigger2 = false;
}
if (!game_over_triggered && game_over_timer_ == 0.0f) {
createMessage({paths_.at(2), paths_.at(3)}, Resource::get()->getTexture("game_text_game_over"));
if (!game_over_trigger1 && game_over_timer_ == 0.0f) {
Audio::get()->fadeOutMusic(1000);
balloon_manager_->setBouncingSounds(true);
game_over_triggered = true;
game_over_trigger1 = true;
}
if (!game_over_trigger2 && game_over_timer_ >= 1.5f) {
createMessage({paths_.at(10), paths_.at(11)}, Resource::get()->getTexture("game_text_game_over"));
playSound("voice_game_over.wav");
game_over_trigger2 = true;
}
}
#ifdef _DEBUG