put yl_speak_up.get_list_of_effects_and_target_dialog_and_effect into extra function so that it can be used in fs_edit_trade_limit.lua as well
This commit is contained in:
parent
9e8cc183fa
commit
b7c2354cd9
@ -1,4 +1,43 @@
|
||||
|
||||
-- helper function; used by
|
||||
-- * yl_speak_up.get_fs_edit_option_dialog and
|
||||
-- * yl_speak_up.get_fs_edit_trade_limit
|
||||
yl_speak_up.get_list_of_effects_and_target_dialog_and_effect = function(dialog, results, pname, target_dialog, target_effect)
|
||||
local list_of_effects = ""
|
||||
local count_effects = 0
|
||||
if(results) then
|
||||
local sorted_key_list = yl_speak_up.sort_keys(results)
|
||||
for i, k in ipairs(sorted_key_list) do
|
||||
local v = results[ k ]
|
||||
if v.r_type == "dialog" and (dialog.n_dialogs[v.r_value] ~= nil or v.r_value == "d_end" or v.r_value == "d_got_item") then
|
||||
list_of_effects = list_of_effects..
|
||||
minetest.formspec_escape(v.r_id)..",#999999,"..
|
||||
minetest.formspec_escape(v.r_type)..","..
|
||||
minetest.formspec_escape(
|
||||
yl_speak_up.show_effect(v, pname))..","
|
||||
-- there may be more than one in the data structure
|
||||
target_dialog = v.r_value
|
||||
target_effect = v
|
||||
elseif v.r_type ~= "dialog" then
|
||||
list_of_effects = list_of_effects..
|
||||
minetest.formspec_escape(v.r_id)..",#FFFF00,"..
|
||||
minetest.formspec_escape(v.r_type)..","..
|
||||
minetest.formspec_escape(
|
||||
yl_speak_up.show_effect(v, pname))..","
|
||||
end
|
||||
count_effects = count_effects + 1
|
||||
end
|
||||
end
|
||||
if(count_effects < yl_speak_up.max_result_effects) then
|
||||
list_of_effects = list_of_effects..",#00FF00,add,Add a new (Ef)fect"
|
||||
else
|
||||
list_of_effects = list_of_effects..",#AAAAAA,-,"..
|
||||
"Maximum amount of allowed (Ef)fects per option reached!"
|
||||
end
|
||||
return {list = list_of_effects, target_dialog = target_dialog, target_effect = target_effect}
|
||||
end
|
||||
|
||||
|
||||
-- process input from formspec created in get_fs_edit_option_dialog(..)
|
||||
yl_speak_up.input_edit_option_dialog = function(player, formname, fields)
|
||||
if formname ~= "yl_speak_up:edit_option_dialog" then
|
||||
@ -332,9 +371,7 @@ yl_speak_up.get_fs_edit_option_dialog = function(player, n_id, d_id, o_id, calle
|
||||
-- set this to a fallback for yl_speak_up.show_colored_dialog_text
|
||||
local target_effect = {r_id = "-?-", r_type = "dialog"}
|
||||
-- and build the list of effects
|
||||
local list_of_effects = ""
|
||||
local results = d_option.o_results
|
||||
local count_effects = 0
|
||||
-- create a new dialog type option if needed
|
||||
if(not(results) or not(next(results))) then
|
||||
target_dialog = yl_speak_up.prepare_new_dialog_for_option(
|
||||
@ -344,35 +381,12 @@ yl_speak_up.get_fs_edit_option_dialog = function(player, n_id, d_id, o_id, calle
|
||||
-- make sure we are up to date (a new option was inserted)
|
||||
results = d_option.o_results
|
||||
end
|
||||
if(results) then
|
||||
local sorted_key_list = yl_speak_up.sort_keys(results)
|
||||
for i, k in ipairs(sorted_key_list) do
|
||||
local v = results[ k ]
|
||||
if v.r_type == "dialog" and (dialog.n_dialogs[v.r_value] ~= nil or v.r_value == "d_end" or v.r_value == "d_got_item") then
|
||||
list_of_effects = list_of_effects..
|
||||
minetest.formspec_escape(v.r_id)..",#999999,"..
|
||||
minetest.formspec_escape(v.r_type)..","..
|
||||
minetest.formspec_escape(
|
||||
yl_speak_up.show_effect(v, pname))..","
|
||||
-- there may be more than one in the data structure
|
||||
target_dialog = v.r_value
|
||||
target_effect = v
|
||||
elseif v.r_type ~= "dialog" then
|
||||
list_of_effects = list_of_effects..
|
||||
minetest.formspec_escape(v.r_id)..",#FFFF00,"..
|
||||
minetest.formspec_escape(v.r_type)..","..
|
||||
minetest.formspec_escape(
|
||||
yl_speak_up.show_effect(v, pname))..","
|
||||
end
|
||||
count_effects = count_effects + 1
|
||||
end
|
||||
end
|
||||
if(count_effects < yl_speak_up.max_result_effects) then
|
||||
list_of_effects = list_of_effects..",#00FF00,add,Add a new (Ef)fect"
|
||||
else
|
||||
list_of_effects = list_of_effects..",#AAAAAA,-,"..
|
||||
"Maximum amount of allowed (Ef)fects per option reached!"
|
||||
end
|
||||
-- constructs the list_of_effects; may also update target_dialog and target_effect
|
||||
local res = yl_speak_up.get_list_of_effects_and_target_dialog_and_effect(dialog, results, pname,
|
||||
target_dialog, target_effect)
|
||||
list_of_effects = res.list
|
||||
target_dialog = res.target_dialog
|
||||
target_effect = res.target_effect
|
||||
|
||||
-- if no target dialog has been selected: default is to go to the dialog with d_sort 0
|
||||
if(not(target_dialog) or target_dialog == "" or
|
||||
|
Loading…
Reference in New Issue
Block a user