From 8bfc32de4032010009e3445cc8b7c8a2c07471be Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Mon, 13 Apr 2026 18:06:54 +0200 Subject: [PATCH] emscripten: no anava back en game --- source/core/system/global_events.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/source/core/system/global_events.cpp b/source/core/system/global_events.cpp index fea4c18..6247969 100644 --- a/source/core/system/global_events.cpp +++ b/source/core/system/global_events.cpp @@ -4,6 +4,7 @@ #include "core/input/mouse.hpp" #include "core/locale/locale.hpp" // Para Locale #include "game/options.hpp" // Para Options, options, OptionsGame, OptionsAudio +#include "game/scene_manager.hpp" // Para SceneManager::current (filtrar BACK a GAME) #include "game/ui/console.hpp" // Para Console #include "game/ui/notifier.hpp" // Para Notifier @@ -41,16 +42,19 @@ namespace GlobalEvents { // Marcar polsació de qualsevol botó del comandament (els consumirà GlobalInputs // per saltar escenes d'attract mode). El botó BACK queda exclòs perquè es - // reserva per a l'acció EXIT — excepte a emscripten, on no es pot sortir del - // joc i el BACK pot actuar com a botó genèric per saltar escenes. + // reserva per a l'acció EXIT. A emscripten només l'excloem a l'escena GAME + // (tornar al menú); a la resta d'escenes web BACK actua com a botó genèric, + // ja que no pot activar el procés de tancament del joc. if (event.type == SDL_EVENT_GAMEPAD_BUTTON_DOWN) { + const bool IS_BACK = (event.gbutton.button == SDL_GAMEPAD_BUTTON_BACK); #ifdef __EMSCRIPTEN__ - gamepad_button_pressed_ = true; + const bool RESERVE_BACK = IS_BACK && SceneManager::current == SceneManager::Scene::GAME; #else - if (event.gbutton.button != SDL_GAMEPAD_BUTTON_BACK) { + const bool RESERVE_BACK = IS_BACK; +#endif + if (!RESERVE_BACK) { gamepad_button_pressed_ = true; } -#endif } // Enrutar eventos de texto a la consola cuando está activa