Input: canviant a nou model update/poll

This commit is contained in:
2025-06-29 09:35:49 +02:00
parent 78338933e2
commit ce1ae74e88
7 changed files with 153 additions and 144 deletions

View File

@@ -11,7 +11,7 @@
#include "param.h" // Para Param, ParamGame, param
#include "screen.h" // Para Screen
#include "section.h" // Para Name, name, Options, options, AttractMode
#include "ui/service_menu.h" // Para ServiceMenu
#include "ui/service_menu.h" // Para ServiceMenu
#include "utils.h" // Para boolToOnOff
namespace GlobalInputs
@@ -192,13 +192,13 @@ namespace GlobalInputs
}
// Comprueba el boton de servicio
void checkServiceButton()
bool checkServiceButton()
{
// Teclado
if (Input::get()->checkInput(InputAction::SERVICE, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD))
{
toggleServiceMenu();
return;
return true;
}
// Mandos
@@ -208,17 +208,18 @@ namespace GlobalInputs
if (Input::get()->checkInput(InputAction::SERVICE, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::CONTROLLER, i))
{
toggleServiceMenu();
return;
return true;
}
}
}
return false;
}
// Comprueba las entradas del menú de servicio
void checkServiceInputs()
bool checkServiceInputs()
{
if (!ServiceMenu::get()->isEnabled())
return;
return false;
// Teclado
{
@@ -226,42 +227,42 @@ namespace GlobalInputs
if (Input::get()->checkInput(InputAction::UP, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD))
{
ServiceMenu::get()->setSelectorUp();
return;
return true;
}
// Abajo
if (Input::get()->checkInput(InputAction::DOWN, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD))
{
ServiceMenu::get()->setSelectorDown();
return;
return true;
}
// Derecha
if (Input::get()->checkInput(InputAction::RIGHT, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD))
{
ServiceMenu::get()->adjustOption(true);
return;
return true;
}
// Izquierda
if (Input::get()->checkInput(InputAction::LEFT, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD))
{
ServiceMenu::get()->adjustOption(false);
return;
return true;
}
// Aceptar
if (Input::get()->checkInput(InputAction::SM_SELECT, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD))
{
ServiceMenu::get()->selectOption();
return;
return true;
}
// Atras
if (Input::get()->checkInput(InputAction::SM_BACK, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD))
{
ServiceMenu::get()->moveBack();
return;
return true;
}
}
@@ -273,49 +274,50 @@ namespace GlobalInputs
if (Input::get()->checkInput(InputAction::UP, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::CONTROLLER, i))
{
ServiceMenu::get()->setSelectorUp();
return;
return true;
}
// Abajo
if (Input::get()->checkInput(InputAction::DOWN, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::CONTROLLER, i))
{
ServiceMenu::get()->setSelectorDown();
return;
return true;
}
// Derecha
if (Input::get()->checkInput(InputAction::RIGHT, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::CONTROLLER, i))
{
ServiceMenu::get()->adjustOption(true);
return;
return true;
}
// Izquierda
if (Input::get()->checkInput(InputAction::LEFT, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::CONTROLLER, i))
{
ServiceMenu::get()->adjustOption(false);
return;
return true;
}
// Aceptar
if (Input::get()->checkInput(InputAction::SM_SELECT, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::CONTROLLER, i))
{
ServiceMenu::get()->selectOption();
return;
return true;
}
// Atras
if (Input::get()->checkInput(InputAction::SM_BACK, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::CONTROLLER, i))
{
ServiceMenu::get()->moveBack();
return;
return true;
}
}
}
return false;
}
// Comprueba las entradas fuera del menú de servicio
void checkInputs()
bool checkInputs()
{
// Teclado
{
@@ -325,7 +327,7 @@ namespace GlobalInputs
Screen::get()->toggleFullscreen();
const std::string MODE = Options::video.fullscreen ? Lang::getText("[NOTIFICATIONS] 11") : Lang::getText("[NOTIFICATIONS] 10");
Notifier::get()->show({MODE});
return;
return true;
}
// Comprueba el teclado para decrementar el tamaño de la ventana
@@ -335,7 +337,7 @@ namespace GlobalInputs
{
Notifier::get()->show({Lang::getText("[NOTIFICATIONS] 09") + " x" + std::to_string(Options::window.size)});
}
return;
return true;
}
// Comprueba el teclado para incrementar el tamaño de la ventana
@@ -345,70 +347,70 @@ namespace GlobalInputs
{
Notifier::get()->show({Lang::getText("[NOTIFICATIONS] 09") + " x" + std::to_string(Options::window.size)});
}
return;
return true;
}
// Salir
if (Input::get()->checkInput(InputAction::EXIT, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD))
{
quit();
return;
return true;
}
// Saltar sección
if (Input::get()->checkAnyButtonPressed() && !ServiceMenu::get()->isEnabled())
if (Input::get()->checkAnyButton() && !ServiceMenu::get()->isEnabled())
{
skipSection();
return;
return true;
}
// Reset
if (Input::get()->checkInput(InputAction::RESET, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD))
{
reset();
return;
return true;
}
// Audio
if (Input::get()->checkInput(InputAction::TOGGLE_AUDIO, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD))
{
toggleAudio();
return;
return true;
}
// Autofire
if (Input::get()->checkInput(InputAction::TOGGLE_AUTO_FIRE, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD))
{
toggleFireMode();
return;
return true;
}
// Idioma
if (Input::get()->checkInput(InputAction::CHANGE_LANG, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD))
{
changeLang();
return;
return true;
}
// Shaders
if (Input::get()->checkInput(InputAction::TOGGLE_VIDEO_SHADERS, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD))
{
toggleShaders();
return;
return true;
}
// Integer Scale
if (Input::get()->checkInput(InputAction::TOGGLE_VIDEO_INTEGER_SCALE, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD))
{
toggleIntegerScale();
return;
return true;
}
// VSync
if (Input::get()->checkInput(InputAction::TOGGLE_VIDEO_VSYNC, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD))
{
toggleVSync();
return;
return true;
}
#ifdef DEBUG
@@ -416,17 +418,23 @@ namespace GlobalInputs
if (Input::get()->checkInput(InputAction::SHOW_INFO, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD))
{
Screen::get()->toggleDebugInfo();
return;
return true;
}
#endif
}
return false;
}
// Comprueba los inputs que se pueden introducir en cualquier sección del juego
void check()
bool check()
{
checkServiceButton();
checkServiceInputs();
checkInputs();
Input::get()->update();
if (checkServiceButton())
return true;
if (checkServiceInputs())
return true;
if (checkInputs())
return true;
return false;
}
}