X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=builtin%2Fmainmenu%2Ftab_singleplayer.lua;h=4ae4dde3595b19977e85af0140cf931743c95763;hb=39439cbd3dd4acce0ff897e3e277736251dde2a4;hp=1eab94da36a13d82b8abf571ec990d71ffff4f6e;hpb=f969a91c0a7d6527721f985d657908a20e97c32d;p=oweals%2Fminetest.git diff --git a/builtin/mainmenu/tab_singleplayer.lua b/builtin/mainmenu/tab_singleplayer.lua index 1eab94da3..4ae4dde35 100644 --- a/builtin/mainmenu/tab_singleplayer.lua +++ b/builtin/mainmenu/tab_singleplayer.lua @@ -23,9 +23,9 @@ local function current_game() end local function singleplayer_refresh_gamebar() - + local old_bar = ui.find_by_name("game_button_bar") - + if old_bar ~= nil then old_bar:delete() end @@ -35,8 +35,17 @@ local function singleplayer_refresh_gamebar() for j=1,#gamemgr.games,1 do if ("game_btnbar_" .. gamemgr.games[j].id == key) then mm_texture.update("singleplayer", gamemgr.games[j]) + core.set_topleft_text(gamemgr.games[j].name) core.setting_set("menu_last_game",gamemgr.games[j].id) menudata.worldlist:set_filtercriteria(gamemgr.games[j].id) + local index = filterlist.get_current_index(menudata.worldlist, + tonumber(core.setting_get("mainmenu_last_selected_world"))) + local selected = core.get_textlist_index("sp_worlds") + if not index or index < 1 then + index = math.min(core.get_textlist_index("sp_worlds"), + #menudata.worldlist:get_list()) + end + menu_worldmt_legacy(index) return true end end @@ -52,6 +61,7 @@ local function singleplayer_refresh_gamebar() local image = nil local text = nil + local tooltip = core.formspec_escape(gamemgr.games[i].name) if gamemgr.games[i].menuicon_path ~= nil and gamemgr.games[i].menuicon_path ~= "" then @@ -68,13 +78,13 @@ local function singleplayer_refresh_gamebar() text = text .. "\n" .. part3 end end - btnbar:add_button(btn_name, text, image) + btnbar:add_button(btn_name, text, image, tooltip) end end local function get_formspec(tabview, name, tabdata) local retval = "" - + local index = filterlist.get_current_index(menudata.worldlist, tonumber(core.setting_get("mainmenu_last_selected_world")) ) @@ -85,10 +95,9 @@ local function get_formspec(tabview, name, tabdata) "button[9.2,4.15;2.55,0.5;world_configure;".. fgettext("Configure") .. "]" .. "button[8.5,4.95;3.25,0.5;play;".. fgettext("Play") .. "]" .. "label[4,-0.25;".. fgettext("Select World:") .. "]".. - "vertlabel[0,-0.25;".. fgettext("SINGLE PLAYER") .. "]" .. - "checkbox[0.5,0.25;cb_creative_mode;".. fgettext("Creative Mode") .. ";" .. + "checkbox[0.25,0.25;cb_creative_mode;".. fgettext("Creative Mode") .. ";" .. dump(core.setting_getbool("creative_mode")) .. "]".. - "checkbox[0.5,0.7;cb_enable_damage;".. fgettext("Enable Damage") .. ";" .. + "checkbox[0.25,0.7;cb_enable_damage;".. fgettext("Enable Damage") .. ";" .. dump(core.setting_getbool("enable_damage")) .. "]".. "textlist[4,0.25;7.5,3.7;sp_worlds;" .. menu_render_worldlist() .. @@ -104,14 +113,17 @@ local function main_button_handler(this, fields, name, tabdata) if fields["sp_worlds"] ~= nil then local event = core.explode_textlist_event(fields["sp_worlds"]) + local selected = core.get_textlist_index("sp_worlds") + + menu_worldmt_legacy(selected) if event.type == "DCL" then world_doubleclick = true end - if event.type == "CHG" then + if event.type == "CHG" and selected ~= nil then core.setting_set("mainmenu_last_selected_world", - menudata.worldlist:get_raw_index(core.get_textlist_index("sp_worlds"))) + menudata.worldlist:get_raw_index(selected)) return true end end @@ -122,11 +134,17 @@ local function main_button_handler(this, fields, name, tabdata) if fields["cb_creative_mode"] then core.setting_set("creative_mode", fields["cb_creative_mode"]) + local selected = core.get_textlist_index("sp_worlds") + menu_worldmt(selected, "creative_mode", fields["cb_creative_mode"]) + return true end if fields["cb_enable_damage"] then core.setting_set("enable_damage", fields["cb_enable_damage"]) + local selected = core.get_textlist_index("sp_worlds") + menu_worldmt(selected, "enable_damage", fields["cb_enable_damage"]) + return true end @@ -134,12 +152,14 @@ local function main_button_handler(this, fields, name, tabdata) world_doubleclick or fields["key_enter"] then local selected = core.get_textlist_index("sp_worlds") + gamedata.selected_world = menudata.worldlist:get_raw_index(selected) - if selected ~= nil then - gamedata.selected_world = menudata.worldlist:get_raw_index(selected) - gamedata.singleplayer = true - + if selected ~= nil and gamedata.selected_world ~= 0 then + gamedata.singleplayer = true core.start() + else + gamedata.errormessage = + fgettext("No world created or selected!") end return true end