Also use KeyDown for gamepads, add player argument

This commit is contained in:
spherallic 2023-01-16 22:45:16 +01:00
parent be3e7e7edf
commit 92b5e32127
2 changed files with 13 additions and 14 deletions

View file

@ -2302,21 +2302,16 @@ boolean G_LuaResponder(event_t *ev)
{ {
boolean cancelled = false; boolean cancelled = false;
if (ev->type == ev_keydown) switch (ev->type)
{ {
cancelled = LUA_HookKey(ev, HOOK(KeyDown)); case ev_keydown: cancelled = LUA_HookKey(ev, HOOK(KeyDown)); break;
LUA_InvalidateUserdata(ev); case ev_keyup: cancelled = LUA_HookKey(ev, HOOK(KeyUp)); break;
case ev_gamepad_down: cancelled = LUA_HookGamepadButton(ev, HOOK(GamepadButtonDown)) | LUA_HookKey(ev, HOOK(KeyDown)); break;
case ev_gamepad_up: cancelled = LUA_HookGamepadButton(ev, HOOK(GamepadButtonUp)) | LUA_HookKey(ev, HOOK(KeyUp)); break;
default: break;
} }
else if (ev->type == ev_keyup)
{
cancelled = LUA_HookKey(ev, HOOK(KeyUp));
LUA_InvalidateUserdata(ev);
}
else if (ev->type == ev_gamepad_down)
cancelled = LUA_HookGamepadButton(ev, HOOK(GamepadButtonDown));
else if (ev->type == ev_gamepad_up)
cancelled = LUA_HookGamepadButton(ev, HOOK(GamepadButtonUp));
LUA_InvalidateUserdata(ev);
return cancelled; return cancelled;
} }

View file

@ -169,9 +169,13 @@ static luaL_Reg lib[] = {
static int lib_getGameKeyDown(lua_State *L) static int lib_getGameKeyDown(lua_State *L)
{ {
int i = luaL_checkinteger(L, 2); int i = luaL_checkinteger(L, 2);
int p = luaL_optinteger(L, 3, 0);
if (i < 0 || i >= NUMINPUTS) if (i < 0 || i >= NUMINPUTS)
return luaL_error(L, "Key index %d out of range (0 - %d)", i, NUMINPUTS-1); return luaL_error(L, "Key index %d out of range (0 - %d)", i, NUMINPUTS-1);
lua_pushboolean(L, G_CheckKeyDown(0, i, false) || G_CheckKeyDown(1, i, false)); if (p > 0)
lua_pushboolean(L, G_CheckKeyDown(p-1, i, false));
else
lua_pushboolean(L, G_CheckKeyDown(0, i, false) | G_CheckKeyDown(1, i, false));
return 1; return 1;
} }