diff options
Diffstat (limited to 'src/lua/modules/event/event.cpp')
-rw-r--r-- | src/lua/modules/event/event.cpp | 50 |
1 files changed, 35 insertions, 15 deletions
diff --git a/src/lua/modules/event/event.cpp b/src/lua/modules/event/event.cpp index 0fb438f..be54cf4 100644 --- a/src/lua/modules/event/event.cpp +++ b/src/lua/modules/event/event.cpp @@ -16,7 +16,7 @@ namespace lua */ static int l_event_poll(lua_State *L) { - // table to store events + /* table to store events */ luax_newtable(L); static Event e; int i = 1; @@ -35,14 +35,10 @@ namespace lua break; case EventType::KEY_DOWN: - luax_setfieldstring(L, "type", "KeyDown"); - luax_setfieldstring(L, "key", getKeyName(e.key.keysym.sym)); - break; - case EventType::KEY_UP: - luax_setfieldstring(L, "type", "KeyUp"); + luax_setfieldstring(L, "type", EventType::KEY_DOWN ? "KeyDown" : "KeyUp"); luax_setfieldstring(L, "key", getKeyName(e.key.keysym.sym)); - break; + break; case EventType::MOUSE_MOTION: luax_setfieldstring(L, "type", "MouseMotion"); @@ -51,18 +47,12 @@ namespace lua break; case EventType::MOUSE_BUTTON_DOWN: - luax_setfieldstring(L, "type", "MouseButtonDown"); - luax_setfieldstring(L, "button", getButtonName(e.button.button)); - luax_setfieldnumber(L, "x", e.button.x); - luax_setfieldnumber(L, "y", e.button.y); - break; - case EventType::MOUSE_BUTTON_UP: - luax_setfieldstring(L, "type", "MouseButtonUp"); + luax_setfieldstring(L, "type", e.type == EventType::MOUSE_BUTTON_DOWN ? "MouseButtonDown" : "MouseButtonUp"); luax_setfieldstring(L, "button", getButtonName(e.button.button)); luax_setfieldnumber(L, "x", e.button.x); luax_setfieldnumber(L, "y", e.button.y); - break; + break; case EventType::MOUSE_WHEEL: luax_setfieldstring(L, "type", "Wheel"); @@ -80,6 +70,36 @@ namespace lua luax_setfieldstring(L, "y", "None"); break; + case EventType::JOYBUTTONDOWN: + case EventType::JOYBUTTONUP: + luax_setfieldstring(L, "type", e.type == EventType::JOYBUTTONDOWN ? "JoyButtonDown" : "JoyButtonUp"); + luax_setfieldinteger(L, "which", e.jbutton.which); + luax_setfieldstring(L, "button", input::getJoyButtonName(e.jbutton.button)); + break; + + case EventType::JOYAXISMOTION: + luax_setfieldstring(L, "type", "JoyAxisMotion"); + luax_setfieldinteger(L, "which", e.jaxis.which); + luax_setfieldfstring(L, "axis", input::getJoyAxisName(e.jaxis.axis)); + break; + + case EventType::JOYBALLMOTION: + case EventType::JOYHATMOTION: + + case EventType::JOYDEVICEADDED: + case EventType::JOYDEVICEREMOVED: + luax_setfieldfstring(L, "type", e.type == EventType::JOYDEVICEADDED ? "JoyDeviceAdded" : "JoyDeviceRemoved"); + luax_setfieldinteger(L, "which", e.jdevice.which); + break; + + //https://stackoverflow.com/questions/50022316/what-is-sdl-joystick-and-what-is-sdl-gamecontroller-what-are-the-relationships + case EventType::CONTROLLERBUTTONDOWN: + case EventType::CONTROLLERBUTTONUP: + + + case EventType::CONTROLLERAXISMOTION: + + default: /* ignore other events */ luax_pop(L, 1); // pop table out |