diff options
Diffstat (limited to 'src/client/callbackhandeler.cpp')
| -rw-r--r-- | src/client/callbackhandeler.cpp | 61 |
1 files changed, 38 insertions, 23 deletions
diff --git a/src/client/callbackhandeler.cpp b/src/client/callbackhandeler.cpp index 59b5bee..c548624 100644 --- a/src/client/callbackhandeler.cpp +++ b/src/client/callbackhandeler.cpp @@ -30,32 +30,47 @@ GlobalEventReceiver::GlobalEventReceiver(IrrlichtDevice* d){ //device = d; } bool GlobalEventReceiver::OnEvent(const SEvent& e){ - EEVENT_TYPE type = e.EventType; + EEVENT_TYPE type = e.EventType; switch (type){ case EET_GUI_EVENT:{ - IGUIElement* caller = e.GUIEvent.Caller; - EGUI_EVENT_TYPE get = e.GUIEvent.EventType; - printf("detected gui event: %d\n",get); - bool callerregistered = guifuncs.find(caller) != guifuncs.end(); - bool callerhasfunc = guifuncs[caller].find(get) != guifuncs[caller].end(); - if (callerregistered && callerhasfunc){ - return guifuncs[caller][get](e); - } - return false; - break; + IGUIElement* caller = e.GUIEvent.Caller; + EGUI_EVENT_TYPE get = e.GUIEvent.EventType; + printf("detected gui event: %d\n",get); + bool callerregistered = guifuncs.find(caller) != guifuncs.end(); + bool callerhasfunc = guifuncs[caller].find(get) != guifuncs[caller].end(); + if (callerregistered && callerhasfunc){ + return guifuncs[caller][get](e); + } + return false; + break; + } + case EET_MOUSE_INPUT_EVENT:{ + SEvent::SMouseInput se = e.MouseInput; + //printf("X: %d Y: %d\n",se.X, se.Y); + + lua_getglobal(L,"GAME"); + lua_getfield(L,-1,"onMouseMove"); + if(!lua_isnil(L,-1)){ + lua_pushnumber(L,se.X); + lua_pushnumber(L,se.Y); + lua_call(L,2,0); + } + break; + } + case EET_KEY_INPUT_EVENT:{ + printf("Got input event\n"); + SEvent::SKeyInput se = e.KeyInput; + lua_getglobal(L,"GAME");//{} + lua_getfield(L,-1,"onKeyDown");//{},()|nil + if(!lua_isnil(L,-1)){ + lua_pushnumber(L,se.Key); + lua_pushboolean(L,se.PressedDown); + lua_pushboolean(L,se.Control); + lua_pushboolean(L,se.Shift); + lua_call(L,4,0); + } + break; } - case EET_MOUSE_INPUT_EVENT:{ - SEvent::SMouseInput se = e.MouseInput; - //printf("X: %d Y: %d\n",se.X, se.Y); - - lua_getglobal(L,"GAME"); - lua_getfield(L,-1,"onMouseMove"); - if(!lua_isnil(L,-1)){ - lua_pushnumber(L,se.X); - lua_pushnumber(L,se.Y); - lua_call(L,2,0); - } - } default: //printf("Called an unknown event\n"); return false; |
