diff options
Diffstat (limited to 'src/i_joystick.c')
-rw-r--r-- | src/i_joystick.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/i_joystick.c b/src/i_joystick.c index 4bc6a1e9..8d77c9d6 100644 --- a/src/i_joystick.c +++ b/src/i_joystick.c @@ -67,6 +67,11 @@ static int joystick_x_invert = 0; static int joystick_y_axis = 1; static int joystick_y_invert = 0; +// Which joystick axis to use for strafing? + +static int joystick_strafe_axis = -1; +static int joystick_strafe_invert = 0; + void I_ShutdownJoystick(void) { if (joystick != NULL) @@ -112,8 +117,9 @@ void I_InitJoystick(void) num_axes = SDL_JoystickNumAxes(joystick); - if (joystick_x_axis < 0 || joystick_x_axis >= num_axes - || joystick_y_axis < 0 || joystick_y_axis >= num_axes) + if (joystick_x_axis >= num_axes + || joystick_y_axis >= num_axes + || joystick_strafe_axis >= num_axes) { printf("I_InitJoystick: Invalid joystick axis for joystick #%i " "(run joystick setup again)\n", @@ -159,6 +165,13 @@ static int GetAxisState(int axis, int invert) { int result; + // Axis -1 means disabled. + + if (axis < 0) + { + return 0; + } + result = SDL_JoystickGetAxis(joystick, axis); if (invert) @@ -184,6 +197,7 @@ void I_UpdateJoystick(void) ev.data1 = GetButtonState(); ev.data2 = GetAxisState(joystick_x_axis, joystick_x_invert); ev.data3 = GetAxisState(joystick_y_axis, joystick_y_invert); + ev.data4 = GetAxisState(joystick_strafe_axis, joystick_strafe_invert); D_PostEvent(&ev); } @@ -195,7 +209,9 @@ void I_BindJoystickVariables(void) M_BindVariable("joystick_index", &joystick_index); M_BindVariable("joystick_x_axis", &joystick_x_axis); M_BindVariable("joystick_y_axis", &joystick_y_axis); + M_BindVariable("joystick_strafe_axis", &joystick_strafe_axis); M_BindVariable("joystick_x_invert", &joystick_x_invert); M_BindVariable("joystick_y_invert", &joystick_y_invert); + M_BindVariable("joystick_strafe_invert",&joystick_strafe_invert); } |