From 192fa03794825edecb28540cc7356701cd783056 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 11 Feb 2022 04:16:39 +0100 Subject: [PATCH] Fix some level select bugs --- mods/lzr_level_select/init.lua | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/mods/lzr_level_select/init.lua b/mods/lzr_level_select/init.lua index 055ee70..b16c871 100644 --- a/mods/lzr_level_select/init.lua +++ b/mods/lzr_level_select/init.lua @@ -4,10 +4,10 @@ local F = minetest.formspec_escape lzr_level_select = {} local current_level_selection = nil -lzr_level_select.open_dialog = function(player, preselect) +lzr_level_select.open_dialog = function(player) local form = "formspec_version[4]size[6,10]".. "label[0.5,0.4;"..F(S("Select level:")).."]".. - "button[1.5,8.5;3,1;okay;"..F(S("Start")).."]".. + "button_exit[1.5,8.5;3,1;okay;"..F(S("Start")).."]".. "tablecolumns[color;text]".. "table[0.5,0.8;5,7.5;levellist;" local list = {} @@ -28,12 +28,9 @@ lzr_level_select.open_dialog = function(player, preselect) if not first_uncompleted_level then first_uncompleted_level = 1 end - local list_str = table.concat(list, ",") - if preselect == false then - first_uncompleted_level = "" - end - form = form .. list_str .. ";"..first_uncompleted_level.."]" current_level_selection = first_uncompleted_level + local list_str = table.concat(list, ",") + form = form .. list_str .. ";"..first_uncompleted_level.."]" minetest.show_formspec(player:get_player_name(), "lzr_level_select:levellist", form) end @@ -42,17 +39,13 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if fields.okay then if current_level_selection then lzr_levels.start_level(current_level_selection) - minetest.close_formspec(player:get_player_name(), "lzr_level_select:levellist") - else - current_level_selection = 1 - lzr_level_select.open_dialog(player, true) end elseif fields.levellist then - local expl = minetest.explode_textlist_event(fields.levellist) + local expl = minetest.explode_table_event(fields.levellist) if expl.type == "CHG" then - current_level_selection = expl.index + current_level_selection = expl.row elseif expl.type == "DCL" then - current_level_selection = expl.index + current_level_selection = expl.row lzr_levels.start_level(current_level_selection) minetest.close_formspec(player:get_player_name(), "lzr_level_select:levellist") elseif expl.type == "INV" then @@ -65,17 +58,11 @@ end) minetest.register_chatcommand("level", { privs = { server = true }, description = S("Go to level"), - params = S("[]"), + params = S(""), func = function(name, param) local level = tonumber(param) if not level then - local player = minetest.get_player_by_name(name) - if not player then - return false, S("No player.") - end - current_level_selection = nil - lzr_level_select.open_dialog(player, false) - return true + return false end if level < 1 or level > lzr_levels.LAST_LEVEL then return false, S("Invalid level!")