(udev input) Cut down on code duplication

This commit is contained in:
twinaphex 2021-04-11 06:37:49 +02:00
parent 1f506615d3
commit 05a2623875

View File

@ -965,33 +965,38 @@ static int16_t udev_pointer_state(udev_input_t *udev,
return 0;
}
static int16_t udev_input_lightgun_state(
udev_input_t *udev,
const input_device_driver_t *joypad,
rarch_joypad_info_t *joypad_info,
const struct retro_keybind **binds,
bool keyboard_mapping_blocked,
unsigned port,
unsigned device,
unsigned idx,
unsigned id)
static unsigned udev_retro_id_to_rarch(unsigned id)
{
if (!keyboard_mapping_blocked)
if ((binds[port][id].key < RETROK_LAST)
&& udev_keyboard_pressed(udev, binds[port]
[id].key) )
return 1;
if (binds[port][id].valid)
switch (id)
{
unsigned new_id = id;
if (button_is_pressed(joypad,
joypad_info, binds[port],
new_id)
|| udev_mouse_button_pressed(udev, port,
binds[port][new_id].mbutton)
)
return 1;
case RETRO_DEVICE_ID_LIGHTGUN_DPAD_RIGHT:
return RARCH_LIGHTGUN_DPAD_RIGHT;
case RETRO_DEVICE_ID_LIGHTGUN_DPAD_LEFT:
return RARCH_LIGHTGUN_DPAD_LEFT;
case RETRO_DEVICE_ID_LIGHTGUN_DPAD_UP:
return RARCH_LIGHTGUN_DPAD_UP;
case RETRO_DEVICE_ID_LIGHTGUN_DPAD_DOWN:
return RARCH_LIGHTGUN_DPAD_DOWN;
case RETRO_DEVICE_ID_LIGHTGUN_SELECT:
return RARCH_LIGHTGUN_SELECT;
case RETRO_DEVICE_ID_LIGHTGUN_PAUSE:
return RARCH_LIGHTGUN_START;
case RETRO_DEVICE_ID_LIGHTGUN_RELOAD:
return RARCH_LIGHTGUN_RELOAD;
case RETRO_DEVICE_ID_LIGHTGUN_TRIGGER:
return RARCH_LIGHTGUN_TRIGGER;
case RETRO_DEVICE_ID_LIGHTGUN_AUX_A:
return RARCH_LIGHTGUN_AUX_A;
case RETRO_DEVICE_ID_LIGHTGUN_AUX_B:
return RARCH_LIGHTGUN_AUX_B;
case RETRO_DEVICE_ID_LIGHTGUN_AUX_C:
return RARCH_LIGHTGUN_AUX_C;
case RETRO_DEVICE_ID_LIGHTGUN_START:
return RARCH_LIGHTGUN_START;
default:
break;
}
return 0;
}
@ -1118,71 +1123,34 @@ static int16_t udev_input_state(
/*buttons*/
case RETRO_DEVICE_ID_LIGHTGUN_TRIGGER:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_TRIGGER);
case RETRO_DEVICE_ID_LIGHTGUN_RELOAD:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_RELOAD);
case RETRO_DEVICE_ID_LIGHTGUN_AUX_A:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_AUX_A);
case RETRO_DEVICE_ID_LIGHTGUN_AUX_B:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_AUX_B);
case RETRO_DEVICE_ID_LIGHTGUN_AUX_C:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_AUX_C);
case RETRO_DEVICE_ID_LIGHTGUN_START:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_START);
case RETRO_DEVICE_ID_LIGHTGUN_SELECT:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_SELECT);
case RETRO_DEVICE_ID_LIGHTGUN_DPAD_UP:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_DPAD_UP);
case RETRO_DEVICE_ID_LIGHTGUN_DPAD_DOWN:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_DPAD_DOWN);
case RETRO_DEVICE_ID_LIGHTGUN_DPAD_LEFT:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_DPAD_LEFT);
case RETRO_DEVICE_ID_LIGHTGUN_DPAD_RIGHT:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_DPAD_RIGHT);
case RETRO_DEVICE_ID_LIGHTGUN_PAUSE: /* deprecated */
id = udev_retro_id_to_rarch(id);
if (!keyboard_mapping_blocked)
if ((binds[port][id].key < RETROK_LAST)
&& udev_keyboard_pressed(udev, binds[port]
[id].key))
return 1;
if (binds[port][id].valid)
{
unsigned new_id = id;
if (button_is_pressed(joypad,
joypad_info, binds[port],
new_id)
|| udev_mouse_button_pressed(udev, port,
binds[port][new_id].mbutton)
)
return 1;
}
/*deprecated*/
case RETRO_DEVICE_ID_LIGHTGUN_X:
{
@ -1198,19 +1166,6 @@ static int16_t udev_input_state(
return udev_mouse_get_y(mouse);
}
break;
case RETRO_DEVICE_ID_LIGHTGUN_PAUSE:
if (binds[port][RARCH_LIGHTGUN_START].valid)
{
unsigned new_id = RARCH_LIGHTGUN_START;
if (button_is_pressed(joypad,
joypad_info, binds[port],
new_id)
|| udev_mouse_button_pressed(udev, port,
binds[port][new_id].mbutton)
)
return 1;
}
break;
}
break;
}