added yl_speak_up.create_dropdown_playerlist in new file formspec_helpers.lua

This commit is contained in:
Sokomine 2021-07-26 19:37:21 +02:00
parent 2ecab8554e
commit 3e019907da
3 changed files with 45 additions and 0 deletions

41
formspec_helpers.lua Normal file
View File

@ -0,0 +1,41 @@
-- helper function:
-- create a formspec dropdown list with player names (first entry: Add player) and
-- an option to delete players from that list
yl_speak_up.create_dropdown_playerlist = function(player, pname,
table_of_names, index_selected,
start_x, start_y, dropdown_name,
field_name_for_adding_player, explain_add_player,
field_name_for_deleting_player, explain_delete_player)
local text = "dropdown["..tostring(start_x)..","..tostring(start_y)..";3.8;"..
tostring(dropdown_name)..";Add player:"
-- table_of_names is a table with the playernames as keys
-- we want to work with indices later on; in order to be able to do that reliably, we
-- need a defined order of names
local tmp_list = yl_speak_up.sort_keys(table_of_names, true)
for i, p in ipairs(tmp_list) do
text = text..","..minetest.formspec_escape(p)
end
-- has an entry been selected?
if(not(index_selected) or index_selected < 0 or index_selected > #tmp_list+1) then
index_selected = 1
end
text = text..";"..tostring(index_selected)..";]"
if(index_selected == 1) then
-- first index "Add player" selected? Then offer a field for entering the name
text = text.."field["..tostring(start_x + 4.0)..","..tostring(start_y + 0.3)..";3.5,0.9;"..
tostring(field_name_for_adding_player)..";;]"..
"tooltip["..tostring(field_name_for_adding_player)..";"..
"Enter the name of the player whom you\n"..
"want to grant the right to "..tostring(explain_add_player).."]"
else
text = text.."button["..tostring(start_x + 3.8)..","..tostring(start_y)..";3.5,0.9;"..
tostring(field_name_for_deleting_player)..";"..
"Remove player from list]"..
"tooltip["..tostring(field_name_for_deleting_player)..";"..
"If you click here, the player will no\n"..
"longer be able to "..tostring(explain_delete_player).."]"
end
return text
end

View File

@ -29,6 +29,8 @@ dofile(modpath .. "fs_save_or_discard_or_back.lua")
dofile(modpath .. "custrom_functions_you_can_override.lua")
-- some helper functions for formatting text for a formspec talbe
dofile(modpath .. "print_as_table.lua")
-- create i.e. a dropdown list of player names
dofile(modpath .. "formspec_helpers.lua")
-- handle alternate text for dialogs
dofile(modpath .. "fs_alternate_text.lua")
-- common functions for editing preconditions and effects

View File

@ -277,6 +277,7 @@ end
-- the dialog data of an NPC is saved - use this to save some statistical data
-- plus store which variables are used by this NPC
-- TODO: show this data in a formspec to admins for maintenance
yl_speak_up.update_stored_npc_data = function(n_id, dialog)
-- in order to determine the position of the NPC, we need its object
local pname = yl_speak_up.get_pname_for_n_id(n_id)
@ -345,6 +346,7 @@ yl_speak_up.update_stored_npc_data = function(n_id, dialog)
n_id = n_id,
name = tostring(dialog.n_npc),
owner = tostring(yl_speak_up.npc_owner[ n_id ]),
may_edit = dialog.n_may_edit or {},
pos = tostring(npc_pos),
anz_dialogs = anz_dialogs,
anz_options = anz_options,