mirror of
https://gitea.your-land.de/Sokomine/yl_speak_up.git
synced 2025-08-12 15:25:49 +02:00
implented action text_input
This commit is contained in:
parent
30420a6b42
commit
f8bc784776
@ -216,7 +216,8 @@ yl_speak_up.execute_action = function(player, n_id, o_id, a)
|
|||||||
yl_speak_up.show_fs(player, "action_npc_wants", a.a_value)
|
yl_speak_up.show_fs(player, "action_npc_wants", a.a_value)
|
||||||
return
|
return
|
||||||
elseif(a.a_type == "text_input") then
|
elseif(a.a_type == "text_input") then
|
||||||
yl_speak_up.show_fs(player, "action_text_input", a.a_value)
|
-- start with an empty answer
|
||||||
|
yl_speak_up.show_fs(player, "action_text_input", "")
|
||||||
return
|
return
|
||||||
elseif(a.a_type == "custom") then
|
elseif(a.a_type == "custom") then
|
||||||
yl_speak_up.show_fs(player, "action_custom", a.a_value)
|
yl_speak_up.show_fs(player, "action_custom", a.a_value)
|
||||||
@ -533,12 +534,57 @@ end
|
|||||||
|
|
||||||
|
|
||||||
yl_speak_up.input_fs_action_text_input = function(player, formname, fields)
|
yl_speak_up.input_fs_action_text_input = function(player, formname, fields)
|
||||||
-- TODO implement text_input action
|
-- back from error_msg? then show the formspec again
|
||||||
|
if(fields.back_from_error_msg) then
|
||||||
|
-- the error message is only shown if the input was empty
|
||||||
|
yl_speak_up.show_fs(player, "action_text_input", "")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local pname = player:get_player_name()
|
||||||
|
local a_id = yl_speak_up.speak_to[pname].a_id
|
||||||
|
local a = yl_speak_up.get_action_by_player(player)
|
||||||
|
if(fields.back_to_talk) then
|
||||||
|
-- the action failed
|
||||||
|
yl_speak_up.execute_next_action(player, a_id, false)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if(fields.finished_action and fields.quest_answer and fields.quest_answer ~= "") then
|
||||||
|
-- is the answer correct?
|
||||||
|
-- TODO: strip leading and tailing blanks?
|
||||||
|
local success = not(not(fields.quest_answer and fields.quest_answer == a.a_value))
|
||||||
|
-- the action was a either a success or failure
|
||||||
|
yl_speak_up.execute_next_action(player, a_id, success)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
-- else show a message to the player
|
||||||
|
yl_speak_up.show_fs(player, "msg", {
|
||||||
|
input_to = "yl_speak_up:action_text_input",
|
||||||
|
formspec = "size[7,1.5]"..
|
||||||
|
"label[0.2,-0.2;"..
|
||||||
|
"Please answer the question and click on \"Send answer\"!\n"..
|
||||||
|
"If you don't know the answer, click on \"Back to talk\".]"..
|
||||||
|
"button[2,1.0;1.5,0.9;back_from_error_msg;Back]"})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
yl_speak_up.get_fs_action_text_input = function(player, param)
|
yl_speak_up.get_fs_action_text_input = function(player, param)
|
||||||
-- TODO implement text input formspec
|
local pname = player:get_player_name()
|
||||||
|
local dialog = yl_speak_up.speak_to[pname].dialog
|
||||||
|
local a = yl_speak_up.get_action_by_player(player)
|
||||||
|
if(not(a)) then
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
return "size[12.0,4.5]"..
|
||||||
|
"button[0.2,0.0;2.0,0.9;back_to_talk;Back to talk]"..
|
||||||
|
"button[2.0,3.7;3.0,0.9;finished_action;Send answer]"..
|
||||||
|
|
||||||
|
"tooltip[back_to_talk;Click here if you don't know the answer.]"..
|
||||||
|
"tooltip[finished_action;Click here once you've entered the answer.]"..
|
||||||
|
"label[0.2,1.2;"..minetest.formspec_escape(a.a_question or "Your answer:").."]"..
|
||||||
|
"label[0.2,1.9;Answer:]"..
|
||||||
|
"field[1.6,2.2;10.0,0.6;quest_answer;;"..tostring(param or "").."]"..
|
||||||
|
"label[0.2,2.8;"..minetest.formspec_escape(
|
||||||
|
"["..(dialog.n_npc or "- ? -").." looks expectantly at you.]").."]"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user