Controller buttons read more succinctly

This commit is contained in:
Jaime Moreira 2024-01-06 13:35:48 -03:00
parent fb46007bc3
commit adf638d1f4
2 changed files with 10 additions and 53 deletions

View file

@ -220,8 +220,6 @@ enum QKEYS {
K_STICK_RIGHT,
K_SHOULDER_LEFT,
K_SHOULDER_RIGHT,
K_TRIG_LEFT,
K_TRIG_RIGHT,
K_DPAD_UP,
K_DPAD_DOWN,
K_DPAD_LEFT,
@ -231,11 +229,13 @@ enum QKEYS {
K_PADDLE_2,
K_PADDLE_3,
K_PADDLE_4,
K_TOUCHPAD,
K_TOUCHPAD, // SDL_CONTROLLER_BUTTON_MAX - 1
K_TRIG_LEFT, // buttons for triggers (axes)
K_TRIG_RIGHT,
// add other joystick/controller keys before this one
// and adjust it accordingly, also remember to add corresponding _ALT key below!
K_JOY_LAST_REGULAR = K_TOUCHPAD,
K_JOY_LAST_REGULAR = K_TRIG_RIGHT,
/* Can't be mapped to any action (=> not regular) */
K_JOY_BACK,
@ -252,8 +252,6 @@ enum QKEYS {
K_STICK_RIGHT_ALT,
K_SHOULDER_LEFT_ALT,
K_SHOULDER_RIGHT_ALT,
K_TRIG_LEFT_ALT,
K_TRIG_RIGHT_ALT,
K_DPAD_UP_ALT,
K_DPAD_DOWN_ALT,
K_DPAD_LEFT_ALT,
@ -264,6 +262,8 @@ enum QKEYS {
K_PADDLE_3_ALT,
K_PADDLE_4_ALT,
K_TOUCHPAD_ALT,
K_TRIG_LEFT_ALT,
K_TRIG_RIGHT_ALT,
K_LAST
};

View file

@ -78,7 +78,7 @@ typedef enum
// IN_Update() called at the beginning of a frame to the
// actual movement functions called at a later time.
static float mouse_x, mouse_y;
static int sdl_back_button = SDL_CONTROLLER_BUTTON_BACK;
static unsigned char sdl_back_button = SDL_CONTROLLER_BUTTON_BACK;
static int joystick_left_x, joystick_left_y, joystick_right_x, joystick_right_y;
static float gyro_yaw, gyro_pitch;
static qboolean mlooking;
@ -495,45 +495,6 @@ IN_TranslateScancodeToQ2Key(SDL_Scancode sc)
return 0;
}
static int
IN_TranslateGamepadBtnToQ2Key(int btn)
{
#define MY_BTN_CASE(X,Y) case SDL_CONTROLLER_BUTTON_ ## X : return K_ ## Y;
switch( btn )
{
// case SDL_CONTROLLER_BUTTON_A : return K_BTN_A;
MY_BTN_CASE(A,BTN_A)
MY_BTN_CASE(B,BTN_B)
MY_BTN_CASE(X,BTN_X)
MY_BTN_CASE(Y,BTN_Y)
MY_BTN_CASE(LEFTSHOULDER,SHOULDER_LEFT)
MY_BTN_CASE(RIGHTSHOULDER,SHOULDER_RIGHT)
MY_BTN_CASE(LEFTSTICK,STICK_LEFT)
MY_BTN_CASE(RIGHTSTICK,STICK_RIGHT)
MY_BTN_CASE(DPAD_UP,DPAD_UP)
MY_BTN_CASE(DPAD_DOWN,DPAD_DOWN)
MY_BTN_CASE(DPAD_LEFT,DPAD_LEFT)
MY_BTN_CASE(DPAD_RIGHT,DPAD_RIGHT)
#if SDL_VERSION_ATLEAST(2, 0, 14) // support for newer buttons
MY_BTN_CASE(PADDLE1,PADDLE_1)
MY_BTN_CASE(PADDLE2,PADDLE_2)
MY_BTN_CASE(PADDLE3,PADDLE_3)
MY_BTN_CASE(PADDLE4,PADDLE_4)
MY_BTN_CASE(MISC1,BTN_MISC1)
MY_BTN_CASE(TOUCHPAD,TOUCHPAD)
#endif
MY_BTN_CASE(BACK,BTN_BACK)
MY_BTN_CASE(GUIDE,BTN_GUIDE)
MY_BTN_CASE(START,BTN_START)
}
#undef MY_BTN_CASE
return 0;
}
static void IN_Controller_Init(qboolean notify_user);
static void IN_Controller_Shutdown(qboolean notify_user);
@ -763,20 +724,16 @@ IN_Update(void)
case SDL_CONTROLLERBUTTONDOWN:
{
qboolean down = (event.type == SDL_CONTROLLERBUTTONDOWN);
unsigned char btn = event.cbutton.button;
// Handle Back Button first, to override its original key
if (event.cbutton.button == sdl_back_button)
if (btn == sdl_back_button)
{
Key_Event(K_JOY_BACK, down, true);
break;
}
key = IN_TranslateGamepadBtnToQ2Key(event.cbutton.button);
if(key != 0)
{
Key_Event(key, down, true);
}
Key_Event(K_BTN_A + btn, down, true);
break;
}