Commits

Alex Szpakowski committed 6a0413b

Replaced love.joystick.getJoystick with love.joystick.getJoysticks (returns a table of all connected joysticks), and renamed Joystick:getIndex to Joystick:getConnectedIndex

Comments (0)

Files changed (3)

src/modules/joystick/sdl/wrap_Joystick.cpp

 	{ "isGamepadDown", w_Joystick_isGamepadDown },
 
 	// From wrap_JoystickModule.
-	{ "getIndex", w_getIndex },
+	{ "getConnectedIndex", w_getIndex },
 	{ "getGamepadMapping", w_getGamepadMapping },
 	{ 0, 0 },
 };

src/modules/joystick/sdl/wrap_JoystickModule.cpp

 
 static JoystickModule *instance = 0;
 
-int w_getJoystick(lua_State *L)
+int w_getJoysticks(lua_State *L)
 {
-	int index = luaL_checkint(L, 1) - 1;
-	love::joystick::Joystick *stick = instance->getJoystick(index);
+	int stickcount = instance->getJoystickCount();
+	lua_createtable(L, stickcount, 0);
 
-	if (!stick)
-		return luaL_error(L, "Invalid joystick index");
+	for (int i = 0; i < stickcount; i++)
+	{
+		love::joystick::Joystick *stick = instance->getJoystick(i);
+		stick->retain();
+		luax_newtype(L, "Joystick", JOYSTICK_JOYSTICK_T, (void *) stick);
+		lua_rawseti(L, -2, i + 1);
+	}
 
-	stick->retain();
-	luax_newtype(L, "Joystick", JOYSTICK_JOYSTICK_T, (void *) stick);
-	
 	return 1;
 }
 
 // List of functions to wrap.
 static const luaL_Reg functions[] =
 {
-	{ "getJoystick", w_getJoystick },
-	{ "getIndex", w_getIndex },
+	{ "getJoysticks", w_getJoysticks },
+//	{ "getIndex", w_getIndex },
 	{ "getJoystickCount", w_getJoystickCount },
 	{ "isGamepad", w_isGamepad },
 	{ "setGamepadMapping", w_setGamepadMapping },

src/modules/joystick/sdl/wrap_JoystickModule.h

 namespace sdl
 {
 
-int w_getJoystick(lua_State *L);
+int w_getJoysticks(lua_State *L);
 int w_getIndex(lua_State *L);
 int w_getJoystickCount(lua_State *L);
 int w_isGamepad(lua_State *L);