]> git.lizzy.rs Git - minetest.git/blobdiff - src/script/cpp_api/s_mainmenu.cpp
[CSM] Don't Load the package library (#6944)
[minetest.git] / src / script / cpp_api / s_mainmenu.cpp
index 0bb247fa012757f80bae12887062c07aa28e0a2e..1e9ba3a41cf9cb95fad57f65c790fbf03f27cf13 100644 (file)
@@ -21,15 +21,20 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "cpp_api/s_internal.h"
 #include "common/c_converter.h"
 
-void ScriptApiMainMenu::setMainMenuErrorMessage(std::string errormessage)
+void ScriptApiMainMenu::setMainMenuData(MainMenuDataForScript *data)
 {
        SCRIPTAPI_PRECHECKHEADER
 
        lua_getglobal(L, "gamedata");
        int gamedata_idx = lua_gettop(L);
        lua_pushstring(L, "errormessage");
-       lua_pushstring(L, errormessage.c_str());
+       if (!data->errormessage.empty()) {
+               lua_pushstring(L, data->errormessage.c_str());
+       } else {
+               lua_pushnil(L);
+       }
        lua_settable(L, gamedata_idx);
+       setboolfield(L, gamedata_idx, "reconnect_requested", data->reconnect_requested);
        lua_pop(L, 1);
 }
 
@@ -37,6 +42,8 @@ void ScriptApiMainMenu::handleMainMenuEvent(std::string text)
 {
        SCRIPTAPI_PRECHECKHEADER
 
+       int error_handler = PUSH_ERROR_HANDLER(L);
+
        // Get handler function
        lua_getglobal(L, "core");
        lua_getfield(L, -1, "event_handler");
@@ -49,14 +56,16 @@ void ScriptApiMainMenu::handleMainMenuEvent(std::string text)
 
        // Call it
        lua_pushstring(L, text.c_str());
-       if (lua_pcall(L, 1, 0, m_errorhandler))
-               scriptError();
+       PCALL_RES(lua_pcall(L, 1, 0, error_handler));
+       lua_pop(L, 1); // Pop error handler
 }
 
 void ScriptApiMainMenu::handleMainMenuButtons(const StringMap &fields)
 {
        SCRIPTAPI_PRECHECKHEADER
 
+       int error_handler = PUSH_ERROR_HANDLER(L);
+
        // Get handler function
        lua_getglobal(L, "core");
        lua_getfield(L, -1, "button_handler");
@@ -79,7 +88,6 @@ void ScriptApiMainMenu::handleMainMenuButtons(const StringMap &fields)
        }
 
        // Call it
-       if (lua_pcall(L, 1, 0, m_errorhandler))
-               scriptError();
+       PCALL_RES(lua_pcall(L, 1, 0, error_handler));
+       lua_pop(L, 1); // Pop error handler
 }
-