diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs index d635b8785..8771dd25f 100644 --- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs +++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs @@ -321,23 +321,7 @@ namespace Ryujinx.Input.SDL2 return (0.0f, 0.0f); } - short stickX; - short stickY; - - if (inputId == StickInputId.Left) - { - stickX = SDL_GameControllerGetAxis(_gamepadHandle, SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTX); - stickY = SDL_GameControllerGetAxis(_gamepadHandle, SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTY); - } - else if (inputId == StickInputId.Right) - { - stickX = SDL_GameControllerGetAxis(_gamepadHandle, SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTX); - stickY = SDL_GameControllerGetAxis(_gamepadHandle, SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTY); - } - else - { - throw new NotSupportedException($"Unsupported stick {inputId}"); - } + (short stickX, short stickY) = GetStickXY(inputId); float resultX = ConvertRawStickValue(stickX); float resultY = -ConvertRawStickValue(stickY); @@ -368,6 +352,18 @@ namespace Ryujinx.Input.SDL2 return (resultX, resultY); } + private (short, short) GetStickXY(StickInputId inputId) => + inputId switch + { + StickInputId.Left => ( + SDL_GameControllerGetAxis(_gamepadHandle, SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTX), + SDL_GameControllerGetAxis(_gamepadHandle, SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTY)), + StickInputId.Right => ( + SDL_GameControllerGetAxis(_gamepadHandle, SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTX), + SDL_GameControllerGetAxis(_gamepadHandle, SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTY)), + _ => throw new NotSupportedException($"Unsupported stick {inputId}") + }; + public bool IsPressed(GamepadButtonInputId inputId) { if (inputId == GamepadButtonInputId.LeftTrigger)