diff options
author | red-001 <red-001@outlook.ie> | 2017-01-24 16:26:15 +0000 |
---|---|---|
committer | Loïc Blot <nerzhul@users.noreply.github.com> | 2017-03-13 23:56:05 +0100 |
commit | c42c53fccf87a3819ca78de52f8f20c47c4fbb9f (patch) | |
tree | 223bb0b18e989cfe7eb8f7d712bd606976be2c77 /src/script/lua_api | |
parent | 2c19d51409ca903021e0b508e5bc15299c4e51dc (diff) | |
download | minetest-c42c53fccf87a3819ca78de52f8f20c47c4fbb9f.tar.gz minetest-c42c53fccf87a3819ca78de52f8f20c47c4fbb9f.tar.bz2 minetest-c42c53fccf87a3819ca78de52f8f20c47c4fbb9f.zip |
[CSM] Add local formspecs. (#5094)
Diffstat (limited to 'src/script/lua_api')
-rw-r--r-- | src/script/lua_api/l_client.cpp | 45 | ||||
-rw-r--r-- | src/script/lua_api/l_client.h | 9 |
2 files changed, 52 insertions, 2 deletions
diff --git a/src/script/lua_api/l_client.cpp b/src/script/lua_api/l_client.cpp index 7eb340d78..9a04bd02f 100644 --- a/src/script/lua_api/l_client.cpp +++ b/src/script/lua_api/l_client.cpp @@ -22,6 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "l_internal.h" #include "util/string.h" #include "cpp_api/s_base.h" +#include "gettext.h" int ModApiClient::l_get_current_modname(lua_State *L) { @@ -44,18 +45,55 @@ int ModApiClient::l_get_last_run_mod(lua_State *L) // set_last_run_mod(modname) int ModApiClient::l_set_last_run_mod(lua_State *L) { + if (!lua_isstring(L, 1)) + return 0; + const char *mod = lua_tostring(L, 1); getScriptApiBase(L)->setOriginDirect(mod); - return 0; + lua_pushboolean(L, true); + return 1; } // display_chat_message(message) int ModApiClient::l_display_chat_message(lua_State *L) { - NO_MAP_LOCK_REQUIRED; + if (!lua_isstring(L, 1)) + return 0; std::string message = luaL_checkstring(L, 1); getClient(L)->pushToChatQueue(utf8_to_wide(message)); + lua_pushboolean(L, true); + return 1; +} + +// show_formspec(formspec) +int ModApiClient::l_show_formspec(lua_State *L) +{ + if ( !lua_isstring(L, 1) || !lua_isstring(L, 2) ) + return 0; + + ClientEvent event; + event.type = CE_SHOW_LOCAL_FORMSPEC; + event.show_formspec.formname = new std::string(luaL_checkstring(L, 1)); + event.show_formspec.formspec = new std::string(luaL_checkstring(L, 2)); + getClient(L)->pushToEventQueue(event); + lua_pushboolean(L, true); + return 1; +} + +// send_respawn() +int ModApiClient::l_send_respawn(lua_State *L) +{ + getClient(L)->sendRespawn(); + return 0; +} + +// gettext(text) +int ModApiClient::l_gettext(lua_State *L) +{ + std::string text = strgettext(std::string(luaL_checkstring(L, 1))); + lua_pushstring(L, text.c_str()); + return 1; } @@ -65,4 +103,7 @@ void ModApiClient::Initialize(lua_State *L, int top) API_FCT(display_chat_message); API_FCT(set_last_run_mod); API_FCT(get_last_run_mod); + API_FCT(show_formspec); + API_FCT(send_respawn); + API_FCT(gettext); } diff --git a/src/script/lua_api/l_client.h b/src/script/lua_api/l_client.h index 150880e3c..14ef5aecc 100644 --- a/src/script/lua_api/l_client.h +++ b/src/script/lua_api/l_client.h @@ -33,6 +33,15 @@ private: // display_chat_message(message) static int l_display_chat_message(lua_State *L); + // show_formspec(name, fornspec) + static int l_show_formspec(lua_State *L); + + // send_respawn() + static int l_send_respawn(lua_State *L); + + // gettext(text) + static int l_gettext(lua_State *L); + // get_last_run_mod(n) static int l_get_last_run_mod(lua_State *L); |