diff --git a/form.missionblock_stepeditor.lua b/form.missionblock_stepeditor.lua index cc69ad4..350bf2a 100644 --- a/form.missionblock_stepeditor.lua +++ b/form.missionblock_stepeditor.lua @@ -53,6 +53,16 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) return end + if fields.steps then + parts = fields.steps:split(":") + local command = parts[1] + local selected_step = tonumber(parts[2]) + if "DCL" == command then -- double clicked + missions.set_selected_list_item(player, selected_step) + fields.edit = true + end + end + if fields.add then missions.form.newstep(pos, node, player) return true diff --git a/form.newstep.lua b/form.newstep.lua index fb7b662..be5157e 100644 --- a/form.newstep.lua +++ b/form.newstep.lua @@ -54,7 +54,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if name ~= FORMNAME then return end - + local pos = minetest.string_to_pos(parts[2]) local node = minetest.get_node(pos) @@ -62,17 +62,22 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) return end + local player_name = player:get_player_name() if fields.steptype then parts = fields.steptype:split(":") - if parts[1] == "CHG" then - local selected_step = tonumber(parts[2]) - selected_newstep_index[player:get_player_name()] = selected_step + local command = parts[1] + local selected_step = tonumber(parts[2]) + if "CHG" == command -- changed selection + or "DCL" == command -- double clicked + then + selected_newstep_index[player_name] = selected_step + if "DCL" == command then fields.add = true end end end if fields.add then local steps = get_mission_steps_for_player(player) - local index = selected_newstep_index[player:get_player_name()] + local index = selected_newstep_index[player_name] local spec = steps[index] if not spec then @@ -80,8 +85,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end -- check privs - if spec.privs and not minetest.check_player_privs(player:get_player_name(), spec.privs) then - minetest.chat_send_player(player:get_player_name(), "Missing privs: " .. dump(spec.privs)) + if spec.privs and not minetest.check_player_privs(player_name, spec.privs) then + minetest.chat_send_player(player_name, "Missing privs: " .. dump(spec.privs)) return end @@ -108,4 +113,3 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end) -