forked from Mirrorlandia_minetest/minetest
Lua main menu: Fix crash on init lua error, mapgen dropdown index, and new worlds not saving index
This commit is contained in:
parent
ad4c065344
commit
a225efaec5
@ -437,6 +437,22 @@ end
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
function tabbuilder.dialog_create_world()
|
function tabbuilder.dialog_create_world()
|
||||||
|
local mapgens = {"v6", "v7", "indev", "singlenode", "math"}
|
||||||
|
|
||||||
|
local current_mg = engine.setting_get("mg_name")
|
||||||
|
|
||||||
|
local mglist = ""
|
||||||
|
local selindex = 1
|
||||||
|
local i = 1
|
||||||
|
for k,v in pairs(mapgens) do
|
||||||
|
if current_mg == v then
|
||||||
|
selindex = i
|
||||||
|
end
|
||||||
|
i = i + 1
|
||||||
|
mglist = mglist .. v .. ","
|
||||||
|
end
|
||||||
|
mglist = mglist:sub(1, -2)
|
||||||
|
|
||||||
local retval =
|
local retval =
|
||||||
"label[2,0;World name]"..
|
"label[2,0;World name]"..
|
||||||
"label[2,1;Mapgen]"..
|
"label[2,1;Mapgen]"..
|
||||||
@ -444,7 +460,7 @@ function tabbuilder.dialog_create_world()
|
|||||||
"label[2,2;Game]"..
|
"label[2,2;Game]"..
|
||||||
"button[5,4.5;2.6,0.5;world_create_confirm;Create]" ..
|
"button[5,4.5;2.6,0.5;world_create_confirm;Create]" ..
|
||||||
"button[7.5,4.5;2.8,0.5;world_create_cancel;Cancel]" ..
|
"button[7.5,4.5;2.8,0.5;world_create_cancel;Cancel]" ..
|
||||||
"dropdown[4.2,1;6.3;dd_mapgen;v6,v7,indev,singlenode,math;1]" .. --TODO read from minetest
|
"dropdown[4.2,1;6.3;dd_mapgen;" .. mglist .. ";" .. selindex .. "]" ..
|
||||||
"textlist[4.2,1.9;5.8,2.3;games;" ..
|
"textlist[4.2,1.9;5.8,2.3;games;" ..
|
||||||
gamemgr.gamelist() ..
|
gamemgr.gamelist() ..
|
||||||
";" .. menu.last_game .. ";true]"
|
";" .. menu.last_game .. ";true]"
|
||||||
@ -534,16 +550,12 @@ function tabbuilder.handle_create_world_buttons(fields)
|
|||||||
for i=1,#worldlist,1 do
|
for i=1,#worldlist,1 do
|
||||||
if worldlist[i].name == worldname then
|
if worldlist[i].name == worldname then
|
||||||
index = i
|
index = i
|
||||||
print("found new world index: " .. index)
|
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if tabbuilder.current_tab == "singleplayer" then
|
engine.setting_set("main_menu_singleplayer_world_idx", index)
|
||||||
engine.setting_set("main_menu_singleplayer_world_idx",index)
|
menu.last_world = index
|
||||||
else
|
|
||||||
menu.last_world = index
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
gamedata.errormessage = "No worldname given or no game selected"
|
gamedata.errormessage = "No worldname given or no game selected"
|
||||||
|
@ -300,6 +300,8 @@ GUIEngine::~GUIEngine()
|
|||||||
video::IVideoDriver* driver = m_device->getVideoDriver();
|
video::IVideoDriver* driver = m_device->getVideoDriver();
|
||||||
assert(driver != 0);
|
assert(driver != 0);
|
||||||
|
|
||||||
|
//TODO: clean up m_menu here
|
||||||
|
|
||||||
lua_close(m_engineluastack);
|
lua_close(m_engineluastack);
|
||||||
|
|
||||||
m_irr_toplefttext->setText(L"");
|
m_irr_toplefttext->setText(L"");
|
||||||
@ -310,7 +312,8 @@ GUIEngine::~GUIEngine()
|
|||||||
driver->removeTexture(m_textures[i]);
|
driver->removeTexture(m_textures[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_cloud.clouds->drop();
|
if (m_cloud.clouds)
|
||||||
|
m_cloud.clouds->drop();
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
Loading…
Reference in New Issue
Block a user