diff --git a/source/game.cpp b/source/game.cpp index be2c7b9..3d8d703 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -1605,19 +1605,13 @@ int Game::getController(int player_id) // Gestiona la entrada durante el juego void Game::checkInput() { - checkPauseInput(); // Verifica si se debe pausar el juego. + // Verifica si se debe pausar el juego. + checkPauseInput(); - if (demo_.enabled) - { // Controla el comportamiento de los jugadores en modo demo. - handleDemoMode(); - } - else - { // Gestiona el input normal de los jugadores. - handlePlayersInput(); - } + demo_.enabled ? handleDemoMode() : handlePlayersInput(); - screen_->checkInput(); // Verifica el input en la pantalla del juego. - globalInputs::check(); // Verifica los inputs globales. + // Verifica los inputs globales. + globalInputs::check(); } // Verifica si alguno de los controladores ha solicitado una pausa y actualiza el estado de pausa del juego. @@ -1628,14 +1622,14 @@ void Game::checkPauseInput() if (input_->checkInput(InputType::SERVICE, INPUT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i) && input_->checkInput(InputType::PAUSE, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i)) { - pause(!paused_); // Alterna entre pausado y no pausado. + pause(!paused_); return; } // Comprueba el teclado if (input_->checkInput(InputType::PAUSE, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) { - pause(!paused_); // Alterna entre pausado y no pausado. + pause(!paused_); return; } } diff --git a/source/global_inputs.cpp b/source/global_inputs.cpp index 7fc27f0..e972000 100644 --- a/source/global_inputs.cpp +++ b/source/global_inputs.cpp @@ -8,6 +8,7 @@ #include "options.h" // Para Options, OptionsAudio, options, OptionsM... #include "section.h" // Para Name, Options, name, options #include "utils.h" // Para boolToOnOff, stringInVector +#include "screen.h" namespace globalInputs { @@ -54,7 +55,7 @@ namespace globalInputs } // Activa o desactiva el audio - void switchAudio() + void toggleAudio() { options.audio.enabled = !options.audio.enabled; if (options.audio.enabled) @@ -73,79 +74,147 @@ namespace globalInputs // Comprueba los inputs que se pueden introducir en cualquier sección del juego void check() { - // Comprueba si se sale con el teclado - if (Input::get()->checkInput(InputType::EXIT, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) + // Teclado { - quit(section::Options::QUIT_WITH_KEYBOARD); - return; - } - - // Comprueba si se va a resetear el juego - if (Input::get()->checkInput(InputType::RESET, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) - { - reset(); - return; - } - - if (Input::get()->checkInput(InputType::MUTE, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) - { - switchAudio(); - return; - } - - if (Input::get()->checkInput(InputType::SERVICE, INPUT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) - { - service_pressed_counter[0]++; - - if (service_pressed_counter[0] >= 3000) +#ifndef ARCADE + // Comprueba el teclado para cambiar entre pantalla completa y ventana + if (Input::get()->checkInput(InputType::WINDOW_FULLSCREEN, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) { - OnScreenHelp::get()->toggleState(); - service_pressed_counter[0] = 0; - } - return; - } - - service_pressed_counter[0] = 0; - - for (int i = 0; i < Input::get()->getNumControllers(); ++i) - { - // Comprueba si se sale con el mando - if (Input::get()->checkInput(InputType::SERVICE, INPUT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i) && - Input::get()->checkInput(InputType::EXIT, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i)) - { - quit(section::Options::QUIT_WITH_CONTROLLER); + Screen::get()->toggleVideoMode(); + const std::string mode = options.video.mode == ScreenVideoMode::WINDOW ? "Window" : "Fullscreen"; + Notifier::get()->showText(mode + " mode"); return; } - // Comprueba si se va a resetear el juego - if (Input::get()->checkInput(InputType::SERVICE, INPUT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i) && - Input::get()->checkInput(InputType::RESET, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i)) + // Comprueba el teclado para decrementar el tamaño de la ventana + if (Input::get()->checkInput(InputType::WINDOW_DEC_SIZE, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) + { + Screen::get()->decWindowSize(); + const std::string size = std::to_string(options.video.window.size); + Notifier::get()->showText("Window size x" + size); + return; + } + + // Comprueba el teclado para incrementar el tamaño de la ventana + if (Input::get()->checkInput(InputType::WINDOW_INC_SIZE, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) + { + Screen::get()->incWindowSize(); + const std::string size = std::to_string(options.video.window.size); + Notifier::get()->showText("Window size x" + size); + return; + } +#endif + // Salir + if (Input::get()->checkInput(InputType::EXIT, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) + { + quit(section::Options::QUIT_WITH_KEYBOARD); + return; + } + + // Reset + if (Input::get()->checkInput(InputType::RESET, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) { reset(); return; } - // Comprueba si se va a activar o desactivar el audio - if (Input::get()->checkInput(InputType::SERVICE, INPUT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i) && - Input::get()->checkInput(InputType::MUTE, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i)) + // Audio + if (Input::get()->checkInput(InputType::MUTE, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) { - switchAudio(); + toggleAudio(); return; } - if (Input::get()->checkInput(InputType::SERVICE, INPUT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i)) + // Shaders + if (Input::get()->checkInput(InputType::VIDEO_SHADERS, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) { - service_pressed_counter[i + 1]++; + Screen::get()->toggleShaders(); + return; + } - if (service_pressed_counter[i + 1] >= 3000) +#ifdef DEBUG + // Comprueba el teclado para mostrar la información de debug + if (Input::get()->checkInput(InputType::SHOWINFO, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) + { + Screen::get()->toggleDebugInfo(); + return; + } +#endif + // OnScreenHelp + if (Input::get()->checkInput(InputType::SERVICE, INPUT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) + { + service_pressed_counter[0]++; + + if (service_pressed_counter[0] >= 3000) { OnScreenHelp::get()->toggleState(); - service_pressed_counter[i + 1] = 0; + service_pressed_counter[0] = 0; } return; } - service_pressed_counter[i + 1] = 0; + service_pressed_counter[0] = 0; + } + + // Mandos + { + for (int i = 0; i < Input::get()->getNumControllers(); ++i) + { + // Salir + if (Input::get()->checkInput(InputType::SERVICE, INPUT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i) && + Input::get()->checkInput(InputType::EXIT, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i)) + { + quit(section::Options::QUIT_WITH_CONTROLLER); + return; + } + + // Reset + if (Input::get()->checkInput(InputType::SERVICE, INPUT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i) && + Input::get()->checkInput(InputType::RESET, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i)) + { + reset(); + return; + } + + // Audio + if (Input::get()->checkInput(InputType::SERVICE, INPUT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i) && + Input::get()->checkInput(InputType::MUTE, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i)) + { + toggleAudio(); + return; + } + + // Shaders + if (Input::get()->checkInput(InputType::SERVICE, INPUT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i) && + Input::get()->checkInput(InputType::VIDEO_SHADERS, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i)) + { + Screen::get()->toggleShaders(); + return; + } +#ifdef DEBUG + // Debug Info + if (Input::get()->checkInput(InputType::SERVICE, INPUT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i) && + Input::get()->checkInput(InputType::SHOWINFO, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i)) + { + Screen::get()->toggleDebugInfo(); + return; + } +#endif + // OnScreenHelp + if (Input::get()->checkInput(InputType::SERVICE, INPUT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i)) + { + service_pressed_counter[i + 1]++; + + if (service_pressed_counter[i + 1] >= 3000) + { + OnScreenHelp::get()->toggleState(); + service_pressed_counter[i + 1] = 0; + } + return; + } + + service_pressed_counter[i + 1] = 0; + } } } } \ No newline at end of file diff --git a/source/hiscore_table.cpp b/source/hiscore_table.cpp index 6005eda..f712fcc 100644 --- a/source/hiscore_table.cpp +++ b/source/hiscore_table.cpp @@ -208,9 +208,6 @@ void HiScoreTable::checkInput() return; } - // Comprueba el input para el resto de objetos - Screen::get()->checkInput(); - // Comprueba los inputs que se pueden introducir en cualquier sección del juego globalInputs::check(); } diff --git a/source/instructions.cpp b/source/instructions.cpp index 10aaaf9..594a3d9 100644 --- a/source/instructions.cpp +++ b/source/instructions.cpp @@ -313,9 +313,6 @@ void Instructions::checkInput() return; } - // Comprueba el input para el resto de objetos - Screen::get()->checkInput(); - // Comprueba los inputs que se pueden introducir en cualquier sección del juego globalInputs::check(); } diff --git a/source/intro.cpp b/source/intro.cpp index 95cb2ea..bd6a5e0 100644 --- a/source/intro.cpp +++ b/source/intro.cpp @@ -191,9 +191,6 @@ void Intro::checkInput() return; } - // Comprueba el input para el resto de objetos - Screen::get()->checkInput(); - // Comprueba los inputs que se pueden introducir en cualquier sección del juego globalInputs::check(); } diff --git a/source/logo.cpp b/source/logo.cpp index 6fbdd51..0c47993 100644 --- a/source/logo.cpp +++ b/source/logo.cpp @@ -105,9 +105,6 @@ void Logo::checkInput() return; } - // Comprueba el input para el resto de objetos - Screen::get()->checkInput(); - // Comprueba los inputs que se pueden introducir en cualquier sección del juego globalInputs::check(); } diff --git a/source/screen.cpp b/source/screen.cpp index 1c03768..aab0fde 100644 --- a/source/screen.cpp +++ b/source/screen.cpp @@ -98,7 +98,7 @@ void Screen::blit() OnScreenHelp::get()->render(); // Muestra información por pantalla - displayInfo(); + renderInfo(); // Muestra las notificaciones Notifier::get()->render(); @@ -210,7 +210,7 @@ void Screen::setVideoMode(ScreenVideoMode videoMode) } // Camibia entre pantalla completa y ventana -void Screen::switchVideoMode() +void Screen::toggleVideoMode() { options.video.mode = options.video.mode == ScreenVideoMode::WINDOW ? ScreenVideoMode::FULLSCREEN : ScreenVideoMode::WINDOW; setVideoMode(options.video.mode); @@ -260,74 +260,6 @@ void Screen::update() OnScreenHelp::get()->update(); } -// Comprueba las entradas -void Screen::checkInput() -{ -#ifndef ARCADE - // Comprueba el teclado para cambiar entre pantalla completa y ventana - if (Input::get()->checkInput(InputType::WINDOW_FULLSCREEN, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) - { - switchVideoMode(); - const std::string mode = options.video.mode == ScreenVideoMode::WINDOW ? "Window" : "Fullscreen"; - Notifier::get()->showText(mode + " mode"); - return; - } - - // Comprueba el teclado para decrementar el tamaño de la ventana - if (Input::get()->checkInput(InputType::WINDOW_DEC_SIZE, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) - { - decWindowSize(); - const std::string size = std::to_string(options.video.window.size); - Notifier::get()->showText("Window size x" + size); - return; - } - - // Comprueba el teclado para incrementar el tamaño de la ventana - if (Input::get()->checkInput(InputType::WINDOW_INC_SIZE, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) - { - incWindowSize(); - const std::string size = std::to_string(options.video.window.size); - Notifier::get()->showText("Window size x" + size); - return; - } -#endif - - // Comprueba el teclado para activar o desactivar los shaders - if (Input::get()->checkInput(InputType::VIDEO_SHADERS, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) - { - switchShaders(); - return; - } - -#ifdef DEBUG - // Comprueba el teclado para mostrar la información de debug - if (Input::get()->checkInput(InputType::SHOWINFO, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_KEYBOARD)) - { - show_info_ = !show_info_; - return; - } -#endif - - for (int i = 0; i < Input::get()->getNumControllers(); ++i) - { - // Comprueba los mandos para activar o desactivar los shaders - if (Input::get()->checkInput(InputType::SERVICE, INPUT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i) && - Input::get()->checkInput(InputType::VIDEO_SHADERS, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i)) - { - switchShaders(); - return; - } - - // Comprueba los mandos para mostrar la información de debug - if (Input::get()->checkInput(InputType::SERVICE, INPUT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i) && - Input::get()->checkInput(InputType::SHOWINFO, INPUT_DO_NOT_ALLOW_REPEAT, INPUT_USE_GAMECONTROLLER, i)) - { - show_info_ = !show_info_; - return; - } - } -} - // Agita la pantalla void Screen::shake() { @@ -404,8 +336,8 @@ void Screen::doAttenuate() } } -// Activa/desactiva los shaders -void Screen::switchShaders() +// Activa / desactiva los shaders +void Screen::toggleShaders() { options.video.shaders = !options.video.shaders; setVideoMode(options.video.mode); @@ -413,6 +345,12 @@ void Screen::switchShaders() Notifier::get()->showText("Shaders " + value); } +// Activa / desactiva la información de debug +void Screen::toggleDebugInfo() +{ + show_info_ = !show_info_; +} + // Atenua la pantalla void Screen::attenuate(bool value) { @@ -437,7 +375,7 @@ void Screen::updateFPS() } // Muestra información por pantalla -void Screen::displayInfo() +void Screen::renderInfo() { if (show_info_) { diff --git a/source/screen.h b/source/screen.h index 92b1f9e..2778d9c 100644 --- a/source/screen.h +++ b/source/screen.h @@ -92,7 +92,7 @@ private: void updateFPS(); // Muestra información por pantalla - void displayInfo(); + void renderInfo(); // Calcula la nueva posición de la ventana a partir de la antigua al cambiarla de tamaño SDL_Point getNewPosition(); @@ -118,9 +118,6 @@ public: // Actualiza la lógica de la clase void update(); - // Comprueba las entradas - void checkInput(); - // Limpia la pantalla void clean(Color color = Color(0x00, 0x00, 0x00)); @@ -133,8 +130,8 @@ public: // Establece el modo de video void setVideoMode(ScreenVideoMode video_mode); - // Camibia entre pantalla completa y ventana - void switchVideoMode(); + // Cambia entre pantalla completa y ventana + void toggleVideoMode(); // Cambia el tamaño de la ventana void setWindowSize(int size); @@ -157,8 +154,11 @@ public: // Pone la pantalla de color void flash(Color color, int lenght); - // Activa/desactiva los shaders - void switchShaders(); + // Activa / desactiva los shaders + void toggleShaders(); + + // Activa / desactiva la información de debug + void toggleDebugInfo(); // Atenua la pantalla void attenuate(bool value); diff --git a/source/title.cpp b/source/title.cpp index e9a75d0..a1dc8a9 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -282,7 +282,6 @@ void Title::checkInput() } // Comprueba el input para el resto de objetos - Screen::get()->checkInput(); define_buttons_->checkEvents(); // Comprueba los inputs que se pueden introducir en cualquier sección del juego