From c4ee926910d2c50a7447ab51fa628eca720dfd28 Mon Sep 17 00:00:00 2001 From: ian Date: Wed, 8 Jan 2025 22:53:17 +0100 Subject: [PATCH] Merge 4/8-way mode toggle into one action --- headers/gamepad.h | 5 ++--- proto/enums.proto | 3 +-- src/gamepad.cpp | 15 +++++---------- www/src/Data/Pins.ts | 3 +-- www/src/Locales/en/PinMapping.jsx | 3 +-- 5 files changed, 10 insertions(+), 19 deletions(-) diff --git a/headers/gamepad.h b/headers/gamepad.h index 6baf1561a..d1c8760a1 100644 --- a/headers/gamepad.h +++ b/headers/gamepad.h @@ -188,8 +188,7 @@ class Gamepad { GamepadButtonMapping *mapAnalogRSXPos; GamepadButtonMapping *mapAnalogRSYNeg; GamepadButtonMapping *mapAnalogRSYPos; - GamepadButtonMapping *map4WayMode; - GamepadButtonMapping *map8WayMode; + GamepadButtonMapping *map48WayMode; // gamepad specific proxy of debounced buttons --- 1 = active (inverse of the raw GPIO) // see GP2040::debounceGpioGetAll for details @@ -215,7 +214,7 @@ class Gamepad { GamepadOptions & options; DpadMode activeDpadMode; - bool fourWayMode; + bool map48WayModeToggle; const HotkeyOptions & hotkeyOptions; GamepadHotkey lastAction = HOTKEY_NONE; diff --git a/proto/enums.proto b/proto/enums.proto index 9c6f7b231..1efb399c2 100644 --- a/proto/enums.proto +++ b/proto/enums.proto @@ -262,8 +262,7 @@ enum GpioAction BUTTON_PRESS_INPUT_REVERSE = 69; SUSTAIN_FOCUS_MODE = 70; - SUSTAIN_4_WAY_MODE = 71; - SUSTAIN_8_WAY_MODE = 72; + SUSTAIN_4_8_WAY_MODE = 71; } enum GpioDirection diff --git a/src/gamepad.cpp b/src/gamepad.cpp index 7be2c8db2..b94902184 100644 --- a/src/gamepad.cpp +++ b/src/gamepad.cpp @@ -83,8 +83,7 @@ void Gamepad::setup() mapAnalogRSXPos = new GamepadButtonMapping(ANALOG_DIRECTION_RS_X_POS); mapAnalogRSYNeg = new GamepadButtonMapping(ANALOG_DIRECTION_RS_Y_NEG); mapAnalogRSYPos = new GamepadButtonMapping(ANALOG_DIRECTION_RS_Y_POS); - map4WayMode = new GamepadButtonMapping(SUSTAIN_4_WAY_MODE); - map8WayMode = new GamepadButtonMapping(SUSTAIN_8_WAY_MODE); + map48WayMode = new GamepadButtonMapping(SUSTAIN_4_8_WAY_MODE); const auto assignCustomMappingToMaps = [&](GpioMappingInfo mapInfo, Pin_t pin) -> void { if (mapDpadUp->buttonMask & mapInfo.customDpadMask) mapDpadUp->pinMask |= 1 << pin; @@ -163,8 +162,7 @@ void Gamepad::setup() case GpioAction::ANALOG_DIRECTION_RS_X_POS: mapAnalogRSXPos->pinMask |= 1 << pin; break; case GpioAction::ANALOG_DIRECTION_RS_Y_NEG: mapAnalogRSYNeg->pinMask |= 1 << pin; break; case GpioAction::ANALOG_DIRECTION_RS_Y_POS: mapAnalogRSYPos->pinMask |= 1 << pin; break; - case GpioAction::SUSTAIN_4_WAY_MODE: map4WayMode->pinMask |= 1 << pin; break; - case GpioAction::SUSTAIN_8_WAY_MODE: map8WayMode->pinMask |= 1 << pin; break; + case GpioAction::SUSTAIN_4_8_WAY_MODE: map48WayMode->pinMask |= 1 << pin; break; default: break; } } @@ -224,8 +222,7 @@ void Gamepad::reinit() delete mapAnalogRSXPos; delete mapAnalogRSYNeg; delete mapAnalogRSYPos; - delete map4WayMode; - delete map8WayMode; + delete map48WayMode; // reinitialize pin mappings this->setup(); @@ -263,7 +260,7 @@ void Gamepad::process() } // 4-way before SOCD, might have better history without losing any coherent functionality - if (fourWayMode) { + if (options.fourWayMode ^ map48WayModeToggle) { state.dpad = filterToFourWayMode(state.dpad); } @@ -371,9 +368,7 @@ void Gamepad::read() else if (values & mapButtonRS->pinMask) activeDpadMode = DpadMode::DPAD_MODE_RIGHT_ANALOG; else activeDpadMode = options.dpadMode; - if (values & map4WayMode->pinMask) fourWayMode = true; - else if (values & map8WayMode->pinMask) fourWayMode = false; - else fourWayMode = options.fourWayMode; + map48WayModeToggle = (values & map48WayMode->pinMask); if (values & mapAnalogLSXNeg->pinMask) { state.lx = GAMEPAD_JOYSTICK_MIN; diff --git a/www/src/Data/Pins.ts b/www/src/Data/Pins.ts index 363b15efc..fc15ac324 100644 --- a/www/src/Data/Pins.ts +++ b/www/src/Data/Pins.ts @@ -73,8 +73,7 @@ export const BUTTON_ACTIONS = { ANALOG_DIRECTION_MOD_HIGH: 68, BUTTON_PRESS_INPUT_REVERSE: 69, SUSTAIN_FOCUS_MODE: 70, - SUSTAIN_4_WAY_MODE: 71, - SUSTAIN_8_WAY_MODE: 72, + SUSTAIN_4_8_WAY_MODE: 71, } as const; export const PIN_DIRECTIONS = { diff --git a/www/src/Locales/en/PinMapping.jsx b/www/src/Locales/en/PinMapping.jsx index 5c72faeca..2c2fe2029 100644 --- a/www/src/Locales/en/PinMapping.jsx +++ b/www/src/Locales/en/PinMapping.jsx @@ -98,7 +98,6 @@ export default { ANALOG_DIRECTION_MOD_HIGH: 'Analog Stick Modifier High', BUTTON_PRESS_INPUT_REVERSE: 'Reverse Input', SUSTAIN_FOCUS_MODE: 'Focus Mode Enable', - SUSTAIN_4_WAY_MODE: '4-Way Mode Enable', - SUSTAIN_8_WAY_MODE: '8-Way Mode Enable', + SUSTAIN_4_8_WAY_MODE: 'Toggle 4-Way Mode', }, };