finished get_fs_talkdialog split into normal and edit mode

This commit is contained in:
Sokomine 2024-02-04 01:38:44 +01:00
parent 89bd9ea546
commit 682cc3bccd
3 changed files with 42 additions and 31 deletions

View File

@ -178,7 +178,38 @@ yl_speak_up.get_pname_for_old_fs = function(pname)
end
yl_speak_up.show_fs_decorated = function(pname, edit_mode, h,
-- display the window with the text the NPC is saying
-- Note: In edit mode, and if there is a dialog selected, the necessary
-- elements for editing said text are done in the calling function.
yl_speak_up.show_fs_npc_text = function(pname, formspec, dialog, alternate_text, active_dialog, fs_version)
if(alternate_text and active_dialog and active_dialog.d_text) then
alternate_text = string.gsub(alternate_text, "%$TEXT%$", active_dialog.d_text)
elseif(active_dialog and active_dialog.d_text) then
alternate_text = active_dialog.d_text
end
-- replace $NPC_NAME$ etc.
local t = minetest.formspec_escape(yl_speak_up.replace_vars_in_text(
alternate_text, dialog, pname))
if(fs_version > 2) then
yl_speak_up.add_formspec_element_with_tooltip_if(formspec,
"hypertext", "0.2,5;19.6,17.8", "d_text",
"<normal>"..t.."\n</normal>",
t:trim()..";#000000;#FFFFFF",
true)
else
yl_speak_up.add_formspec_element_with_tooltip_if(formspec,
"textarea", "0.2,5;19.6,17.8", "",
";"..t.."\n",
t:trim(),
true)
end
return formspec
end
yl_speak_up.show_fs_decorated = function(pname, npc_text_already_printed, h,
alternate_text,
add_this_to_left_window,
add_this_to_bottom_window,
@ -279,28 +310,8 @@ yl_speak_up.show_fs_decorated = function(pname, edit_mode, h,
-- display the window with the text the NPC is saying
-- Note: In edit mode, and if there is a dialog selected, the necessary
-- elements for editing said text are done in the calling function.
if(not(edit_mode) or not(dialog) or not(dialog.n_dialogs)) then
if(alternate_text and active_dialog and active_dialog.d_text) then
alternate_text = string.gsub(alternate_text, "%$TEXT%$", active_dialog.d_text)
elseif(active_dialog and active_dialog.d_text) then
alternate_text = active_dialog.d_text
end
-- replace $NPC_NAME$ etc.
local t = minetest.formspec_escape(yl_speak_up.replace_vars_in_text(
alternate_text, dialog, pname))
if(fs_version > 2) then
yl_speak_up.add_formspec_element_with_tooltip_if(formspec,
"hypertext", "0.2,5;19.6,17.8", "d_text",
"<normal>"..t.."\n</normal>",
t:trim()..";#000000;#FFFFFF",
true)
else
yl_speak_up.add_formspec_element_with_tooltip_if(formspec,
"textarea", "0.2,5;19.6,17.8", "",
";"..t.."\n",
t:trim(),
true)
end
if(not(npc_text_already_printed) or not(dialog) or not(dialog.n_dialogs)) then
yl_speak_up.show_fs_npc_text(pname, formspec, dialog, alternate_text, active_dialog, fs_version)
end
-- add custom things (mostly for editing a dialog) to the window shown left

View File

@ -44,9 +44,9 @@ end
-- shows the text the NPC "speaks" and adds edit and navigation buttons
-- (all only in *edit_mode*)
local old_talkdialog_main_text = yl_speak_up.get_fs_talkdialog_main_text
yl_speak_up.get_fs_talkdialog_main_text = function(pname, formspec, h, dialog, dialog_list, c_d_id, active_dialog)
yl_speak_up.get_fs_talkdialog_main_text = function(pname, formspec, h, dialog, dialog_list, c_d_id, active_dialog, alternate_text)
if(not(yl_speak_up.in_edit_mode(pname))) then
return old_talkdialog_main_text(pname, formspec, h, dialog, dialog_list, c_d_id, active_dialog)
return old_talkdialog_main_text(pname, formspec, h, dialog, dialog_list, c_d_id, active_dialog, alternate_text)
end
local d_id_to_dropdown_index = {}
-- allow to change skin, wielded items etc.

View File

@ -322,7 +322,9 @@ end
-- helper function for yl_speak_up.get_fs_talkdialog:
-- shows the text the NPC "speaks"
-- (this is pretty boring; the more intresting stuff happens in edit_mode)
yl_speak_up.get_fs_talkdialog_main_text = function(pname, formspec, h, dialog, dialog_list, c_d_id, active_dialog)
yl_speak_up.get_fs_talkdialog_main_text = function(pname, formspec, h, dialog, dialog_list, c_d_id, active_dialog, alternate_text)
local fs_version = yl_speak_up.fs_version[pname]
formspec = yl_speak_up.show_fs_npc_text(pname, formspec, dialog, alternate_text, active_dialog, fs_version)
return {h = h, formspec = formspec, d_id_to_dropdown_index = {}, dialog_list = dialog_list}
end
@ -594,9 +596,6 @@ yl_speak_up.get_fs_talkdialog = function(player, n_id, d_id, alternate_text, rec
"label[0.2,0.5;Ups! Something went wrong. Please try again.]"
end
-- Is the player working on this particular npc?
local edit_mode = (yl_speak_up.edit_mode[pname] == yl_speak_up.speak_to[pname].n_id)
-- evaluate the preconditions of each option and check if the option can be offered
local allowed = yl_speak_up.calculate_displayable_options(pname, active_dialog.d_options,
-- avoid loops by limiting max recoursion depths for autoanswers
@ -625,7 +624,8 @@ yl_speak_up.get_fs_talkdialog = function(player, n_id, d_id, alternate_text, rec
-- allow to change skin, wielded items etc.
-- display the window with the text the NPC is saying (diffrent in *edit_mode*)
local res_edit_top = yl_speak_up.get_fs_talkdialog_main_text(
pname, formspec, h, dialog, dialog_list, c_d_id, active_dialog)
pname, formspec, h, dialog, dialog_list, c_d_id, active_dialog,
alternate_text)
-- we are finished with adding buttons and text etc. to the left side of the formspec
local left_window_fs = table.concat(res_edit_top.formspec, "\n")
dialog_list = res_edit_top.dialog_list
@ -718,7 +718,7 @@ yl_speak_up.get_fs_talkdialog = function(player, n_id, d_id, alternate_text, rec
-- we are finished with adding buttons to the bottom of the formspec
local bottom_window_fs = table.concat(formspec, "\n")
return yl_speak_up.show_fs_decorated(pname, edit_mode, h, alternate_text,
return yl_speak_up.show_fs_decorated(pname, true, h, alternate_text,
left_window_fs, bottom_window_fs,
active_dialog, h)
end