summaryrefslogtreecommitdiff
path: root/src/input_common/main.cpp
diff options
context:
space:
mode:
authorGravatar german772022-12-16 16:16:54 -0600
committerGravatar Narr the Reg2022-12-16 18:26:11 -0600
commit243404bf34b1470369e1d0f5f2dd18ac02435273 (patch)
tree90a6f4fa1da5620b07ce3c2183cbc69edd029727 /src/input_common/main.cpp
parentMerge pull request #6354 from ogniK5377/device-name (diff)
downloadyuzu-243404bf34b1470369e1d0f5f2dd18ac02435273.tar.gz
yuzu-243404bf34b1470369e1d0f5f2dd18ac02435273.tar.xz
yuzu-243404bf34b1470369e1d0f5f2dd18ac02435273.zip
input_common: Add virtual gamepad
Diffstat (limited to 'src/input_common/main.cpp')
-rw-r--r--src/input_common/main.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/input_common/main.cpp b/src/input_common/main.cpp
index 942a13535..75b856c95 100644
--- a/src/input_common/main.cpp
+++ b/src/input_common/main.cpp
@@ -12,6 +12,7 @@
12#include "input_common/drivers/touch_screen.h" 12#include "input_common/drivers/touch_screen.h"
13#include "input_common/drivers/udp_client.h" 13#include "input_common/drivers/udp_client.h"
14#include "input_common/drivers/virtual_amiibo.h" 14#include "input_common/drivers/virtual_amiibo.h"
15#include "input_common/drivers/virtual_gamepad.h"
15#include "input_common/helpers/stick_from_buttons.h" 16#include "input_common/helpers/stick_from_buttons.h"
16#include "input_common/helpers/touch_from_buttons.h" 17#include "input_common/helpers/touch_from_buttons.h"
17#include "input_common/input_engine.h" 18#include "input_common/input_engine.h"
@@ -85,6 +86,12 @@ struct InputSubsystem::Impl {
85 Common::Input::RegisterOutputFactory(virtual_amiibo->GetEngineName(), 86 Common::Input::RegisterOutputFactory(virtual_amiibo->GetEngineName(),
86 virtual_amiibo_output_factory); 87 virtual_amiibo_output_factory);
87 88
89 virtual_gamepad = std::make_shared<VirtualGamepad>("virtual_gamepad");
90 virtual_gamepad->SetMappingCallback(mapping_callback);
91 virtual_gamepad_input_factory = std::make_shared<InputFactory>(virtual_gamepad);
92 Common::Input::RegisterInputFactory(virtual_gamepad->GetEngineName(),
93 virtual_gamepad_input_factory);
94
88#ifdef HAVE_SDL2 95#ifdef HAVE_SDL2
89 sdl = std::make_shared<SDLDriver>("sdl"); 96 sdl = std::make_shared<SDLDriver>("sdl");
90 sdl->SetMappingCallback(mapping_callback); 97 sdl->SetMappingCallback(mapping_callback);
@@ -132,6 +139,9 @@ struct InputSubsystem::Impl {
132 Common::Input::UnregisterOutputFactory(virtual_amiibo->GetEngineName()); 139 Common::Input::UnregisterOutputFactory(virtual_amiibo->GetEngineName());
133 virtual_amiibo.reset(); 140 virtual_amiibo.reset();
134 141
142 Common::Input::UnregisterInputFactory(virtual_gamepad->GetEngineName());
143 virtual_gamepad.reset();
144
135#ifdef HAVE_SDL2 145#ifdef HAVE_SDL2
136 Common::Input::UnregisterInputFactory(sdl->GetEngineName()); 146 Common::Input::UnregisterInputFactory(sdl->GetEngineName());
137 Common::Input::UnregisterOutputFactory(sdl->GetEngineName()); 147 Common::Input::UnregisterOutputFactory(sdl->GetEngineName());
@@ -290,6 +300,9 @@ struct InputSubsystem::Impl {
290 if (engine == tas_input->GetEngineName()) { 300 if (engine == tas_input->GetEngineName()) {
291 return true; 301 return true;
292 } 302 }
303 if (engine == virtual_gamepad->GetEngineName()) {
304 return true;
305 }
293#ifdef HAVE_SDL2 306#ifdef HAVE_SDL2
294 if (engine == sdl->GetEngineName()) { 307 if (engine == sdl->GetEngineName()) {
295 return true; 308 return true;
@@ -338,6 +351,7 @@ struct InputSubsystem::Impl {
338 std::shared_ptr<CemuhookUDP::UDPClient> udp_client; 351 std::shared_ptr<CemuhookUDP::UDPClient> udp_client;
339 std::shared_ptr<Camera> camera; 352 std::shared_ptr<Camera> camera;
340 std::shared_ptr<VirtualAmiibo> virtual_amiibo; 353 std::shared_ptr<VirtualAmiibo> virtual_amiibo;
354 std::shared_ptr<VirtualGamepad> virtual_gamepad;
341 355
342 std::shared_ptr<InputFactory> keyboard_factory; 356 std::shared_ptr<InputFactory> keyboard_factory;
343 std::shared_ptr<InputFactory> mouse_factory; 357 std::shared_ptr<InputFactory> mouse_factory;
@@ -347,6 +361,7 @@ struct InputSubsystem::Impl {
347 std::shared_ptr<InputFactory> tas_input_factory; 361 std::shared_ptr<InputFactory> tas_input_factory;
348 std::shared_ptr<InputFactory> camera_input_factory; 362 std::shared_ptr<InputFactory> camera_input_factory;
349 std::shared_ptr<InputFactory> virtual_amiibo_input_factory; 363 std::shared_ptr<InputFactory> virtual_amiibo_input_factory;
364 std::shared_ptr<InputFactory> virtual_gamepad_input_factory;
350 365
351 std::shared_ptr<OutputFactory> keyboard_output_factory; 366 std::shared_ptr<OutputFactory> keyboard_output_factory;
352 std::shared_ptr<OutputFactory> mouse_output_factory; 367 std::shared_ptr<OutputFactory> mouse_output_factory;
@@ -423,6 +438,14 @@ const VirtualAmiibo* InputSubsystem::GetVirtualAmiibo() const {
423 return impl->virtual_amiibo.get(); 438 return impl->virtual_amiibo.get();
424} 439}
425 440
441VirtualGamepad* InputSubsystem::GetVirtualGamepad() {
442 return impl->virtual_gamepad.get();
443}
444
445const VirtualGamepad* InputSubsystem::GetVirtualGamepad() const {
446 return impl->virtual_gamepad.get();
447}
448
426std::vector<Common::ParamPackage> InputSubsystem::GetInputDevices() const { 449std::vector<Common::ParamPackage> InputSubsystem::GetInputDevices() const {
427 return impl->GetInputDevices(); 450 return impl->GetInputDevices();
428} 451}