aboutsummaryrefslogtreecommitdiff
path: root/src/client/lua_api/gui/iguibutton.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/lua_api/gui/iguibutton.cpp')
-rw-r--r--src/client/lua_api/gui/iguibutton.cpp112
1 files changed, 56 insertions, 56 deletions
diff --git a/src/client/lua_api/gui/iguibutton.cpp b/src/client/lua_api/gui/iguibutton.cpp
index 86e6db8..25a30ed 100644
--- a/src/client/lua_api/gui/iguibutton.cpp
+++ b/src/client/lua_api/gui/iguibutton.cpp
@@ -24,53 +24,53 @@ using namespace gui;
extern IrrlichtDevice* device;
char lhashkey[20];
-static LIGUIElement* checkiguibutton(lua_State* L, int index){
- void* ud = luaL_checkudata(L,index,"gui.iguibutton");
- luaL_argcheck(L,ud != NULL, index, "'gui.iguibutton' expected");
- return (LIGUIElement*) ud;
-}
+//static LIGUIElement* checkiguibutton(lua_State* L, int index){
+ //void* ud = luaL_checkudata(L,index,"gui.iguibutton");
+ //luaL_argcheck(L,ud != NULL, index, "'gui.iguibutton' expected");
+ //return (LIGUIElement*) ud;
+//}
-static LIGUIElement* checkiguibutton(lua_State* L){
- return checkiguibutton(L,1);
-}
+//static LIGUIElement* checkiguibutton(lua_State* L){
+ //return checkiguibutton(L,1);
+//}
//The callback even for all gui buttons
-static bool iguibuttonevent(irr::SEvent e){
- IGUIElement* caller = (IGUIElement*)e.GUIEvent.Caller;
- printf("Some gui something somewhere was pressed\n");
- if(iguielements.find(caller) != iguielements.end()){
- printf("I know what reference is linked to that button: %d!\n",iguielements[caller]);
- int ref = iguielements[caller];
- EGUI_EVENT_TYPE etype = e.GUIEvent.EventType;
- if(etype == EGET_BUTTON_CLICKED){
- lua_rawgeti(tL,LUA_REGISTRYINDEX,ref);
- printf("getting raw, the thing on the top of stack is a %s\n",luaL_typename(tL,-1));
- LIGUIElement* tbut = checkiguibutton(tL,-1);
- int hashmapresponse;
- char* hashkey = (char*)"onpress";
- int terror = hashmap_get(tbut->funcmap,hashkey,(void**)&hashmapresponse);
- if(terror == MAP_OK){
- lua_rawgeti(tL,LUA_REGISTRYINDEX,hashmapresponse);
- lua_call(tL,0,0);
- }else{
- printf("Tried to call onpress on something that dosen't have onpress\n");
- }
- }else if(etype == EGET_ELEMENT_HOVERED){
- printf("Trying to call onhovered!\n");
- lua_rawgeti(tL,LUA_REGISTRYINDEX,ref);
- LIGUIElement* tbut = (LIGUIElement*)lua_touserdata(tL,-1);
- int hashmapresponse;
- int terror = hashmap_get(tbut->funcmap,(char*)"onhovered",(void**)&hashmapresponse);
- if(terror == MAP_OK){
- lua_rawgeti(tL,LUA_REGISTRYINDEX,hashmapresponse);
- lua_call(tL,0,0);
- }
- }
- }
- return false;
-}
-
-//gui.newbutton({x,y},{width,height},text[,parent])
+//static bool iguibuttonevent(irr::SEvent e){
+ //IGUIElement* caller = (IGUIElement*)e.GUIEvent.Caller;
+ //printf("Some gui something somewhere was pressed\n");
+ //if(iguielements.find(caller) != iguielements.end()){
+ //printf("I know what reference is linked to that button: %d!\n",iguielements[caller]);
+ //int ref = iguielements[caller];
+ //EGUI_EVENT_TYPE etype = e.GUIEvent.EventType;
+ //if(etype == EGET_BUTTON_CLICKED){
+ //lua_rawgeti(tL,LUA_REGISTRYINDEX,ref);
+ //printf("getting raw, the thing on the top of stack is a %s\n",luaL_typename(tL,-1));
+ //LIGUIElement* tbut = checkiguibutton(tL,-1);
+ //int hashmapresponse;
+ //char* hashkey = (char*)"onpress";
+ //int terror = hashmap_get(tbut->funcmap,hashkey,(void**)&hashmapresponse);
+ //if(terror == MAP_OK){
+ //lua_rawgeti(tL,LUA_REGISTRYINDEX,hashmapresponse);
+ //lua_call(tL,0,0);
+ //}else{
+ //printf("Tried to call onpress on something that dosen't have onpress\n");
+ //}
+ //}else if(etype == EGET_ELEMENT_HOVERED){
+ //printf("Trying to call onhovered!\n");
+ //lua_rawgeti(tL,LUA_REGISTRYINDEX,ref);
+ //LIGUIElement* tbut = (LIGUIElement*)lua_touserdata(tL,-1);
+ //int hashmapresponse;
+ //int terror = hashmap_get(tbut->funcmap,(char*)"onhovered",(void**)&hashmapresponse);
+ //if(terror == MAP_OK){
+ //lua_rawgeti(tL,LUA_REGISTRYINDEX,hashmapresponse);
+ //lua_call(tL,0,0);
+ //}
+ //}
+ //}
+ //return false;
+//}
+
+//gui.newbutton({{sx,sy},{ex,ey}},"text"[,parent])
static int newiguibutton(lua_State* L){
printf("Createing gui button!\n");
@@ -86,19 +86,21 @@ static int newiguibutton(lua_State* L){
const wchar_t* label_w = irr::core::stringw(label_c).c_str();
lua_pop(L,1);
- long x,y,w,h;
- popvector2i(L,&w,&h);
- popvector2i(L,&x,&y);
+ long sx,sy,ex,ey;
+ poprecti(L,&sx,&sy,&ex,&ey);
- rect<s32> dim = rect<s32>(x,y,x+w,y+h);
+ rect<s32> dim = rect<s32>(sx,sy,ex,ey);
IGUIEnvironment* env = device->getGUIEnvironment();
IGUIButton* but = env->addButton(dim,parent,-2,label_w,L"");
- lua_pushlightuserdata(L,but);//
- luaL_getmetatable(L,"gui.iguibutton");
- lua_setmetatable(L,-2);
-
- registerguicallback(but,EGET_BUTTON_CLICKED,iguibuttonevent);
+ lua_newtable(L);//{}
+ lua_pushlightuserdata(L,but);//{},ud_iguibutton
+ lua_setfield(L,-2,"guielement");//{guielement}
+ luaL_getmetatable(L,"gui.iguibutton");//{guielement},{m_iguibutton}
+ lua_setmetatable(L,-2);//{guielement}
+
+ setelementcallback(L,EGET_BUTTON_CLICKED,"onClicked");//
+
printf("Finished registering callback\n");
return 1;
@@ -106,8 +108,6 @@ static int newiguibutton(lua_State* L){
static const luaL_reg iguibutton_f[] = {
{"new", newiguibutton},
- {"gethandeler", guigethandeler},
- {"sethandeler", guisethandeler},
{0,0},
};
@@ -118,7 +118,7 @@ static const luaL_reg iguibutton_m[] = {
{0,0},
};
-int iguibutton_register(lua_State* L){
+void iguibutton_register(lua_State* L){
tL = L;
luaL_newmetatable(L, "gui.iguibutton");//{m_iguibutton}