From 12c7dab3f3d03350293f450e33bbf5d80ef16528 Mon Sep 17 00:00:00 2001 From: Gleb Mazovetskiy Date: Tue, 11 Oct 2022 09:33:17 +0900 Subject: [PATCH] Define gamepad type for SDL1 handhelds --- CMake/Definitions.cmake | 1 + CMake/platforms/gkd350h.cmake | 1 + CMake/platforms/lepus.cmake | 1 + CMake/platforms/miyoo_mini.cmake | 1 + CMake/platforms/n3ds.cmake | 1 + CMake/platforms/retrofw.cmake | 1 + CMake/platforms/rg350.cmake | 1 + CMake/platforms/rg99.cmake | 1 + Source/controls/plrctrls.cpp | 9 ++++++++- 9 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CMake/Definitions.cmake b/CMake/Definitions.cmake index 42918b57a..8214193f9 100644 --- a/CMake/Definitions.cmake +++ b/CMake/Definitions.cmake @@ -39,6 +39,7 @@ foreach( SDL1_VIDEO_MODE_SVID_FLAGS SDL1_FORCE_SVID_VIDEO_MODE SDL1_FORCE_DIRECT_RENDER + DEVILUTIONX_GAMEPAD_TYPE HAS_KBCTRL KBCTRL_BUTTON_DPAD_LEFT KBCTRL_BUTTON_DPAD_RIGHT diff --git a/CMake/platforms/gkd350h.cmake b/CMake/platforms/gkd350h.cmake index 972f40555..3df7f23a0 100644 --- a/CMake/platforms/gkd350h.cmake +++ b/CMake/platforms/gkd350h.cmake @@ -17,6 +17,7 @@ set(PREFILL_PLAYER_NAME ON) # so we have to use keyboard mode instead. set(HAS_KBCTRL 1) +set(DEVILUTIONX_GAMEPAD_TYPE Nintendo) set(KBCTRL_BUTTON_DPAD_LEFT SDLK_LEFT) set(KBCTRL_BUTTON_DPAD_RIGHT SDLK_RIGHT) set(KBCTRL_BUTTON_DPAD_UP SDLK_UP) diff --git a/CMake/platforms/lepus.cmake b/CMake/platforms/lepus.cmake index 822dcf9d7..0d670d503 100644 --- a/CMake/platforms/lepus.cmake +++ b/CMake/platforms/lepus.cmake @@ -16,6 +16,7 @@ set(JOY_AXIS_RIGHTY 3) # so we use KBCTRL instead. Unfortunately, this partially breaks # external mouse and keyboard support. set(HAS_KBCTRL 1) +set(DEVILUTIONX_GAMEPAD_TYPE Nintendo) set(KBCTRL_BUTTON_DPAD_LEFT SDLK_LEFT) set(KBCTRL_BUTTON_DPAD_RIGHT SDLK_RIGHT) set(KBCTRL_BUTTON_DPAD_UP SDLK_UP) diff --git a/CMake/platforms/miyoo_mini.cmake b/CMake/platforms/miyoo_mini.cmake index e3e31addc..4420f28d7 100644 --- a/CMake/platforms/miyoo_mini.cmake +++ b/CMake/platforms/miyoo_mini.cmake @@ -13,6 +13,7 @@ set(DEFAULT_AUDIO_SAMPLE_RATE 44100) # The mini's buttons are connected via GPIO and are mapped to keyboard inputs set(HAS_KBCTRL 1) +set(DEVILUTIONX_GAMEPAD_TYPE Nintendo) set(KBCTRL_BUTTON_DPAD_LEFT SDLK_LEFT) set(KBCTRL_BUTTON_DPAD_RIGHT SDLK_RIGHT) set(KBCTRL_BUTTON_DPAD_UP SDLK_UP) diff --git a/CMake/platforms/n3ds.cmake b/CMake/platforms/n3ds.cmake index 2756b7fba..bbb35b374 100644 --- a/CMake/platforms/n3ds.cmake +++ b/CMake/platforms/n3ds.cmake @@ -11,6 +11,7 @@ set(DISABLE_ZERO_TIER ON) set(LIBMPQ_FILE_BUFFER_SIZE 32768) set(USE_SDL1 ON) set(PREFILL_PLAYER_NAME ON) +set(DEVILUTIONX_GAMEPAD_TYPE Nintendo) set(NOEXIT ON) # 3DS libraries and compile definitions diff --git a/CMake/platforms/retrofw.cmake b/CMake/platforms/retrofw.cmake index 5b5315342..01f385f2a 100644 --- a/CMake/platforms/retrofw.cmake +++ b/CMake/platforms/retrofw.cmake @@ -3,6 +3,7 @@ set(NONET ON) set(USE_SDL1 ON) set(PREFILL_PLAYER_NAME ON) set(HAS_KBCTRL 1) +set(DEVILUTIONX_GAMEPAD_TYPE Nintendo) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3") set(KBCTRL_BUTTON_DPAD_LEFT SDLK_LEFT) set(KBCTRL_BUTTON_DPAD_RIGHT SDLK_RIGHT) diff --git a/CMake/platforms/rg350.cmake b/CMake/platforms/rg350.cmake index 7761a64f7..ae2ceef1b 100644 --- a/CMake/platforms/rg350.cmake +++ b/CMake/platforms/rg350.cmake @@ -20,6 +20,7 @@ set(JOY_AXIS_RIGHTY 3) # so we use KBCTRL instead. Unfortunately, this partially breaks # external mouse and keyboard support. set(HAS_KBCTRL 1) +set(DEVILUTIONX_GAMEPAD_TYPE Nintendo) set(KBCTRL_BUTTON_DPAD_LEFT SDLK_LEFT) set(KBCTRL_BUTTON_DPAD_RIGHT SDLK_RIGHT) set(KBCTRL_BUTTON_DPAD_UP SDLK_UP) diff --git a/CMake/platforms/rg99.cmake b/CMake/platforms/rg99.cmake index 849ff8123..281009278 100644 --- a/CMake/platforms/rg99.cmake +++ b/CMake/platforms/rg99.cmake @@ -38,6 +38,7 @@ set(SDL1_VIDEO_MODE_SVID_FLAGS SDL_HWSURFACE|SDL_FULLSCREEN|SDL_DOUBLEBUF) set(PREFILL_PLAYER_NAME ON) set(HAS_KBCTRL 1) +set(DEVILUTIONX_GAMEPAD_TYPE Nintendo) set(KBCTRL_BUTTON_DPAD_LEFT SDLK_LEFT) set(KBCTRL_BUTTON_DPAD_RIGHT SDLK_RIGHT) set(KBCTRL_BUTTON_DPAD_UP SDLK_UP) diff --git a/Source/controls/plrctrls.cpp b/Source/controls/plrctrls.cpp index 689a29dbc..bce9b0169 100644 --- a/Source/controls/plrctrls.cpp +++ b/Source/controls/plrctrls.cpp @@ -46,7 +46,14 @@ namespace devilution { ControlTypes ControlMode = ControlTypes::None; ControlTypes ControlDevice = ControlTypes::None; ControllerButton ControllerButtonHeld = ControllerButton_NONE; -GamepadLayout GamepadType = GamepadLayout::Generic; +GamepadLayout GamepadType = +#if defined(DEVILUTIONX_GAMEPAD_TYPE) + GamepadLayout:: + DEVILUTIONX_GAMEPAD_TYPE; +#else + GamepadLayout::Generic; +#endif + int pcurstrig = -1; Missile *pcursmissile = nullptr; quest_id pcursquest = Q_INVALID;