Browse Source

Merge pull request #1831 from Er2ch/sdl-2.24.0

SDL 2.24.0 support
slime73 3 years ago
parent
commit
48b791eb3e

+ 14 - 10
src/modules/joystick/Joystick.cpp

@@ -58,16 +58,20 @@ STRINGMAP_CLASS_END(Joystick, Joystick::Hat, Joystick::HAT_MAX_ENUM, hat)
 
 STRINGMAP_CLASS_BEGIN(Joystick, Joystick::GamepadType, Joystick::GAMEPAD_TYPE_MAX_ENUM, gamepadType)
 {
-	{ "unknown",    Joystick::GAMEPAD_TYPE_UNKNOWN             },
-	{ "xbox360",    Joystick::GAMEPAD_TYPE_XBOX360             },
-	{ "xboxone",    Joystick::GAMEPAD_TYPE_XBOXONE             },
-	{ "ps3",        Joystick::GAMEPAD_TYPE_PS3                 },
-	{ "ps4",        Joystick::GAMEPAD_TYPE_PS4                 },
-	{ "ps5",        Joystick::GAMEPAD_TYPE_PS5                 },
-	{ "switchpro",  Joystick::GAMEPAD_TYPE_NINTENDO_SWITCH_PRO },
-	{ "amazonluna", Joystick::GAMEPAD_TYPE_AMAZON_LUNA         },
-	{ "stadia",     Joystick::GAMEPAD_TYPE_STADIA              },
-	{ "virtual",    Joystick::GAMEPAD_TYPE_VIRTUAL             },
+	{ "unknown",      Joystick::GAMEPAD_TYPE_UNKNOWN             },
+	{ "xbox360",      Joystick::GAMEPAD_TYPE_XBOX360             },
+	{ "xboxone",      Joystick::GAMEPAD_TYPE_XBOXONE             },
+	{ "ps3",          Joystick::GAMEPAD_TYPE_PS3                 },
+	{ "ps4",          Joystick::GAMEPAD_TYPE_PS4                 },
+	{ "ps5",          Joystick::GAMEPAD_TYPE_PS5                 },
+	{ "switchpro",    Joystick::GAMEPAD_TYPE_NINTENDO_SWITCH_PRO },
+	{ "amazonluna",   Joystick::GAMEPAD_TYPE_AMAZON_LUNA         },
+	{ "stadia",       Joystick::GAMEPAD_TYPE_STADIA              },
+	{ "virtual",      Joystick::GAMEPAD_TYPE_VIRTUAL             },
+	{ "shield",       Joystick::GAMEPAD_TYPE_NVIDIA_SHIELD       },
+	{ "joyconleft",   Joystick::GAMEPAD_TYPE_JOYCON_LEFT         },
+	{ "joyconright",  Joystick::GAMEPAD_TYPE_JOYCON_RIGHT        },
+	{ "joyconpair",   Joystick::GAMEPAD_TYPE_JOYCON_PAIR         },
 }
 STRINGMAP_CLASS_END(Joystick, Joystick::GamepadType, Joystick::GAMEPAD_TYPE_MAX_ENUM, gamepadType)
 

+ 4 - 0
src/modules/joystick/Joystick.h

@@ -68,6 +68,10 @@ public:
 		GAMEPAD_TYPE_AMAZON_LUNA,
 		GAMEPAD_TYPE_STADIA,
 		GAMEPAD_TYPE_VIRTUAL,
+		GAMEPAD_TYPE_NVIDIA_SHIELD,
+		GAMEPAD_TYPE_JOYCON_LEFT,
+		GAMEPAD_TYPE_JOYCON_RIGHT,
+		GAMEPAD_TYPE_JOYCON_PAIR,
 		GAMEPAD_TYPE_MAX_ENUM
 	};
 

+ 7 - 1
src/modules/joystick/sdl/Joystick.cpp

@@ -260,6 +260,12 @@ Joystick::GamepadType Joystick::getGamepadType() const
 #if SDL_VERSION_ATLEAST(2, 0, 16)
 		case SDL_CONTROLLER_TYPE_AMAZON_LUNA: return GAMEPAD_TYPE_AMAZON_LUNA;
 		case SDL_CONTROLLER_TYPE_GOOGLE_STADIA: return GAMEPAD_TYPE_STADIA;
+#endif
+#if SDL_VERSION_ATLEAST(2, 24, 0)
+		case SDL_CONTROLLER_TYPE_NVIDIA_SHIELD: return GAMEPAD_TYPE_NVIDIA_SHIELD;
+		case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT: return GAMEPAD_TYPE_JOYCON_LEFT;
+		case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT: return GAMEPAD_TYPE_JOYCON_RIGHT;
+		case SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR: return GAMEPAD_TYPE_JOYCON_PAIR;
 #endif
 	}
 #endif
@@ -509,7 +515,7 @@ bool Joystick::setVibration(float left, float right, float duration)
 	Uint32 length = SDL_HAPTIC_INFINITY;
 	if (duration >= 0.0f)
 	{
-		float maxduration = std::numeric_limits<Uint32>::max() / 1000.0f;
+		float maxduration = (float) (std::numeric_limits<Uint32>::max() / 1000.0);
 		length = Uint32(std::min(duration, maxduration) * 1000);
 	}