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:
@@ -49,7 +49,7 @@ Director::Director(int argc, const char *argv[])
|
||||
Section::name = Section::Name::GAME;
|
||||
Section::options = Section::Options::GAME_PLAY_1P;
|
||||
#elif DEBUG
|
||||
Section::name = Section::Name::GAME;
|
||||
Section::name = Section::Name::TITLE;
|
||||
Section::options = Section::Options::GAME_PLAY_1P;
|
||||
#else // NORMAL GAME
|
||||
Section::name = Section::Name::LOGO;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -144,16 +144,16 @@ 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
|
||||
int game_over_counter_ = GAME_OVER_COUNTER_; // Contador para el estado de fin de partida
|
||||
int time_stopped_counter_ = 0; // Temporizador para llevar la cuenta del tiempo detenido
|
||||
int total_power_to_complete_game_; // La suma del poder necesario para completar todas las fases
|
||||
int menace_current_ = 0; // Nivel de amenaza actual
|
||||
int menace_threshold_ = 0; // Umbral del nivel de amenaza. Si el nivel de amenaza cae por debajo del umbral, se generan más globos. Si el umbral aumenta, aumenta el número de globos
|
||||
GameState state_ = GameState::FADE_IN; // Estado
|
||||
// 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
|
||||
int game_over_counter_ = GAME_OVER_COUNTER_; // Contador para el estado de fin de partida
|
||||
int time_stopped_counter_ = 0; // Temporizador para llevar la cuenta del tiempo detenido
|
||||
int total_power_to_complete_game_; // La suma del poder necesario para completar todas las fases
|
||||
int menace_current_ = 0; // Nivel de amenaza actual
|
||||
int menace_threshold_ = 0; // Umbral del nivel de amenaza. Si el nivel de amenaza cae por debajo del umbral, se generan más globos. Si el umbral aumenta, aumenta el número de globos
|
||||
GameState state_ = GameState::FADE_IN; // Estado
|
||||
std::vector<std::shared_ptr<Player>> players_to_reorder;
|
||||
|
||||
#ifdef DEBUG
|
||||
@@ -245,6 +245,7 @@ private:
|
||||
void checkAndUpdateBalloonSpeed(); // Actualiza la velocidad de los globos en funcion del poder acumulado de la fase
|
||||
void setState(GameState state); // Cambia el estado del juego
|
||||
void movePlayersToFront(); // Organiza los jugadores para que los vivos se pinten sobre los muertos
|
||||
void checkServiceMenu(); // Comprueba si está activo el menu de servicio para poner el juego en pausa
|
||||
#ifdef RECORDING
|
||||
void updateRecording(); // Actualiza las variables durante el modo de grabación
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user