From 871e8da64253b48f44f9d28a4180ca61aaf47195 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sun, 5 Jan 2025 13:27:45 +0100 Subject: [PATCH] =?UTF-8?q?Corregit=20el=20timing=20de=20la=20m=C3=BAsica?= =?UTF-8?q?=20en=20la=20animaci=C3=B3=20inicial=20del=20joc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/game.cpp | 39 ++++++++++++++++++++------------------- source/game.h | 6 +++--- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/source/game.cpp b/source/game.cpp index e051ee7..655ba15 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -400,7 +400,7 @@ void Game::updateGameStateCompleted() // Si los jugadores ya no estan y no quedan mensajes en pantalla if (allPlayersAreGameOver() && path_sprites_.size() == 0) { - state_ = GameState::GAME_OVER; + setState(GameState::GAME_OVER); } // Incrementa el contador al final @@ -412,12 +412,12 @@ void Game::checkState() { if (state_ != GameState::COMPLETED && Stage::number == 10) { - state_ = GameState::COMPLETED; + setState(GameState::COMPLETED); } if (state_ != GameState::GAME_OVER && allPlayersAreGameOver()) { - state_ = GameState::GAME_OVER; + setState(GameState::GAME_OVER); } } @@ -949,7 +949,6 @@ void Game::update() } } - checkMusicStatus(); screen_->update(); globalInputs::update(); fillCanvas(); @@ -1044,16 +1043,6 @@ void Game::disableTimeStopItem() balloon_manager_->normalColorsToAllBalloons(); } -// Comprueba si la música ha de estar sonando -void Game::checkMusicStatus() -{ - // Si se ha completado el juego o los jugadores han terminado, detiene la música - if (state_ == GameState::PLAYING || state_ == GameState::SHOWING_GET_READY_MESSAGE) - { - playMusic(); - } -} - // Bucle para el juego void Game::run() { @@ -1201,7 +1190,6 @@ void Game::checkEvents() pause(!demo_.enabled); break; } - case SDL_WINDOWEVENT_FOCUS_GAINED: { pause(false); @@ -1647,7 +1635,7 @@ void Game::initDemo(int player_id) if (demo_.enabled) { // Cambia el estado del juego - state_ = GameState::PLAYING; + setState(GameState::PLAYING); // Aleatoriza la asignación del fichero con los datos del modo demostracion { @@ -1886,7 +1874,7 @@ void Game::updateGameStateFadeIn() updateBackground(); if (fade_in_->hasEnded()) { - state_ = GameState::ENTERING_PLAYER; + setState(GameState::ENTERING_PLAYER); balloon_manager_->createTwoBigBalloons(); evaluateAndSetMenace(); } @@ -1903,7 +1891,7 @@ void Game::updateGameStateEnteringPlayer() { if (player->isPlaying()) { - state_ = GameState::SHOWING_GET_READY_MESSAGE; + setState(GameState::SHOWING_GET_READY_MESSAGE); createMessage({paths_.at(0), paths_.at(1)}, Resource::get()->getTexture("game_text_get_ready")); JA_PlaySound(Resource::get()->getSound("voice_get_ready.wav")); } @@ -1922,8 +1910,13 @@ void Game::updateGameStateShowingGetReadyMessage() freePathSprites(); if (path_sprites_.size() == 0) { - state_ = GameState::PLAYING; + setState(GameState::PLAYING); } + if (counter_ == 100) + { + playMusic(); + } + ++counter_; } // Actualiza las variables durante el transcurso normal del juego @@ -1953,6 +1946,7 @@ void Game::updateGameStatePlaying() checkAndUpdateBalloonSpeed(); checkState(); cleanVectors(); + playMusic(); } // Vacía los vectores de elementos deshabilitados @@ -2012,4 +2006,11 @@ void Game::checkAndUpdateBalloonSpeed() break; // Salir del bucle una vez actualizada la velocidad y aplicada } } +} + +// Cambia el estado del juego +void Game::setState(GameState state) +{ + state_ = state; + counter_ = 0; } \ No newline at end of file diff --git a/source/game.h b/source/game.h index dd2d6ae..4f44bb3 100644 --- a/source/game.h +++ b/source/game.h @@ -310,9 +310,6 @@ private: // Pausa el juego void pause(bool value); - // Comprueba si la música ha de estar sonando - void checkMusicStatus(); - // Añade una puntuación a la tabla de records void addScoreToScoreBoard(const std::string &name, int score); @@ -421,6 +418,9 @@ private: // Actualiza la velocidad de los globos en funcion del poder acumulado de la fase void checkAndUpdateBalloonSpeed(); + // Cambia el estado del juego + void setState(GameState state); + public: // Constructor Game(int playerID, int current_stage, bool demo);