From 39d10e03df3290d60031a6aedf4b53eb5a04e216 Mon Sep 17 00:00:00 2001 From: "M. Liebmann" Date: Mon, 14 Sep 2015 17:11:40 +0200 Subject: [PATCH] CLuaInstance: Add script function 'setActive' to enable or disable... ...individual menu items. - Set Lua api version to 1.2 --- src/gui/luainstance.cpp | 23 +++++++++++++++++++++++ src/gui/luainstance.h | 3 ++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/gui/luainstance.cpp b/src/gui/luainstance.cpp index cbb48298a..bce5ba23f 100644 --- a/src/gui/luainstance.cpp +++ b/src/gui/luainstance.cpp @@ -1050,6 +1050,7 @@ void CLuaInstance::MenuRegister(lua_State *L) { "addItem", CLuaInstance::MenuAddItem }, { "exec", CLuaInstance::MenuExec }, { "hide", CLuaInstance::MenuHide }, + { "setActive", CLuaInstance::MenuSetActive }, { "__gc", CLuaInstance::MenuDelete }, { NULL, NULL } }; @@ -1272,6 +1273,28 @@ int CLuaInstance::MenuAddKey(lua_State *L) return 0; } +int CLuaInstance::MenuSetActive(lua_State *L) +{ + CLuaMenu *m = MenuCheck(L, 1); + if (!m) + return 0; + lua_assert(lua_istable(L, 2)); + + lua_Integer id; tableLookup(L, "item", id); + bool activ; tableLookup(L, "activ", activ); + + CMenuItem* item = NULL; + for (itemmap_iterator_t it = m->itemmap.begin(); it != m->itemmap.end(); ++it) { + if (it->first == id) { + item = it->second; + break; + } + } + if (item) + item->setActive(activ); + return 0; +} + int CLuaInstance::MenuAddItem(lua_State *L) { CLuaMenu *m = MenuCheck(L, 1); diff --git a/src/gui/luainstance.h b/src/gui/luainstance.h index f19b86faf..1dc3d4f1f 100644 --- a/src/gui/luainstance.h +++ b/src/gui/luainstance.h @@ -34,7 +34,7 @@ extern "C" { #include #define LUA_API_VERSION_MAJOR 1 -#define LUA_API_VERSION_MINOR 1 +#define LUA_API_VERSION_MINOR 2 /* this is stored as userdata in the lua_State */ struct CLuaData @@ -243,6 +243,7 @@ private: static int MenuHide(lua_State *L); static int MenuExec(lua_State *L); static CLuaMenu *MenuCheck(lua_State *L, int n); + static int MenuSetActive(lua_State *L); void HintboxRegister(lua_State *L); static int HintboxNew(lua_State *L);