Fix some level select bugs
parent
7b2196715a
commit
192fa03794
|
@ -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("[<level>]"),
|
||||
params = S("<level>"),
|
||||
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!")
|
||||
|
|
Loading…
Reference in New Issue