Add Joystick:getGamepadType.

Return value is "unknown", "xbox360", "xboxone", "ps3", "ps4", "ps5", "switchpro", or "virtual".
This commit is contained in:
Alex Szpakowski
2021-02-14 14:40:45 -04:00
parent 994cec9ee8
commit 1e27b1d6ed
5 changed files with 107 additions and 107 deletions
+24
View File
@@ -215,6 +215,30 @@ bool Joystick::isGamepad() const
return controller != nullptr;
}
Joystick::GamepadType Joystick::getGamepadType() const
{
if (controller == nullptr)
return GAMEPAD_TYPE_UNKNOWN;
#if SDL_VERSION_ATLEAST(2, 0, 12)
switch (SDL_GameControllerGetType(controller))
{
case SDL_CONTROLLER_TYPE_UNKNOWN: return GAMEPAD_TYPE_UNKNOWN;
case SDL_CONTROLLER_TYPE_XBOX360: return GAMEPAD_TYPE_XBOX360;
case SDL_CONTROLLER_TYPE_XBOXONE: return GAMEPAD_TYPE_XBOXONE;
case SDL_CONTROLLER_TYPE_PS3: return GAMEPAD_TYPE_PS3;
case SDL_CONTROLLER_TYPE_PS4: return GAMEPAD_TYPE_PS4;
case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO: return GAMEPAD_TYPE_NINTENDO_SWITCH_PRO;
#if SDL_VERSION_ATLEAST(2, 0, 14)
case SDL_CONTROLLER_TYPE_VIRTUAL: return GAMEPAD_TYPE_VIRTUAL;
case SDL_CONTROLLER_TYPE_PS5: return GAMEPAD_TYPE_PS5;
#endif
}
#endif
return GAMEPAD_TYPE_UNKNOWN;
}
float Joystick::getGamepadAxis(love::joystick::Joystick::GamepadAxis axis) const
{
if (!isConnected() || !isGamepad())
+2
View File
@@ -64,6 +64,8 @@ public:
bool openGamepad(int deviceindex) override;
bool isGamepad() const override;
GamepadType getGamepadType() const override;
float getGamepadAxis(GamepadAxis axis) const override;
bool isGamepadDown(const std::vector<GamepadButton> &blist) const override;