yl_speak_up.show_what_points_to_this_dialog is now handled by show_fs, and the back button works

This commit is contained in:
Sokomine 2021-07-25 03:42:22 +02:00
parent fc06ddc8ba
commit 972a1e1e61
3 changed files with 37 additions and 7 deletions

View File

@ -342,7 +342,9 @@ end
-- show which dialogs point/lead to this_dialog
yl_speak_up.show_what_points_to_this_dialog = function(player, pname, dialog, this_dialog)
yl_speak_up.show_what_points_to_this_dialog = function(player, this_dialog)
local pname = player:get_player_name()
local dialog = yl_speak_up.speak_to[pname].dialog
if(not(dialog)
or not(dialog.n_dialogs)
or not(this_dialog)
@ -350,13 +352,17 @@ yl_speak_up.show_what_points_to_this_dialog = function(player, pname, dialog, th
return ""
end
-- only show this information when editing this npc
if(yl_speak_up.edit_mode[pname] ~= yl_speak_up.speak_to[pname].n_id) then
return ""
end
local found = {}
-- colored lines for the table showing the results
local res = {}
-- iterate over all dialogs
for d_id, d in pairs(dialog.n_dialogs) do
-- we are looking for dialogs that point here - not the dialog itself
if(d_id ~= this_dialog and d.d_options) then
-- the dialog itself may have options that point back to the dialog itself
if(d.d_options) then
-- iterate over all options
for o_id, o in pairs(d.d_options) do
local r_text = ""
@ -438,7 +444,6 @@ yl_speak_up.show_what_points_to_this_dialog = function(player, pname, dialog, th
minetest.colorize("#FFFF00", tostring(#found))..
" options/actions/results.").."]")
else
-- TODO. make turn into alternate_text work
table.insert(formspec,
"button[0.2,30.6;56.6,1.2;turn_dialog_into_alternate_text;"..
minetest.formspec_escape("Turn this dialog \""..
@ -474,3 +479,21 @@ yl_speak_up.show_what_points_to_this_dialog = function(player, pname, dialog, th
return table.concat(formspec, "").."]"
--]]
end
yl_speak_up.input_fs_show_what_points_to_this_dialog = function(player, formname, fields)
local pname = player:get_player_name()
if(fields.back_from_show_what_points_here) then
-- back to the dialog
yl_speak_up.show_fs(player, "talk",
{n_id = yl_speak_up.speak_to[pname].n_id,
d_id = yl_speak_up.speak_to[pname].d_id})
return
end
-- works only in edit mode
if(yl_speak_up.edit_mode[pname] ~= yl_speak_up.speak_to[pname].n_id) then
return
end
local dialog = yl_speak_up.speak_to[pname].dialog
-- TODO. make turn into alternate_text work
minetest.chat_send_player("singleplayer","GREAT! Got input: "..minetest.serialize(fields))
end

View File

@ -2215,9 +2215,8 @@ yl_speak_up.input_talk = function(player, formname, fields)
if(fields.show_what_points_to_this_dialog) then
local dialog = yl_speak_up.speak_to[pname].dialog
local d_id = yl_speak_up.speak_to[pname].d_id
-- TODO: use show_fs here
minetest.show_formspec(pname, "yl_speak_up:show_points_to_dialog",
yl_speak_up.show_what_points_to_this_dialog(player, pname, dialog, d_id))
yl_speak_up.show_fs(player, "show_what_points_to_this_dialog",
yl_speak_up.speak_to[pname].d_id)
return
end

View File

@ -71,6 +71,10 @@ minetest.register_on_player_receive_fields( function(player, formname, fields)
elseif formname == "yl_speak_up:manage_variables" then
yl_speak_up.input_fs_manage_variables(player, formname, fields)
return true
-- handled in fs_alternate_text.lua
elseif formname == "yl_speak_up:show_what_points_to_this_dialog" then
yl_speak_up.input_fs_show_what_points_to_this_dialog(player, formname, fields)
return true
end
end)
@ -282,6 +286,10 @@ yl_speak_up.show_fs = function(player, fs_name, param)
minetest.show_formspec(pname, "yl_speak_up:manage_variables",
yl_speak_up.get_fs_manage_variables(player, param))
elseif(fs_name == "show_what_points_to_this_dialog") then
minetest.show_formspec(pname, "yl_speak_up:show_what_points_to_this_dialog",
yl_speak_up.show_what_points_to_this_dialog(player, param))
-- fallback in case of wrong call
else
minetest.chat_send_player(pname, "Error: Trying to show wrong "..