Streamline hat lookup.

This commit is contained in:
Themaister 2012-02-18 12:32:49 +01:00
parent 947d2a3514
commit aac2533075

View File

@ -193,39 +193,32 @@ static bool sdl_joykey_pressed(sdl_input_t *sdl, int port_num, uint16_t joykey)
// Check hat. // Check hat.
if (GET_HAT_DIR(joykey)) if (GET_HAT_DIR(joykey))
{ {
int hat = GET_HAT(joykey); uint16_t hat = GET_HAT(joykey);
if (hat < (int)sdl->num_hats[port_num]) if (hat >= sdl->num_hats[port_num])
return false;
Uint8 dir = SDL_JoystickGetHat(sdl->joysticks[port_num], hat);
switch (GET_HAT_DIR(joykey))
{ {
Uint8 dir = SDL_JoystickGetHat(sdl->joysticks[port_num], hat); case HAT_UP_MASK:
switch (GET_HAT_DIR(joykey)) return dir & SDL_HAT_UP;
{ case HAT_DOWN_MASK:
case HAT_UP_MASK: return dir & SDL_HAT_DOWN;
if (dir & SDL_HAT_UP) case HAT_LEFT_MASK:
return true; return dir & SDL_HAT_LEFT;
break; case HAT_RIGHT_MASK:
case HAT_DOWN_MASK: return dir & SDL_HAT_RIGHT;
if (dir & SDL_HAT_DOWN) default:
return true; return false;
break;
case HAT_LEFT_MASK:
if (dir & SDL_HAT_LEFT)
return true;
break;
case HAT_RIGHT_MASK:
if (dir & SDL_HAT_RIGHT)
return true;
break;
default:
break;
}
} }
} }
else // Check the button else // Check the button
{ {
if (joykey < sdl->num_buttons[port_num] && SDL_JoystickGetButton(sdl->joysticks[port_num], joykey)) if (joykey < sdl->num_buttons[port_num] && SDL_JoystickGetButton(sdl->joysticks[port_num], joykey))
return true; return true;
return false;
} }
return false;
} }
static bool sdl_axis_pressed(sdl_input_t *sdl, int port_num, uint32_t joyaxis) static bool sdl_axis_pressed(sdl_input_t *sdl, int port_num, uint32_t joyaxis)