new: el joc es pausa si traus el menu de servei (de paso serveix com a botó de pausa per a la recre, que no en tenia)

This commit is contained in:
2025-07-14 08:49:41 +02:00
parent 7340b349b1
commit e14336bad9
3 changed files with 40 additions and 30 deletions

View File

@@ -977,6 +977,7 @@ void Game::update()
{
ticks_ = SDL_GetTicks();
checkServiceMenu();
updateDemo();
#ifdef RECORDING
updateRecording();
@@ -1366,25 +1367,6 @@ 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.
@@ -2068,6 +2050,33 @@ void Game::movePlayersToFront()
players_to_reorder.clear();
}
// Comprueba si está activo el menu de servicio para poner el juego en pausa
void Game::checkServiceMenu()
{
if (demo_.enabled)
return;
static bool was_paused_before_service_menu = false;
static bool service_menu_was_active = false;
bool service_menu_is_active = ServiceMenu::get()->isEnabled();
if (service_menu_is_active && !service_menu_was_active)
{
// El menú acaba de abrirse
was_paused_before_service_menu = paused_;
pause(true);
}
else if (!service_menu_is_active && service_menu_was_active)
{
// El menú acaba de cerrarse
pause(was_paused_before_service_menu);
}
service_menu_was_active = service_menu_is_active;
}
#ifdef DEBUG
// Comprueba los eventos en el modo DEBUG
void Game::checkDebugEvents(const SDL_Event &event)