soport de gamepad per a wasm
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
#include "core/locale/locale.hpp" // Para Locale
|
||||
#include "core/rendering/render_info.hpp" // Para RenderInfo
|
||||
#include "core/rendering/screen.hpp" // Para Screen
|
||||
#include "core/system/global_events.hpp" // Para GlobalEvents::consumeGamepadButtonPressed
|
||||
#include "game/options.hpp" // Para Options, options, OptionsVideo, Section
|
||||
#include "game/scene_manager.hpp" // Para SceneManager
|
||||
#include "game/ui/console.hpp" // Para Console
|
||||
@@ -152,6 +153,12 @@ namespace GlobalInputs {
|
||||
|
||||
// Detecta qué acción global ha sido presionada (si alguna)
|
||||
auto getPressedAction() -> InputAction { // NOLINT(readability-function-cognitive-complexity)
|
||||
// Qualsevol botó del comandament actua com a ACCEPT (saltar escenes
|
||||
// d'attract mode: logo, loading, credits, demo, ending...). Es prioritza
|
||||
// sobre EXIT perquè s'envia com a flag d'event, no com a check d'acció.
|
||||
if (GlobalEvents::consumeGamepadButtonPressed()) {
|
||||
return InputAction::ACCEPT;
|
||||
}
|
||||
if (Input::get()->checkAction(InputAction::EXIT, Input::DO_NOT_ALLOW_REPEAT)) {
|
||||
return InputAction::EXIT;
|
||||
}
|
||||
|
||||
@@ -421,7 +421,13 @@ auto Input::addGamepad(int device_index) -> std::string { // NOLINT(readability
|
||||
auto name = gamepad->name;
|
||||
std::cout << "Gamepad connected (" << name << ")" << '\n';
|
||||
gamepads_.push_back(std::move(gamepad));
|
||||
return name + " CONNECTED";
|
||||
|
||||
// Aplica els bindings d'Options al nou gamepad (en hot-plug/wasm el ctor
|
||||
// ja ha cridat applyGamepadBindingsFromOptions però llavors gamepads_
|
||||
// estava buit i no s'ha fet res).
|
||||
applyGamepadBindingsFromOptions();
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
auto Input::removeGamepad(SDL_JoystickID id) -> std::string { // NOLINT(readability-convert-member-functions-to-static)
|
||||
@@ -433,7 +439,7 @@ auto Input::removeGamepad(SDL_JoystickID id) -> std::string { // NOLINT(readabi
|
||||
std::string name = (*it)->name;
|
||||
std::cout << "Gamepad disconnected (" << name << ")" << '\n';
|
||||
gamepads_.erase(it);
|
||||
return name + " DISCONNECTED";
|
||||
return name;
|
||||
}
|
||||
std::cerr << "No se encontró el gamepad con ID " << id << '\n';
|
||||
return {};
|
||||
|
||||
Reference in New Issue
Block a user