mirror of
https://github.com/love2d/love.git
synced 2026-08-18 19:54:22 +02:00
Add Joystick:getGamepadType.
Return value is "unknown", "xbox360", "xboxone", "ps3", "ps4", "ps5", "switchpro", or "virtual".
This commit is contained in:
@@ -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())
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user