mirror of
https://gitea.your-land.de/Sokomine/yl_speak_up.git
synced 2025-06-21 14:48:03 +02:00
quest steps are clickable from quest overview page
This commit is contained in:
parent
b621fe7b12
commit
3f9da138e0
@ -24,6 +24,11 @@ yl_speak_up.player_is_working_on_quest = function(player)
|
||||
-- TODO: check if the player has access to that data
|
||||
t.step_data = yl_speak_up.quests[t.q_id].step_data
|
||||
t.current_step = yl_speak_up.speak_to[t.pname].quest_step
|
||||
-- check here if the step exists
|
||||
if(t.current_step and not(t.step_data[t.current_step])) then
|
||||
yl_speak_up.speak_to[t.pname].quest_step = nil
|
||||
t.current_step = nil
|
||||
end
|
||||
-- t contains pname, q_id, quest, step_data and current_step - or error_msg
|
||||
return t
|
||||
end
|
||||
@ -166,22 +171,21 @@ yl_speak_up.input_fs_manage_quest_steps_check_fields = function(player, formname
|
||||
end
|
||||
|
||||
|
||||
-- makes use of yl_speak_up.input_fs_manage_general and is thus pretty short
|
||||
yl_speak_up.input_fs_manage_quest_steps = function(player, formname, fields)
|
||||
-- TODO: check if the player is allowed to access that quest
|
||||
local pname = player:get_player_name()
|
||||
|
||||
if(not(fields) or (fields and fields.back)) then
|
||||
yl_speak_up.show_fs(player, "manage_quests")
|
||||
return
|
||||
-- some lists are offered in diffrent formspecs for selection;
|
||||
-- this function will display the right quest step if possible
|
||||
-- res needs to be yl_speak_up.player_is_working_on_quest(player)
|
||||
yl_speak_up.input_routing_show_a_quest_step = function(player, formname, fields, back_field_name, res)
|
||||
if(not(player) or not(fields) or (fields and fields.back) or not(res)) then
|
||||
return false
|
||||
end
|
||||
local res = yl_speak_up.player_is_working_on_quest(player)
|
||||
|
||||
if(res.error_msg) then
|
||||
yl_speak_up.show_fs(player, "msg", {
|
||||
input_to = formname,
|
||||
formspec = yl_speak_up.get_fs_quest_edit_error(error_msg, "back_from_error_msg")
|
||||
formspec = yl_speak_up.get_fs_quest_edit_error(error_msg, back_field_name)
|
||||
})
|
||||
return
|
||||
return true
|
||||
end
|
||||
local step_data = res.step_data or {}
|
||||
|
||||
@ -203,24 +207,24 @@ yl_speak_up.input_fs_manage_quest_steps = function(player, formname, fields)
|
||||
-- selected an unconnected/unused quest step
|
||||
list = yl_speak_up.quest_step_get_start_end_unconnected_lists(step_data).unconnected_steps
|
||||
field_name = "select_from_unconnected_steps"
|
||||
elseif(res.current_step and fields.one_step_required) then
|
||||
elseif(res.current_step and step_data[res.current_step] and fields.one_step_required) then
|
||||
list = step_data[res.current_step].one_step_required
|
||||
field_name = "one_step_required"
|
||||
elseif(res.current_step and fields.all_steps_required) then
|
||||
elseif(res.current_step and step_data[res.current_step] and fields.all_steps_required) then
|
||||
list = step_data[res.current_step].all_steps_required
|
||||
field_name = "all_steps_required"
|
||||
elseif(res.current_step and fields.next_steps_show) then
|
||||
elseif(res.current_step and step_data[res.current_step] and fields.next_steps_show) then
|
||||
list = yl_speak_up.quest_step_required_for(step_data, res.current_step)
|
||||
field_name = "next_steps_show"
|
||||
elseif(fields.add_from_available) then
|
||||
-- selected a quest step from the list of available steps offered
|
||||
list = yl_speak_up.speak_to[pname].available_quest_steps or {}
|
||||
list = yl_speak_up.speak_to[res.pname].available_quest_steps or {}
|
||||
field_name = "add_from_available"
|
||||
-- this table has a header
|
||||
row_offset = 1
|
||||
|
||||
-- show prev logical step
|
||||
elseif(fields.show_prev_step) then
|
||||
elseif(fields.show_prev_step and res.current_step and step_data[res.current_step]) then
|
||||
if( #step_data[res.current_step].one_step_required > 0) then
|
||||
show_step = step_data[res.current_step].one_step_required[1]
|
||||
elseif(#step_data[res.current_step].all_steps_required > 0) then
|
||||
@ -243,18 +247,35 @@ yl_speak_up.input_fs_manage_quest_steps = function(player, formname, fields)
|
||||
end
|
||||
-- actually show the selected quest step
|
||||
if(show_step and show_step ~= "") then
|
||||
yl_speak_up.speak_to[pname].quest_step = show_step
|
||||
yl_speak_up.speak_to[res.pname].quest_step = show_step
|
||||
yl_speak_up.show_fs(player, "manage_quest_steps", show_step)
|
||||
return
|
||||
return true
|
||||
-- show the entire list
|
||||
elseif(fields.show_step_list) then
|
||||
yl_speak_up.speak_to[res.pname].tmp_index_general = -1
|
||||
yl_speak_up.speak_to[pname].quest_step = nil
|
||||
yl_speak_up.speak_to[res.pname].quest_step = nil
|
||||
yl_speak_up.show_fs(player, "manage_quest_steps", nil)
|
||||
return
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
-- makes use of yl_speak_up.input_fs_manage_general and is thus pretty short
|
||||
yl_speak_up.input_fs_manage_quest_steps = function(player, formname, fields)
|
||||
local pname = player:get_player_name()
|
||||
|
||||
if(not(fields) or (fields and fields.back)) then
|
||||
yl_speak_up.show_fs(player, "manage_quests")
|
||||
return
|
||||
end
|
||||
local res = yl_speak_up.player_is_working_on_quest(player)
|
||||
|
||||
-- show a particular quest step?
|
||||
if(yl_speak_up.input_routing_show_a_quest_step(player, formname, fields, "back_from_error_msg", res)) then
|
||||
return
|
||||
end
|
||||
|
||||
if(res.current_step) then
|
||||
-- forward input from that formspec...
|
||||
if((yl_speak_up.speak_to[res.pname].quest_step_mode == "embedded_select")
|
||||
|
@ -49,6 +49,15 @@ yl_speak_up.input_fs_manage_quests = function(player, formname, fields)
|
||||
yl_speak_up.show_fs(player, "manage_quest_steps")
|
||||
return
|
||||
end
|
||||
|
||||
-- show a particular quest step from the start/unconnected/end list?
|
||||
local res = yl_speak_up.player_is_working_on_quest(player)
|
||||
if(yl_speak_up.speak_to[pname]
|
||||
and yl_speak_up.speak_to[pname].q_id
|
||||
and yl_speak_up.input_routing_show_a_quest_step(player, formname, fields, "back", res)) then
|
||||
return
|
||||
end
|
||||
|
||||
local quest_list = yl_speak_up.get_sorted_quest_list(pname)
|
||||
local res = yl_speak_up.input_fs_manage_general(player, formname, fields,
|
||||
-- what_is_the_list_about, min_length, max_length, function_add_new_entry,
|
||||
@ -98,6 +107,13 @@ yl_speak_up.get_fs_manage_quests = function(player, param)
|
||||
quest = data
|
||||
end
|
||||
end
|
||||
|
||||
-- which quest is the player working on? that's important for showing quest steps
|
||||
if(not(yl_speak_up.speak_to[pname])) then
|
||||
yl_speak_up.speak_to[pname] = {}
|
||||
end
|
||||
yl_speak_up.speak_to[pname].q_id = quest.id
|
||||
|
||||
local quest_state_selected = table.indexof({"created","testing","open","official"}, quest.state)
|
||||
if(quest_state_selected == -1) then
|
||||
quest_state_selected = 1
|
||||
|
Loading…
Reference in New Issue
Block a user