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::name = Section::Name::GAME;
|
||||||
Section::options = Section::Options::GAME_PLAY_1P;
|
Section::options = Section::Options::GAME_PLAY_1P;
|
||||||
#elif DEBUG
|
#elif DEBUG
|
||||||
Section::name = Section::Name::GAME;
|
Section::name = Section::Name::TITLE;
|
||||||
Section::options = Section::Options::GAME_PLAY_1P;
|
Section::options = Section::Options::GAME_PLAY_1P;
|
||||||
#else // NORMAL GAME
|
#else // NORMAL GAME
|
||||||
Section::name = Section::Name::LOGO;
|
Section::name = Section::Name::LOGO;
|
||||||
|
|||||||
@@ -977,6 +977,7 @@ void Game::update()
|
|||||||
{
|
{
|
||||||
ticks_ = SDL_GetTicks();
|
ticks_ = SDL_GetTicks();
|
||||||
|
|
||||||
|
checkServiceMenu();
|
||||||
updateDemo();
|
updateDemo();
|
||||||
#ifdef RECORDING
|
#ifdef RECORDING
|
||||||
updateRecording();
|
updateRecording();
|
||||||
@@ -1366,25 +1367,6 @@ void Game::checkInput()
|
|||||||
|
|
||||||
// Verifica los inputs globales.
|
// Verifica los inputs globales.
|
||||||
GlobalInputs::check();
|
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.
|
// 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();
|
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
|
#ifdef DEBUG
|
||||||
// Comprueba los eventos en el modo DEBUG
|
// Comprueba los eventos en el modo DEBUG
|
||||||
void Game::checkDebugEvents(const SDL_Event &event)
|
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 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 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_ = false; // Indica si el juego está pausado (no se deberia de poder utilizar en el modo arcade)
|
||||||
//bool paused_by_service_menu_ = false;
|
// bool paused_by_service_menu_ = false;
|
||||||
float difficulty_score_multiplier_; // Multiplicador de puntos en función de la dificultad
|
float difficulty_score_multiplier_; // Multiplicador de puntos en función de la dificultad
|
||||||
int counter_ = 0; // Contador para el juego
|
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_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 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 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 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_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
|
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
|
GameState state_ = GameState::FADE_IN; // Estado
|
||||||
std::vector<std::shared_ptr<Player>> players_to_reorder;
|
std::vector<std::shared_ptr<Player>> players_to_reorder;
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@@ -245,6 +245,7 @@ private:
|
|||||||
void checkAndUpdateBalloonSpeed(); // Actualiza la velocidad de los globos en funcion del poder acumulado de la fase
|
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 setState(GameState state); // Cambia el estado del juego
|
||||||
void movePlayersToFront(); // Organiza los jugadores para que los vivos se pinten sobre los muertos
|
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
|
#ifdef RECORDING
|
||||||
void updateRecording(); // Actualiza las variables durante el modo de grabación
|
void updateRecording(); // Actualiza las variables durante el modo de grabación
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user