commit 4199287755da4468bb466230b305369439efece0
Author: Michael Day <contact@michaelcday.com>
AuthorDate: Wed Aug 9 23:31:55 2023 -0400
Commit: Turo Lamminen <turol@users.noreply.github.com>
CommitDate: Wed Aug 23 11:42:50 2023 +0300
Allow swapping of left and right sticks
---
src/setup/joystick.c | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/src/setup/joystick.c b/src/setup/joystick.c
index dd24448c..8d787443 100644
--- a/src/setup/joystick.c
+++ b/src/setup/joystick.c
@@ -1106,6 +1106,28 @@ static void AddJoystickControl(TXT_UNCAST_ARG(table), const char *label, int *va
NULL);
}
+static void SwapLRSticks(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(unused))
+{
+ // Single pad/stick controllers don't get a joystick_strafe_axis value
+ if (joystick_strafe_axis >= 0)
+ {
+ if (joystick_x_axis == SDL_CONTROLLER_AXIS_LEFTX)
+ {
+ joystick_x_axis = SDL_CONTROLLER_AXIS_RIGHTX;
+ joystick_y_axis = SDL_CONTROLLER_AXIS_LEFTY;
+ joystick_strafe_axis = SDL_CONTROLLER_AXIS_LEFTX;
+ joystick_look_axis = SDL_CONTROLLER_AXIS_RIGHTY;
+ }
+ else
+ {
+ joystick_x_axis = SDL_CONTROLLER_AXIS_LEFTX;
+ joystick_y_axis = SDL_CONTROLLER_AXIS_RIGHTY;
+ joystick_strafe_axis = SDL_CONTROLLER_AXIS_RIGHTX;
+ joystick_look_axis = SDL_CONTROLLER_AXIS_LEFTY;
+ }
+ }
+}
+
void ConfigJoystick(TXT_UNCAST_ARG(widget), void *user_data)
{
txt_window_t *window;
@@ -1164,6 +1186,17 @@ void ConfigJoystick(TXT_UNCAST_ARG(widget), void *user_data)
NULL);
}
+ TXT_AddWidget(window,
+ TXT_NewConditional(&use_gamepad, 1,
+ TXT_MakeTable(6,
+ TXT_NewButton2("Swap L and R sticks", SwapLRSticks, NULL),
+ TXT_TABLE_OVERFLOW_RIGHT,
+ TXT_TABLE_OVERFLOW_RIGHT,
+ TXT_TABLE_EMPTY,
+ TXT_TABLE_EMPTY,
+ TXT_TABLE_EMPTY,
+ NULL)));
+
TXT_AddWidget(window, TXT_NewSeparator("Buttons"));
AddJoystickControl(window, "Fire/Attack", &joybfire);