diff options
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/mainmenu.lua | 176 |
1 files changed, 87 insertions, 89 deletions
diff --git a/builtin/mainmenu.lua b/builtin/mainmenu.lua index d67a37c8d..d818773c3 100644 --- a/builtin/mainmenu.lua +++ b/builtin/mainmenu.lua @@ -142,23 +142,22 @@ function init_globals() filterlist.add_sort_mechanism(worldlist,"alphabetic",sort_worlds_alphabetic) filterlist.set_sortmode(worldlist,"alphabetic") - end -------------------------------------------------------------------------------- function update_menu() - local formspec = "size[12,5.2]" + local formspec -- handle errors if gamedata.errormessage ~= nil then - formspec = formspec .. + formspec = "size[12,5.2]" .. "field[1,2;10,2;;ERROR: " .. gamedata.errormessage .. ";]".. "button[4.5,4.2;3,0.5;btn_error_confirm;" .. fgettext("Ok") .. "]" else - formspec = formspec .. tabbuilder.gettab() + formspec = tabbuilder.gettab() end engine.update_formspec(formspec) @@ -279,7 +278,8 @@ end function tabbuilder.dialog_create_world() local mapgens = {"v6", "v7", "indev", "singlenode", "math"} - local current_mg = engine.setting_get("mg_name") + local current_seed = engine.setting_get("fixed_map_seed") or "" + local current_mg = engine.setting_get("mg_name") local mglist = "" local selindex = 1 @@ -295,15 +295,20 @@ function tabbuilder.dialog_create_world() local retval = "label[2,0;" .. fgettext("World name") .. "]".. - "label[2,1;" .. fgettext("Mapgen") .. "]".. "field[4.5,0.4;6,0.5;te_world_name;;]" .. - "label[2,2;" .. fgettext("Game") .. "]".. - "button[5,4.5;2.6,0.5;world_create_confirm;" .. fgettext("Create") .. "]" .. - "button[7.5,4.5;2.8,0.5;world_create_cancel;" .. fgettext("Cancel") .. "]" .. - "dropdown[4.2,1;6.3;dd_mapgen;" .. mglist .. ";" .. selindex .. "]" .. - "textlist[4.2,1.9;5.8,2.3;games;" .. - gamemgr.gamelist() .. - ";" .. menu.last_game .. ";true]" + + "label[2,1;" .. fgettext("Seed") .. "]".. + "field[4.5,1.4;6,0.5;te_seed;;".. current_seed .. "]" .. + + "label[2,2;" .. fgettext("Mapgen") .. "]".. + "dropdown[4.2,2;6.3;dd_mapgen;" .. mglist .. ";" .. selindex .. "]" .. + + "label[2,3;" .. fgettext("Game") .. "]".. + "textlist[4.2,3;5.8,2.3;games;" .. gamemgr.gamelist() .. + ";" .. menu.last_game .. ";true]" .. + + "button[5,5.5;2.6,0.5;world_create_confirm;" .. fgettext("Create") .. "]" .. + "button[7.5,5.5;2.8,0.5;world_create_cancel;" .. fgettext("Cancel") .. "]" return retval end @@ -317,43 +322,18 @@ function tabbuilder.dialog_delete_world() end -------------------------------------------------------------------------------- + function tabbuilder.gettab() - local retval = "" - + local tsize = tabbuilder.tabsizes[tabbuilder.current_tab] or {width=12, height=5.2} + local retval = "size[" .. tsize.width .. "," .. tsize.height .. "]" + if tabbuilder.show_buttons then retval = retval .. tabbuilder.tab_header() end - if tabbuilder.current_tab == "singleplayer" then - retval = retval .. tabbuilder.tab_singleplayer() - end - - if tabbuilder.current_tab == "multiplayer" then - retval = retval .. tabbuilder.tab_multiplayer() - end - - if tabbuilder.current_tab == "server" then - retval = retval .. tabbuilder.tab_server() - end - - if tabbuilder.current_tab == "settings" then - retval = retval .. tabbuilder.tab_settings() - end - - if tabbuilder.current_tab == "texture_packs" then - retval = retval .. tabbuilder.tab_texture_packs() - end - - if tabbuilder.current_tab == "credits" then - retval = retval .. tabbuilder.tab_credits() - end - - if tabbuilder.current_tab == "dialog_create_world" then - retval = retval .. tabbuilder.dialog_create_world() - end - - if tabbuilder.current_tab == "dialog_delete_world" then - retval = retval .. tabbuilder.dialog_delete_world() + local buildfunc = tabbuilder.tabfuncs[tabbuilder.current_tab] + if buildfunc ~= nil then + retval = retval .. buildfunc() end retval = retval .. modmgr.gettab(tabbuilder.current_tab) @@ -383,6 +363,8 @@ function tabbuilder.handle_create_world_buttons(fields) else message = fgettext("A world named \"$1\" already exists", worldname) end + + engine.setting_set("fixed_map_seed", fields["te_seed"]) if message ~= nil then gamedata.errormessage = message @@ -825,50 +807,6 @@ function tabbuilder.handle_tab_buttons(fields) end -------------------------------------------------------------------------------- -function tabbuilder.init() - tabbuilder.current_tab = engine.setting_get("main_menu_tab") - - if tabbuilder.current_tab == nil or - tabbuilder.current_tab == "" then - tabbuilder.current_tab = "singleplayer" - engine.setting_set("main_menu_tab",tabbuilder.current_tab) - end - - --initialize tab buttons - tabbuilder.last_tab = nil - tabbuilder.show_buttons = true - - tabbuilder.current_buttons = {} - table.insert(tabbuilder.current_buttons,{name="singleplayer", caption=fgettext("Singleplayer")}) - table.insert(tabbuilder.current_buttons,{name="multiplayer", caption=fgettext("Client")}) - table.insert(tabbuilder.current_buttons,{name="server", caption=fgettext("Server")}) - table.insert(tabbuilder.current_buttons,{name="settings", caption=fgettext("Settings")}) - table.insert(tabbuilder.current_buttons,{name="texture_packs", caption=fgettext("Texture Packs")}) - - if engine.setting_getbool("main_menu_game_mgr") then - table.insert(tabbuilder.current_buttons,{name="game_mgr", caption=fgettext("Games")}) - end - - if engine.setting_getbool("main_menu_mod_mgr") then - table.insert(tabbuilder.current_buttons,{name="mod_mgr", caption=fgettext("Mods")}) - end - table.insert(tabbuilder.current_buttons,{name="credits", caption=fgettext("Credits")}) - - - for i=1,#tabbuilder.current_buttons,1 do - if tabbuilder.current_buttons[i].name == tabbuilder.current_tab then - tabbuilder.last_tab_index = i - end - end - - if tabbuilder.current_tab ~= "singleplayer" then - menu.update_gametype(true) - else - menu.update_gametype() - end -end - --------------------------------------------------------------------------------- function tabbuilder.tab_multiplayer() local retval = @@ -1092,6 +1030,66 @@ function tabbuilder.tab_credits() end -------------------------------------------------------------------------------- +function tabbuilder.init() + tabbuilder.tabfuncs = { + singleplayer = tabbuilder.tab_singleplayer, + multiplayer = tabbuilder.tab_multiplayer, + server = tabbuilder.tab_server, + settings = tabbuilder.tab_settings, + texture_packs = tabbuilder.tab_texture_packs, + credits = tabbuilder.tab_credits, + dialog_create_world = tabbuilder.dialog_create_world, + dialog_delete_world = tabbuilder.dialog_delete_world + } + + tabbuilder.tabsizes = { + dialog_create_world = {width=12, height=7}, + dialog_delete_world = {width=12, height=5.2} + } + + tabbuilder.current_tab = engine.setting_get("main_menu_tab") + + if tabbuilder.current_tab == nil or + tabbuilder.current_tab == "" then + tabbuilder.current_tab = "singleplayer" + engine.setting_set("main_menu_tab",tabbuilder.current_tab) + end + + --initialize tab buttons + tabbuilder.last_tab = nil + tabbuilder.show_buttons = true + + tabbuilder.current_buttons = {} + table.insert(tabbuilder.current_buttons,{name="singleplayer", caption=fgettext("Singleplayer")}) + table.insert(tabbuilder.current_buttons,{name="multiplayer", caption=fgettext("Client")}) + table.insert(tabbuilder.current_buttons,{name="server", caption=fgettext("Server")}) + table.insert(tabbuilder.current_buttons,{name="settings", caption=fgettext("Settings")}) + table.insert(tabbuilder.current_buttons,{name="texture_packs", caption=fgettext("Texture Packs")}) + + if engine.setting_getbool("main_menu_game_mgr") then + table.insert(tabbuilder.current_buttons,{name="game_mgr", caption=fgettext("Games")}) + end + + if engine.setting_getbool("main_menu_mod_mgr") then + table.insert(tabbuilder.current_buttons,{name="mod_mgr", caption=fgettext("Mods")}) + end + table.insert(tabbuilder.current_buttons,{name="credits", caption=fgettext("Credits")}) + + + for i=1,#tabbuilder.current_buttons,1 do + if tabbuilder.current_buttons[i].name == tabbuilder.current_tab then + tabbuilder.last_tab_index = i + end + end + + if tabbuilder.current_tab ~= "singleplayer" then + menu.update_gametype(true) + else + menu.update_gametype() + end +end + +-------------------------------------------------------------------------------- function tabbuilder.checkretval(retval) if retval ~= nil then |