mirror of
https://github.com/love2d/love.git
synced 2026-08-16 00:02:12 +02:00
Make isDown accept a list of keys (issue #121)
This commit is contained in:
@@ -31,14 +31,15 @@ namespace sdl
|
||||
return "love.keyboard.sdl";
|
||||
}
|
||||
|
||||
bool Keyboard::isDown(Key key) const
|
||||
bool Keyboard::isDown(Key * keylist) const
|
||||
{
|
||||
SDLKey k;
|
||||
|
||||
if(keys.find(key, k))
|
||||
Uint8 * keystate = SDL_GetKeyState(0);
|
||||
|
||||
for (Key key = *keylist; key != KEY_MAX_ENUM; key = *(++keylist))
|
||||
{
|
||||
Uint8 * keystate = SDL_GetKeyState(0);
|
||||
return keystate[(unsigned)k] == 1;
|
||||
if (keys.find(key, k) && keystate[(unsigned)k] == 1)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace sdl
|
||||
* @param key A key identifier.
|
||||
* @return boolean
|
||||
**/
|
||||
bool isDown(Key key) const;
|
||||
bool isDown(Key * keylist) const;
|
||||
|
||||
/**
|
||||
* Enables key repeating.
|
||||
@@ -78,4 +78,4 @@ namespace sdl
|
||||
} // keyboard
|
||||
} // love
|
||||
|
||||
#endif // LOVE_KEYBOARD_SDL_KEYBOARD_H
|
||||
#endif // LOVE_KEYBOARD_SDL_KEYBOARD_H
|
||||
|
||||
@@ -31,16 +31,18 @@ namespace sdl
|
||||
int w_isDown(lua_State * L)
|
||||
{
|
||||
Keyboard::Key k;
|
||||
|
||||
if(Keyboard::getConstant(luaL_checkstring(L, 1), k))
|
||||
unsigned int num = lua_gettop(L);
|
||||
Keyboard::Key * keylist = new Keyboard::Key[num+1];
|
||||
unsigned int counter = 0;
|
||||
|
||||
for (unsigned int i = 0; i < num; i++)
|
||||
{
|
||||
luax_pushboolean(L, instance->isDown(k));
|
||||
if(Keyboard::getConstant(luaL_checkstring(L, i+1), k))
|
||||
keylist[counter++] = k;
|
||||
}
|
||||
else
|
||||
{
|
||||
luax_pushboolean(L, false);
|
||||
}
|
||||
|
||||
keylist[counter] = Keyboard::KEY_MAX_ENUM;
|
||||
|
||||
luax_pushboolean(L, instance->isDown(keylist));
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user