nou: musiqueta i veu per al game over i timings ajustats
This commit is contained in:
@@ -64,6 +64,7 @@ SOUND|${PREFIX}/data/sound/title.wav
|
|||||||
SOUND|${PREFIX}/data/sound/voice_aw_aw_aw.wav
|
SOUND|${PREFIX}/data/sound/voice_aw_aw_aw.wav
|
||||||
SOUND|${PREFIX}/data/sound/voice_coffee.wav
|
SOUND|${PREFIX}/data/sound/voice_coffee.wav
|
||||||
SOUND|${PREFIX}/data/sound/voice_credit_thankyou.wav
|
SOUND|${PREFIX}/data/sound/voice_credit_thankyou.wav
|
||||||
|
SOUND|${PREFIX}/data/sound/voice_game_over.wav
|
||||||
SOUND|${PREFIX}/data/sound/voice_get_ready.wav
|
SOUND|${PREFIX}/data/sound/voice_get_ready.wav
|
||||||
SOUND|${PREFIX}/data/sound/voice_no.wav
|
SOUND|${PREFIX}/data/sound/voice_no.wav
|
||||||
SOUND|${PREFIX}/data/sound/voice_power_up.wav
|
SOUND|${PREFIX}/data/sound/voice_power_up.wav
|
||||||
|
|||||||
BIN
data/sound/voice_game_over.wav
Normal file
BIN
data/sound/voice_game_over.wav
Normal file
Binary file not shown.
@@ -1043,7 +1043,7 @@ void Game::initPaths() {
|
|||||||
paths_.emplace_back(createPath(X1, X2, PathType::HORIZONTAL, Y, 80, easeInQuint), 0);
|
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 &texture = Resource::get()->getTexture("game_text_last_stage");
|
||||||
const auto H = texture->getHeight();
|
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(X0, X1, PathType::HORIZONTAL, Y, 80, easeOutQuint), 1.0f);
|
||||||
paths_.emplace_back(createPath(X1, X2, PathType::HORIZONTAL, Y, 80, easeInQuint), 0);
|
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
|
// Actualiza las variables de ayuda
|
||||||
@@ -1979,19 +1991,27 @@ void Game::handleGameCompletedEvents() {
|
|||||||
|
|
||||||
// Maneja eventos de game over usando flag para trigger único
|
// Maneja eventos de game over usando flag para trigger único
|
||||||
void Game::handleGameOverEvents() {
|
void Game::handleGameOverEvents() {
|
||||||
static bool game_over_triggered = false;
|
static bool game_over_trigger1 = false;
|
||||||
|
static bool game_over_trigger2 = false;
|
||||||
|
|
||||||
// Resetear
|
// Resetear
|
||||||
if (game_over_timer_ == 0.0f) {
|
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) {
|
if (!game_over_trigger1 && game_over_timer_ == 0.0f) {
|
||||||
createMessage({paths_.at(2), paths_.at(3)}, Resource::get()->getTexture("game_text_game_over"));
|
|
||||||
Audio::get()->fadeOutMusic(1000);
|
Audio::get()->fadeOutMusic(1000);
|
||||||
balloon_manager_->setBouncingSounds(true);
|
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
|
#ifdef _DEBUG
|
||||||
|
|||||||
@@ -77,9 +77,9 @@ class Game {
|
|||||||
static constexpr float HELP_COUNTER_S = 16.667f; // Contador de ayuda (1000 frames a 60fps → segundos)
|
static constexpr float HELP_COUNTER_S = 16.667f; // Contador de ayuda (1000 frames a 60fps → segundos)
|
||||||
static constexpr float GAME_COMPLETED_START_FADE_S = 8.333f; // Inicio del fade al completar (500 frames → segundos)
|
static constexpr float GAME_COMPLETED_START_FADE_S = 8.333f; // Inicio del fade al completar (500 frames → segundos)
|
||||||
static constexpr float GAME_COMPLETED_END_S = 11.667f; // Fin del juego completado (700 frames → segundos)
|
static constexpr float GAME_COMPLETED_END_S = 11.667f; // Fin del juego completado (700 frames → segundos)
|
||||||
static constexpr float GAME_OVER_DURATION_S = 7.0f; // Duración game over (350 frames → segundos)
|
static constexpr float GAME_OVER_DURATION_S = 8.5f;
|
||||||
static constexpr float TIME_STOPPED_DURATION_S = 6.0f; // Duración del tiempo detenido (360 frames → segundos)
|
static constexpr float TIME_STOPPED_DURATION_S = 6.0f;
|
||||||
static constexpr float DEMO_FADE_PRE_DURATION_S = 0.5f; // Pre-duración del fade en modo demo
|
static constexpr float DEMO_FADE_PRE_DURATION_S = 0.5f;
|
||||||
static constexpr int ITEM_POINTS_1_DISK_ODDS = 10;
|
static constexpr int ITEM_POINTS_1_DISK_ODDS = 10;
|
||||||
static constexpr int ITEM_POINTS_2_GAVINA_ODDS = 6;
|
static constexpr int ITEM_POINTS_2_GAVINA_ODDS = 6;
|
||||||
static constexpr int ITEM_POINTS_3_PACMAR_ODDS = 3;
|
static constexpr int ITEM_POINTS_3_PACMAR_ODDS = 3;
|
||||||
|
|||||||
Reference in New Issue
Block a user