diff options
Diffstat (limited to 'src/client/callbackhandeler.cpp')
| -rw-r--r-- | src/client/callbackhandeler.cpp | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/src/client/callbackhandeler.cpp b/src/client/callbackhandeler.cpp index f39f4ca..5e5e407 100644 --- a/src/client/callbackhandeler.cpp +++ b/src/client/callbackhandeler.cpp @@ -15,6 +15,8 @@ using namespace irr; using namespace gui; using namespace std; +extern lua_State* L; + std::map<IGUIElement*,std::map<EGUI_EVENT_TYPE, void(*)(irr::SEvent)> > guifuncs; //IrrlichtDevice* device; @@ -31,24 +33,33 @@ bool GlobalEventReceiver::OnEvent(const SEvent& e){ 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...\n"); - if ( - guifuncs.find(caller) != guifuncs.end() && - guifuncs[caller].find(get) != guifuncs[caller].end()){ - guifuncs[caller][get](e); - printf("sucessfully called a gui event\n"); - return true; - } - return false; - break; + IGUIElement* caller = e.GUIEvent.Caller; + EGUI_EVENT_TYPE get = e.GUIEvent.EventType; + printf("detected gui event...\n"); + bool callerregistered = guifuncs.find(caller) != guifuncs.end(); + bool callerhasfunc = guifuncs[caller].find(get) != guifuncs[caller].end(); + if (callerregistered && callerhasfunc){ + guifuncs[caller][get](e); + printf("sucessfully called a gui event\n"); + return true; + } + return false; + break; } - case EET_MOUSE_INPUT_EVENT:{ - - } + 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"); + //printf("Called an unknown event\n"); return false; } } |
