From b9bbf0380f1e2eef0b32e13dc959cd2d0d1d7084 Mon Sep 17 00:00:00 2001 From: Nathan Schneider Date: Fri, 30 Jul 2021 14:46:22 -0600 Subject: [PATCH] experimenting with passing functions through interactions --- modpol/interactions/interactions.lua | 30 +++++++++++-------- .../overrides/interactions/interactions.lua | 1 - 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/modpol/interactions/interactions.lua b/modpol/interactions/interactions.lua index 36534ac..397268b 100644 --- a/modpol/interactions/interactions.lua +++ b/modpol/interactions/interactions.lua @@ -105,29 +105,35 @@ end -- =================================================================== -- Function: modpol.interactions.text_query --- input: Query (string) --- output: User response (string) -function modpol.interactions.text_query(query) - -- TODO +-- input: User (string), Query (string), func (function) +-- func input: user input (string) +-- output: Applies "func" to user input +function modpol.interactions.text_query(user, query, func) + print(user .. ": " .. query) + answer = io.read() + func(answer) end -- =================================================================== -- Function: modpol.binary_poll_user(user, question) --- Params: user (string), question (string) --- Output: --- presents a yes/no/abstain poll to a user, returns answer -function modpol.interactions.binary_poll_user(user, question) +-- Params: user (string), question (string), func (function) +-- func input: user input (string: y/n) +-- Output: Applies "func" to user input +-- presents a yes/no poll to a user, returns answer +function modpol.interactions.binary_poll_user(user, question, func) local query = "Poll for " .. user .. " (y/n): ".. question local answer repeat print(query) answer = io.read() - until answer == "y" or answer == "n" or answer == "a" + until answer == "y" or answer == "n" if answer == "y" then - return "yes" + modpol.interactions.message(user, "Response recorded") + func("yes") elseif answer == "n" then - return "no" + modpol.interactions.message(user, "Response recorded") + func("no") else - return "abstain" + modpol.interactions.message(user, "Error: invalid response") end end diff --git a/modpol_minetest/overrides/interactions/interactions.lua b/modpol_minetest/overrides/interactions/interactions.lua index 33f7103..e34058e 100644 --- a/modpol_minetest/overrides/interactions/interactions.lua +++ b/modpol_minetest/overrides/interactions/interactions.lua @@ -198,7 +198,6 @@ minetest.register_on_player_receive_fields(function (player, formname, fields) modpol.interactions.text_query(pname, "Org name:") -- local new_org_name = _contexts[pname]["new_org_name"] _contexts[pname] = function(input) - local new_request = { user = pname, type = "add_org",