1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- -- ===================================================================
- -- Function: modpol.binary_poll_user(user, question)
- -- Overwrites function at /interactions.lua
- -- presents a yes/no/abstain poll to a user, returns answer
- modpol.binary_poll_user = function(user, question)
- -- set up formspec
- local text = "Poll: " .. question
- local formspec = {
- "formspec_version[4]",
- "size[5,3]",
- "label[0.375,0.5;", minetest.formspec_escape(text), "]",
- "button[1,1.5;1,0.8;yes;Yes]",
- "button[2,1.5;1,0.8;no;No]",
- "button[3,1.5;1,0.8;abstain;Abstain]"
- --TKTK can we enable text wrapping?
- --TKTK we could use scroll boxes to contain the text
- }
- local formspec_string = table.concat(formspec, "")
- -- present to player
- minetest.show_formspec(user, "modpol:binary_poll", formspec_string)
- end
-
- --what to do
- minetest.register_on_player_receive_fields(function (player, formname, fields)
- -- modpol:poll
- if formname == "modpol:binary_poll" then
- local pname = player:get_player_name()
- local vote = nil
- if fields.yes then vote = fields.yes
- elseif fields.no then vote = fields.no
- elseif fields.abstain then vote = fields.abstain
- end
- if vote then
- minetest.chat_send_all(pname .. " voted " .. vote)
- --TKTK : we should send the message to all in that org, definately not to all players
- end
- minetest.close_formspec(pname, formname)
- return vote
- else -- if the form is not a recognized name
- return
- end
- end)
|