aboutsummaryrefslogtreecommitdiff
path: root/src/client/lua_api/gui/iguilabel.cpp
diff options
context:
space:
mode:
authorAlexander Pickering <alex@cogarr.net>2018-06-30 16:15:05 -0600
committerAlexander Pickering <alex@cogarr.net>2018-06-30 16:15:05 -0600
commited58795eaf03bdee0b1fae8d05ce5b86d17549f7 (patch)
tree065092f3e95bf74fdba541f6c5f7504757487d3d /src/client/lua_api/gui/iguilabel.cpp
parent45e61c74802af739736d33c82f27596b45987eee (diff)
downloadbrokengine-ed58795eaf03bdee0b1fae8d05ce5b86d17549f7.tar.gz
brokengine-ed58795eaf03bdee0b1fae8d05ce5b86d17549f7.tar.bz2
brokengine-ed58795eaf03bdee0b1fae8d05ce5b86d17549f7.zip
Warning-less build
All compile warning for -Wall have been fixed
Diffstat (limited to 'src/client/lua_api/gui/iguilabel.cpp')
-rw-r--r--src/client/lua_api/gui/iguilabel.cpp144
1 files changed, 56 insertions, 88 deletions
diff --git a/src/client/lua_api/gui/iguilabel.cpp b/src/client/lua_api/gui/iguilabel.cpp
index 7c00e84..dce1b15 100644
--- a/src/client/lua_api/gui/iguilabel.cpp
+++ b/src/client/lua_api/gui/iguilabel.cpp
@@ -13,89 +13,64 @@ extern "C" {
#include <irrlicht.h>
#include "../guiparts.hpp"
#include "iguielement.hpp"
+#include "iguilabel.hpp"
#include "../../callbackhandeler.hpp"
+#include <shared/lua_api/common.hpp>
using namespace irr;
using namespace gui;
-//IrrlichtDevice* guidevice;
-
-static LIGUIElement* checkiguilabel(lua_State* L, int index){
- void* ud = luaL_checkudata(L,index,"gui.iguilabel");
- luaL_argcheck(L,ud != NULL, index, "'gui.iguilabel' expected");
- return (LIGUIElement*) ud;
-}
-
-static LIGUIElement* checkiguilabel(lua_State* L){
- return checkiguilabel(L,1);
-}
+extern IrrlichtDevice* device;
-static bool iguilabelevent(irr::SEvent e){
- printf("Oh no! an iguilabel generated an event!");
- return false;
-}
+//IrrlichtDevice* guidevice;
+//static bool iguilabelevent(irr::SEvent e){
+ //printf("Oh no! an iguilabel generated an event!");
+ //return false;
+//}
+//gui.newguilabel({{sx,sy},{ex,ey}},"text"[,parent]) :: {guielement}
static int newiguilabel(lua_State* L){
- printf("Createing label!\n");
- int nargs = lua_gettop(L);
- //The position of the text
- int startx = luaL_optint(L,1,0);
- int starty = luaL_optint(L,2,0);
- int endx = luaL_optint(L,3,startx+100);
- int endy = luaL_optint(L,4,starty+100);
-
- //Label and tooltip
- wchar_t* label;
- const char* labelopt = luaL_optstring(L,5,"Label");
- int bls = strlen(labelopt);
- label = (wchar_t*)malloc(sizeof(wchar_t)*(bls));
- mbstowcs(label,labelopt,bls);
- printf("Got the string option\n");
-
- //If the element has a parrent
- int parent = 0;
- if(nargs >= 6){
- parent = luaL_optint(L,6,0);
- printf("got the parrent\n");
- }
-
-
- //Create the button
- IGUIEnvironment* env = guidevice->getGUIEnvironment();
- //Create the label
- IGUIStaticText* llabel = (IGUIStaticText*) env->addStaticText(label,core::rect<s32>(startx,starty,endx,endy),false,false, guielements[parent], gui_elenum++, false);
- printf("Created the button\n");
-
- //Register it's callback
- registerguicallback(llabel,EGET_ELEMENT_HOVERED,iguilabelevent);
-
- //Create it's lua representation
- LIGUIElement* ltext = (LIGUIElement*)lua_newuserdata(L, sizeof(LIGUIElement));
- int tref = luaL_ref(L,LUA_REGISTRYINDEX);
- iguielements[llabel] = tref;
- lua_rawgeti(L,LUA_REGISTRYINDEX,tref);//Put it back on the stack since luaL_ref pops the object.
-
- //Set it's metatable
- luaL_getmetatable(L, "gui.iguilabel");
- lua_setmetatable(L, -2);
-
- //Create the struct
- ltext->e = llabel;
- ltext->funcmap = hashmap_new();
- ltext->type = "iguilabel";
-
- //Free up anything made in this function
- free(label);
-
- //Put it on top and return it
- lua_rawgeti(L,LUA_REGISTRYINDEX,tref);
- return 1;
+ printf("Createing label!\n");
+ int nargs = lua_gettop(L);
+ IGUIElement* parent = NULL;
+ if(nargs == 3){
+ lua_getfield(L,-1,"guielement");//{{sx,sy},{ex,ey}},"text",{guielemtn=parent},parent
+ parent = (IGUIElement*)lua_touserdata(L,-1);
+ lua_pop(L,2);//{{sx,sy},{ex,ey}},"text"
+ }
+ //{{sx,sy},{ex,ey}},"text"
+
+ const char* text = lua_tostring(L,-1);//{{sx,sy},{ex,ey}},"text"
+ int bls = strlen(text);
+ wchar_t* text_w = (wchar_t*)malloc(sizeof(wchar_t)*bls);
+ mbstowcs(text_w,text,bls);
+ lua_pop(L,1);//{{sx,sy},{ex,ey}}
+
+ long sx, sy, ex, ey;
+ poprecti(L,&sx,&sy,&ex,&ey);//
+
+ IGUIEnvironment* env = device->getGUIEnvironment();
+ IGUIStaticText* statictext = env->addStaticText(
+ text_w,
+ core::rect<s32>(sx,sy,ex,ey),
+ false,
+ false,
+ parent,
+ -1,
+ false
+ );
+
+ lua_newtable(L); //{}
+ lua_pushlightuserdata(L,statictext);//{},*statictext
+ lua_setfield(L,-2,"guielement");//{guielement}
+ luaL_getmetatable(L,"gui.iguilabel");//{guielement},{m_guielement}
+ lua_setmetatable(L,-2);//{guielement}
+ registerguielement(L);
+ return 1;
}
static const luaL_reg iguilabel_f[] = {
- {"new", newiguilabel},
- {"gethandeler", guigethandeler},
- {"sethandeler", guisethandeler},
+ {"newlabel", newiguilabel},
{0,0},
};
@@ -106,23 +81,16 @@ static const luaL_reg iguilabel_m[] = {
{0, 0},
};
-int iguilabel_register(lua_State* L, IrrlichtDevice* d){
-
- luaL_newmetatable(L, "gui.iguilabel");
-
- luaL_register(L,"iguilabel",iguilabel_f);
-
- lua_pushstring(L,"__index");
- lua_pushstring(L,"gethandeler");
- lua_gettable(L,-3);
- lua_settable(L,-4);
+void iguilabel_register(lua_State* L){
- lua_pushstring(L,"__newindex");
- lua_pushstring(L,"sethandeler");
- lua_gettable(L,-3);
- lua_settable(L,-4);
+ luaL_newmetatable(L, "gui.iguilabel");//{m_gui.iguilabel}
+ lua_newtable(L);//{m_gui.iguilabel},{}
- luaL_register(L, NULL, iguilabel_m);
+ luaL_register(L,"iguilabel",iguilabel_m);//{m_gui.iguilabel},{guilabel}
+ lua_setfield(L,-2,"__index");//{m_gui.iguilabel}
+ lua_pop(L,1);
- return 1;
+ lua_getglobal(L,"gui");//{gui}
+ luaL_register(L, NULL,iguilabel_f);//{gui}
+ lua_pop(L,1);//
}