mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
InputSystem: add inline helpers
This commit is contained in:
parent
b72f02d123
commit
0067a57aa8
@ -208,3 +208,138 @@ enum ButtonCode_t
|
||||
KEY_XSTICK2_DOWN, // VAXIS POSITIVE
|
||||
KEY_XSTICK2_UP, // VAXIS NEGATIVE
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Inline helpers
|
||||
//-----------------------------------------------------------------------------
|
||||
inline bool IsAlpha( const ButtonCode_t code )
|
||||
{
|
||||
return ( code >= KEY_A ) && ( code <= KEY_Z );
|
||||
}
|
||||
|
||||
inline bool IsAlphaNumeric( const ButtonCode_t code )
|
||||
{
|
||||
return ( code >= KEY_0 ) && ( code <= KEY_Z );
|
||||
}
|
||||
|
||||
inline bool IsSpace( const ButtonCode_t code )
|
||||
{
|
||||
return ( code == KEY_ENTER ) || ( code == KEY_TAB ) || ( code == KEY_SPACE );
|
||||
}
|
||||
|
||||
inline bool IsKeypad( const ButtonCode_t code )
|
||||
{
|
||||
return ( code >= MOUSE_FIRST ) && ( code <= KEY_PAD_DECIMAL );
|
||||
}
|
||||
|
||||
inline bool IsPunctuation( const ButtonCode_t code )
|
||||
{
|
||||
return ( code >= KEY_0 ) && ( code <= KEY_SPACE ) && !IsAlphaNumeric( code ) && !IsSpace( code ) && !IsKeypad( code );
|
||||
}
|
||||
|
||||
inline bool IsKeyCode( const ButtonCode_t code )
|
||||
{
|
||||
return ( code >= KEY_FIRST ) && ( code <= KEY_LAST );
|
||||
}
|
||||
|
||||
inline bool IsMouseCode( const ButtonCode_t code )
|
||||
{
|
||||
return ( code >= MOUSE_FIRST ) && ( code <= MOUSE_LAST );
|
||||
}
|
||||
|
||||
inline bool IsJoystickCode( const ButtonCode_t code )
|
||||
{
|
||||
return ( ( code >= JOYSTICK_FIRST ) && ( code <= JOYSTICK_LAST ) );
|
||||
}
|
||||
|
||||
inline bool IsJoystickButtonCode( const ButtonCode_t code )
|
||||
{
|
||||
return ( code >= JOYSTICK_FIRST_BUTTON ) && ( code <= JOYSTICK_LAST_BUTTON );
|
||||
}
|
||||
|
||||
inline bool IsJoystickPOVCode( const ButtonCode_t code )
|
||||
{
|
||||
return ( code >= JOYSTICK_FIRST_POV_BUTTON ) && ( code <= JOYSTICK_LAST_POV_BUTTON );
|
||||
}
|
||||
|
||||
inline bool IsJoystickAxisCode( const ButtonCode_t code )
|
||||
{
|
||||
return ( code >= JOYSTICK_FIRST_AXIS_BUTTON ) && ( code <= JOYSTICK_LAST_AXIS_BUTTON );
|
||||
}
|
||||
|
||||
inline ButtonCode_t GetBaseButtonCode( const ButtonCode_t code )
|
||||
{
|
||||
if ( IsJoystickButtonCode( code ) )
|
||||
{
|
||||
const int offset = ( code - JOYSTICK_FIRST_BUTTON ) % JOYSTICK_MAX_BUTTON_COUNT;
|
||||
return (ButtonCode_t)( JOYSTICK_FIRST_BUTTON + offset );
|
||||
}
|
||||
|
||||
if ( IsJoystickPOVCode( code ) )
|
||||
{
|
||||
const int offset = ( code - JOYSTICK_FIRST_POV_BUTTON ) % JOYSTICK_POV_BUTTON_COUNT;
|
||||
return (ButtonCode_t)( JOYSTICK_FIRST_POV_BUTTON + offset );
|
||||
}
|
||||
|
||||
if ( IsJoystickAxisCode( code ) )
|
||||
{
|
||||
const int offset = ( code - JOYSTICK_FIRST_AXIS_BUTTON ) % JOYSTICK_AXIS_BUTTON_COUNT;
|
||||
return (ButtonCode_t)( JOYSTICK_FIRST_AXIS_BUTTON + offset );
|
||||
}
|
||||
|
||||
return code;
|
||||
}
|
||||
|
||||
inline int GetJoystickForCode( const ButtonCode_t code )
|
||||
{
|
||||
if ( !IsJoystickCode( code ) )
|
||||
return 0;
|
||||
|
||||
if ( IsJoystickButtonCode( code ) )
|
||||
{
|
||||
const int offset = ( code - JOYSTICK_FIRST_BUTTON ) / JOYSTICK_MAX_BUTTON_COUNT;
|
||||
return offset;
|
||||
}
|
||||
if ( IsJoystickPOVCode( code ) )
|
||||
{
|
||||
const int offset = ( code - JOYSTICK_FIRST_POV_BUTTON ) / JOYSTICK_POV_BUTTON_COUNT;
|
||||
return offset;
|
||||
}
|
||||
if ( IsJoystickAxisCode( code ) )
|
||||
{
|
||||
const int offset = ( code - JOYSTICK_FIRST_AXIS_BUTTON ) / JOYSTICK_AXIS_BUTTON_COUNT;
|
||||
return offset;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
inline ButtonCode_t ButtonCodeToJoystickButtonCode( ButtonCode_t code, int nDesiredJoystick )
|
||||
{
|
||||
if ( !IsJoystickCode( code ) || nDesiredJoystick == 0 )
|
||||
return code;
|
||||
|
||||
nDesiredJoystick = clamp( nDesiredJoystick, 0, MAX_JOYSTICKS - 1 );
|
||||
code = GetBaseButtonCode( code );
|
||||
|
||||
// Now upsample it
|
||||
if ( IsJoystickButtonCode( code ) )
|
||||
{
|
||||
const int nOffset = code - JOYSTICK_FIRST_BUTTON;
|
||||
return JOYSTICK_BUTTON( nDesiredJoystick, nOffset );
|
||||
}
|
||||
|
||||
if ( IsJoystickPOVCode( code ) )
|
||||
{
|
||||
const int nOffset = code - JOYSTICK_FIRST_POV_BUTTON;
|
||||
return JOYSTICK_POV_BUTTON( nDesiredJoystick, nOffset );
|
||||
}
|
||||
|
||||
if ( IsJoystickAxisCode( code ) )
|
||||
{
|
||||
const int nOffset = code - JOYSTICK_FIRST_AXIS_BUTTON;
|
||||
return JOYSTICK_AXIS_BUTTON( nDesiredJoystick, nOffset );
|
||||
}
|
||||
|
||||
return code;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user