aboutsummaryrefslogtreecommitdiff
path: root/src/client/lua_api/gui/iguielement.cpp
diff options
context:
space:
mode:
authorAlexander <alex@cogarr.net>2019-02-10 18:16:04 -0500
committerAlexander <alex@cogarr.net>2019-02-10 18:16:04 -0500
commit83a85531ae789e2f30da2379990899f815f53ff1 (patch)
tree81140ea86f6e3d7808b218597874ea927555ef0d /src/client/lua_api/gui/iguielement.cpp
parent1482e03dd238643ff47278e207e6450f14011acf (diff)
downloadbrokengine-83a85531ae789e2f30da2379990899f815f53ff1.tar.gz
brokengine-83a85531ae789e2f30da2379990899f815f53ff1.tar.bz2
brokengine-83a85531ae789e2f30da2379990899f815f53ff1.zip
Added new element, added server-specific code for networking
Added a new element for client gui: iguicombobox Added a part of the engine specifically for the server so server is no longer just a stripped down client
Diffstat (limited to 'src/client/lua_api/gui/iguielement.cpp')
-rw-r--r--src/client/lua_api/gui/iguielement.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/client/lua_api/gui/iguielement.cpp b/src/client/lua_api/gui/iguielement.cpp
index 5c51c15..af9d234 100644
--- a/src/client/lua_api/gui/iguielement.cpp
+++ b/src/client/lua_api/gui/iguielement.cpp
@@ -27,6 +27,7 @@ using namespace irr;
using namespace core;
using namespace gui;
+extern IrrlichtDevice *device;
/***
Move an element (by an offset) from it's current position
@function guielement:move()
@@ -145,8 +146,9 @@ int setiguitext(lua_State* L){
IGUIElement* el = (IGUIElement*)lua_touserdata(L,-1);//{guielement},ud_iguielement
lua_pop(L,2);
int textlen = strlen(text);
- wchar_t* wtext = (wchar_t*)malloc(sizeof(wchar_t)*textlen);
+ wchar_t* wtext = (wchar_t*)malloc(sizeof(wchar_t)*textlen + 1);//+1 for null?
mbstowcs(wtext,text,textlen);
+ wtext[textlen] = '\0';
el->setText(wtext);
free(wtext);
return 0;
@@ -198,6 +200,21 @@ int removeiguielement(lua_State* L){
return 0;
}
+/***
+Focuses a gui element.
+Will cause a ELEMENT_FOCUS_LOST followed by an ELEMENT_FOCUSED event.
+If either events are trapped/returned from, then the focus will not change.
+@function iguielement:focus()
+*/
+//focus({self})
+int focus(lua_State *L){
+ lua_getfield(L,-1,"guielement");
+ IGUIElement *ele = (IGUIElement*)lua_touserdata(L,-1);
+ device->getGUIEnvironment()->setFocus(ele);
+ lua_pop(L,2);
+ return 0;
+}
+
class guicallback{
private:
@@ -250,5 +267,6 @@ extern const luaL_reg iguielement_m[] = {
{"settext", setiguitext},
{"gettext", getiguitext},
{"remove", removeiguielement},
+ {"focus", focus},
{NULL, NULL}
};