Moguts els checkInputs de Screen a GlobalInputs
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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_)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user