-- route player input to the right functions; -- return true when the right function has been found minetest.register_on_player_receive_fields( function(player, formname, fields) if formname == "yl_speak_up:optiondialog" then yl_speak_up.input_optiondialog(player, formname, fields) return true elseif formname == "yl_speak_up:setdialog" then yl_speak_up.input_setdialog(player, formname, fields) return true elseif formname == "yl_speak_up:confirm_save" then yl_speak_up.input_confirm_save(player, formname, fields) return true -- handled in fs_edit_options_dialog.lua elseif formname == "yl_speak_up:edit_option_dialog" then yl_speak_up.input_edit_option_dialog(player, formname, fields) return true elseif formname == "yl_speak_up:talk" then yl_speak_up.input_talk(player, formname, fields) return true elseif formname == "yl_speak_up:fashion" then yl_speak_up.input_fashion(player, formname, fields) return true -- handled in inventory.lua elseif formname == "yl_speak_up:inventory" then yl_speak_up.input_inventory(player, formname, fields) return true -- handled in trade_list.lua elseif formname == "yl_speak_up:trade_list" then yl_speak_up.input_trade_list(player, formname, fields) return true -- handled in trade_simple.lua elseif formname == "yl_speak_up:do_trade_simple" then yl_speak_up.input_do_trade_simple(player, formname, fields) return true -- (as above - also handled in trade_simple.lua) elseif formname == "yl_speak_up:add_trade_simple" then yl_speak_up.input_add_trade_simple(player, formname, fields) return true -- handled in fs_initial_config.lua elseif formname == "yl_speak_up:initial_config" then yl_speak_up.input_fs_initial_config(player, formname, fields) return true -- handled in fs_edit_preconditions.lua elseif formname == "yl_speak_up:edit_preconditions" then yl_speak_up.input_fs_edit_preconditions(player, formname, fields) return true -- handled in fs_edit_actions.lua elseif formname == "yl_speak_up:edit_actions" then yl_speak_up.input_fs_edit_actions(player, formname, fields) return true -- handled in fs_edit_actions.lua elseif formname == "yl_speak_up:action_npc_gives" then yl_speak_up.input_fs_action_npc_gives(player, formname, fields) return true elseif formname == "yl_speak_up:action_npc_wants" then yl_speak_up.input_fs_action_npc_wants(player, formname, fields) return true elseif formname == "yl_speak_up:action_text_input" then yl_speak_up.input_fs_action_text_input(player, formname, fields) return true elseif formname == "yl_speak_up:action_custom" then yl_speak_up.input_fs_action_custom(player, formname, fields) return true -- handled in fs_edit_effects.lua elseif formname == "yl_speak_up:edit_effects" then yl_speak_up.input_fs_edit_effects(player, formname, fields) return true end end) -- call show_formspec with the right input_* function for the right formspec -- (handles all show_formspec-calls) yl_speak_up.show_fs = function(player, fs_name, param) if(not(player)) then return end local pname = player:get_player_name() -- this is here mostly to fascilitate debugging - so that really all calls to -- minetest.show_formspec are routed through here if(fs_name == "msg") then if(not(param)) then param = {} end minetest.show_formspec(pname, param.input_to, param.formspec) -- staff-based editing elseif(fs_name == "optiondialog") then if(not(param)) then param = {} end minetest.show_formspec(pname, "yl_speak_up:optiondialog", yl_speak_up.get_fs_optiondialog(player, param.n_id, param.d_id, param.o_id, param.p_id, param.r_id)) elseif(fs_name == "setdialog") then if(not(param)) then param = {} end minetest.show_formspec(pname, "yl_speak_up:setdialog", yl_speak_up.get_fs_setdialog(player, param.n_id, param.d_id)) -- "confirm_save" does not have its own option here; doesn't have a get_fs_-function either elseif(fs_name == "edit_option_dialog") then -- the optional "caller" parameter can be used for debugging if(not(param)) then param = {} end minetest.show_formspec(pname, "yl_speak_up:edit_option_dialog", yl_speak_up.get_fs_edit_option_dialog(player, param.n_id, param.d_id, param.o_id)) elseif(fs_name == "talk") then if(not(param)) then param = {} end minetest.show_formspec(pname, "yl_speak_up:talk", yl_speak_up.get_fs_talkdialog(player, param.n_id, param.d_id)) elseif(fs_name == "fashion") then minetest.show_formspec(pname, "yl_speak_up:fashion", yl_speak_up.get_fs_fashion(pname)) elseif(fs_name == "inventory") then minetest.show_formspec(pname, "yl_speak_up:inventory", yl_speak_up.get_fs_inventory(player)) elseif(fs_name == "trade_list") then minetest.show_formspec(pname, "yl_speak_up:trade_list", yl_speak_up.get_fs_trade_list(player, param)) elseif(fs_name == "trade_simple") then -- the optional parameter param is the trade_id if(not(param) and yl_speak_up.speak_to[pname]) then param = yl_speak_up.speak_to[pname].trade_id end minetest.show_formspec(pname, "yl_speak_up:do_trade_simple", yl_speak_up.get_fs_trade_simple(player, param)) elseif(fs_name == "add_trade_simple") then -- the optional parameter param is the trade_id if(not(param) and yl_speak_up.speak_to[pname]) then param = yl_speak_up.speak_to[pname].trade_id end minetest.show_formspec(pname, "yl_speak_up:add_trade_simple", yl_speak_up.get_fs_add_trade_simple(player, param)) elseif(fs_name == "initial_config") then if(not(param)) then param = {} end minetest.show_formspec(pname, "yl_speak_up:initial_config", yl_speak_up.get_fs_initial_config(player, param.n_id, param.d_id, param.is_initial_config)) elseif(fs_name == "edit_preconditions") then minetest.show_formspec(pname, "yl_speak_up:edit_preconditions", yl_speak_up.get_fs_edit_preconditions(player, param)) elseif(fs_name == "edit_actions") then minetest.show_formspec(pname, "yl_speak_up:edit_actions", yl_speak_up.get_fs_edit_actions(player, param)) elseif(fs_name == "edit_effects") then minetest.show_formspec(pname, "yl_speak_up:edit_effects", yl_speak_up.get_fs_edit_effects(player, param)) -- action related elseif(fs_name == "action_npc_gives") then minetest.show_formspec(pname, "yl_speak_up:action_npc_gives", yl_speak_up.get_fs_action_npc_gives(player, param)) elseif(fs_name == "action_npc_wants") then minetest.show_formspec(pname, "yl_speak_up:action_npc_wants", yl_speak_up.get_fs_action_npc_wants(player, param)) elseif(fs_name == "action_text_input") then minetest.show_formspec(pname, "yl_speak_up:action_text_input", yl_speak_up.get_fs_action_text_input(player, param)) elseif(fs_name == "action_custom") then minetest.show_formspec(pname, "yl_speak_up:action_custom", yl_speak_up.get_fs_action_npc_gives(player, param)) -- fallback in case of wrong call else minetest.chat_send_player(pname, "Error: Trying to show wrong ".. "formspec: \""..tostring(fs_name).."\". Please notify ".. "an admin.") end end