aboutsummaryrefslogtreecommitdiff
path: root/src/lua/modules/event/event.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lua/modules/event/event.cpp')
-rw-r--r--src/lua/modules/event/event.cpp50
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