Skip to content

Commit

Permalink
add double-click support for textlists
Browse files Browse the repository at this point in the history
That has been bugging me ever since I first tried this mod.
  • Loading branch information
SwissalpS authored and BuckarooBanzay committed Oct 20, 2020
1 parent 5e58743 commit ee4caf9
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 8 deletions.
10 changes: 10 additions & 0 deletions form.missionblock_stepeditor.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
20 changes: 12 additions & 8 deletions form.newstep.lua
Original file line number Diff line number Diff line change
Expand Up @@ -54,34 +54,39 @@ 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)

if not missions.check_owner(pos, player) then
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
return
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

Expand All @@ -108,4 +113,3 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)

end)


0 comments on commit ee4caf9

Please sign in to comment.