diff --git a/source/sections/game.cpp b/source/sections/game.cpp index f55f91a..ec1885a 100644 --- a/source/sections/game.cpp +++ b/source/sections/game.cpp @@ -1366,6 +1366,25 @@ void Game::checkInput() // Verifica los inputs globales. GlobalInputs::check(); + + // Comprueba si se ha activado/desactivado el menu de servcicio para poner/quitar la pausa + // Debe ir despues de GlobalInputs::check() que es el que activa/desactiva el menu de servicio + if (Input::get()->checkInput(InputAction::SERVICE, INPUT_DO_NOT_ALLOW_REPEAT)) + { + static bool wasPausedBeforeServiceMenu = false; + + if (ServiceMenu::get()->isEnabled()) + { + // Guardamos el estado actual antes de modificarlo + wasPausedBeforeServiceMenu = paused_; + pause(true); + } + else + { + // Restauramos el estado anterior + pause(wasPausedBeforeServiceMenu); + } + } } // Verifica si alguno de los controladores ha solicitado una pausa y actualiza el estado de pausa del juego. @@ -2033,23 +2052,22 @@ void Game::playSound(const std::string &name) // Organiza los jugadores para que los vivos se pinten sobre los muertos void Game::movePlayersToFront() { - if (players_to_reorder.empty()) - return; + if (players_to_reorder.empty()) + return; - for (auto& player : players_to_reorder) - { - auto it = std::find(players_.begin(), players_.end(), player); - if (it != players_.end() && it != players_.begin()) - { - std::shared_ptr dyingPlayer = *it; - players_.erase(it); - players_.insert(players_.begin(), dyingPlayer); - } - } - players_to_reorder.clear(); + for (auto &player : players_to_reorder) + { + auto it = std::find(players_.begin(), players_.end(), player); + if (it != players_.end() && it != players_.begin()) + { + std::shared_ptr dyingPlayer = *it; + players_.erase(it); + players_.insert(players_.begin(), dyingPlayer); + } + } + players_to_reorder.clear(); } - #ifdef DEBUG // Comprueba los eventos en el modo DEBUG void Game::checkDebugEvents(const SDL_Event &event) diff --git a/source/sections/game.h b/source/sections/game.h index 1884ed3..6986690 100644 --- a/source/sections/game.h +++ b/source/sections/game.h @@ -144,6 +144,7 @@ private: bool coffee_machine_enabled_ = false; // Indica si hay una máquina de café en el terreno de juego bool hi_score_achieved_ = false; // Indica si se ha superado la puntuación máxima bool paused_ = false; // Indica si el juego está pausado (no se deberia de poder utilizar en el modo arcade) + //bool paused_by_service_menu_ = false; float difficulty_score_multiplier_; // Multiplicador de puntos en función de la dificultad int counter_ = 0; // Contador para el juego int game_completed_counter_ = 0; // Contador para el tramo final, cuando se ha completado la partida y ya no aparecen más enemigos