Add support for set_formspec_prepend in main menu (#8611)

master
rubenwardy 2019-08-12 18:16:35 +01:00 committed by sfan5
parent a067d40454
commit 91114b562f
5 changed files with 31 additions and 1 deletions

View File

@ -79,6 +79,8 @@ core.explode_table_event(string) -> table
core.explode_textlist_event(string) -> table core.explode_textlist_event(string) -> table
^ returns e.g. {type="CHG", index=1} ^ returns e.g. {type="CHG", index=1}
^ type: "INV" (no row selected), "CHG" (selected) or "DCL" (double-click) ^ type: "INV" (no row selected), "CHG" (selected) or "DCL" (double-click)
core.set_formspec_prepend(formspec)
^ string to be added to every mainmenu formspec, to be used for theming.
GUI: GUI:
core.set_background(type, texturepath,[tile],[minsize]) core.set_background(type, texturepath,[tile],[minsize])

View File

@ -389,6 +389,15 @@ void GUIEngine::cloudPostProcess()
} }
} }
/******************************************************************************/
void GUIEngine::setFormspecPrepend(const std::string &fs)
{
if (m_menu) {
m_menu->setFormspecPrepend(fs);
}
}
/******************************************************************************/ /******************************************************************************/
void GUIEngine::drawBackground(video::IVideoDriver *driver) void GUIEngine::drawBackground(video::IVideoDriver *driver)
{ {
@ -610,4 +619,3 @@ unsigned int GUIEngine::queueAsync(const std::string &serialized_func,
{ {
return m_script->queueAsync(serialized_func, serialized_params); return m_script->queueAsync(serialized_func, serialized_params);
} }

View File

@ -221,6 +221,8 @@ private:
/** script basefolder */ /** script basefolder */
std::string m_scriptdir = ""; std::string m_scriptdir = "";
void setFormspecPrepend(const std::string &fs);
/** /**
* draw background layer * draw background layer
* @param driver to use for drawing * @param driver to use for drawing

View File

@ -106,6 +106,21 @@ int ModApiMainMenu::l_update_formspec(lua_State *L)
return 0; return 0;
} }
/******************************************************************************/
int ModApiMainMenu::l_set_formspec_prepend(lua_State *L)
{
GUIEngine *engine = getGuiEngine(L);
sanity_check(engine != NULL);
if (engine->m_startgame)
return 0;
std::string formspec(luaL_checkstring(L, 1));
engine->setFormspecPrepend(formspec);
return 0;
}
/******************************************************************************/ /******************************************************************************/
int ModApiMainMenu::l_start(lua_State *L) int ModApiMainMenu::l_start(lua_State *L)
{ {
@ -1041,6 +1056,7 @@ int ModApiMainMenu::l_do_async_callback(lua_State *L)
void ModApiMainMenu::Initialize(lua_State *L, int top) void ModApiMainMenu::Initialize(lua_State *L, int top)
{ {
API_FCT(update_formspec); API_FCT(update_formspec);
API_FCT(set_formspec_prepend);
API_FCT(set_clouds); API_FCT(set_clouds);
API_FCT(get_textlist_index); API_FCT(get_textlist_index);
API_FCT(get_table_index); API_FCT(get_table_index);

View File

@ -104,6 +104,8 @@ private:
static int l_update_formspec(lua_State *L); static int l_update_formspec(lua_State *L);
static int l_set_formspec_prepend(lua_State *L);
static int l_get_screen_info(lua_State *L); static int l_get_screen_info(lua_State *L);
//filesystem //filesystem