mirror of
https://gitlab.com/lunovox/e-urn.git
synced 2025-03-15 07:21:22 +00:00
[feat] Adicionando interface gráfica!
This commit is contained in:
parent
e5684c5747
commit
9c63aa9b40
3 changed files with 292 additions and 121 deletions
142
api.lua
142
api.lua
|
@ -3,6 +3,65 @@ minetest.register_privilege("electoraljudge", {
|
|||
give_to_singleplayer=false,
|
||||
})
|
||||
|
||||
modEUrn.debug = function(text, playername)
|
||||
if text ~= nil
|
||||
and type(text) == "string"
|
||||
and text ~= ""
|
||||
then
|
||||
if minetest.settings:get_bool("eurn.debug") then
|
||||
if playername ~= nil
|
||||
and type(playername) == "string"
|
||||
and playername ~= ""
|
||||
then
|
||||
local player = minetest.get_player_by_name(playername)
|
||||
if player ~=nil and player:is_player() then
|
||||
minetest.chat_send_player(
|
||||
playername, text
|
||||
)
|
||||
minetest.log('action',"["..modEUrn.modname:upper()..":DEBUG:"..playername.."] "..text)
|
||||
else
|
||||
minetest.log('error',
|
||||
"["..modEUrn.modname:upper()..":DEBUG] "
|
||||
..modEUrn.translate(
|
||||
"Unable to address debug for player '%s'."
|
||||
):format(dump(playername))
|
||||
)
|
||||
minetest.log('action',"["..modEUrn.modname:upper()..":DEBUG] "..text)
|
||||
end
|
||||
else
|
||||
minetest.chat_send_all(text)
|
||||
minetest.log('action',"["..modEUrn.modname:upper()..":DEBUG] "..text)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
modEUrn.unsortTableByValue = function(tbl)
|
||||
if type(tbl)~="table" then
|
||||
tbl = {}
|
||||
end
|
||||
|
||||
--modEUrn.debug("modEUrn.unsortTableByValue(): tbl = "..dump(tbl))
|
||||
table.sort(tbl, function(a, b)
|
||||
local aaa = "a(%s) > b(%s)"
|
||||
aaa = aaa:format(dump(a), dump(b))
|
||||
modEUrn.debug(aaa)
|
||||
return a >= b
|
||||
end)
|
||||
--modEUrn.debug("modEUrn.unsortTableByValue(): tbl = "..dump(tbl))
|
||||
|
||||
return tbl
|
||||
end
|
||||
|
||||
modEUrn.sortTableLenght = function(t)
|
||||
local count = 0
|
||||
--modEUrn.debug("t = "..dump(t))
|
||||
for _ in pairs(t) do
|
||||
count = count + 1
|
||||
end
|
||||
return count
|
||||
end
|
||||
|
||||
modEUrn.handler = {
|
||||
elected = {
|
||||
president = {
|
||||
|
@ -71,6 +130,7 @@ modEUrn.getPresidentName = function()
|
|||
then
|
||||
return modEUrn.handler.elected.president.name
|
||||
end
|
||||
return ""
|
||||
end
|
||||
|
||||
modEUrn.doPresident = function(playername, candidatename)
|
||||
|
@ -161,10 +221,12 @@ end
|
|||
|
||||
modEUrn.getPresCandCampaign = function(candidatename)
|
||||
local political_campaign = "There are no campaign data about this political candidate."
|
||||
if type(modEUrn.handler.candidates.president[candidatename].political_campaign)=="string"
|
||||
--modEUrn.debug("candidatename="..dump(candidatename))
|
||||
if type(modEUrn.handler.candidates.president[candidatename])=="table"
|
||||
and type(modEUrn.handler.candidates.president[candidatename].political_campaign)=="string"
|
||||
and modEUrn.handler.candidates.president[candidatename].political_campaign ~= ""
|
||||
then
|
||||
political_campaign =modEUrn.handler.candidates.president[candidatename].political_campaign
|
||||
political_campaign = modEUrn.handler.candidates.president[candidatename].political_campaign
|
||||
end
|
||||
return political_campaign
|
||||
end
|
||||
|
@ -178,6 +240,63 @@ modEUrn.getPresidentCandidates = function()
|
|||
return cands
|
||||
end
|
||||
|
||||
modEUrn.showPresCandCampaign = function(playername, candidatename)
|
||||
if type(candidatename)=="string" and candidatename ~= "" then --Se o nome do candidato foi dito
|
||||
if minetest.player_exists(candidatename) then --Se existe algum jogador o nome que foi dito
|
||||
if type(modEUrn.handler.candidates.president[candidatename])=="table" then --Se foi algum candidato registrado.
|
||||
local player = minetest.get_player_by_name(playername)
|
||||
if player:is_player() then --verifica se o jogador está online ou por terminal
|
||||
modEUrn.FormSpecs.showFormInfoCampaign(playername, candidatename)
|
||||
else
|
||||
minetest.chat_send_player(
|
||||
playername,
|
||||
core.colorize("#00FF00", "[E-URN]").." "
|
||||
..core.colorize("#888888",
|
||||
modEUrn.translate("Candidate Name")..": "
|
||||
)
|
||||
..core.colorize("#00FF00", candidatename)
|
||||
)
|
||||
local Campaign = modEUrn.getPresCandCampaign(candidatename)
|
||||
if type(Campaign)=="string" and Campaign~="" then
|
||||
minetest.chat_send_player(
|
||||
playername,
|
||||
core.colorize("#00FF00", "[E-URN]").." "
|
||||
..core.colorize("#888888",
|
||||
modEUrn.translate("Candidate Campaign")..": "
|
||||
)
|
||||
..Campaign
|
||||
)
|
||||
end
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(
|
||||
playername,
|
||||
core.colorize("#FF0000", "[E-URN]").." "
|
||||
..modEUrn.translate("Player %s is not registered as a candidate for president!"):format(candidatename)
|
||||
)
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(
|
||||
playername,
|
||||
--os.date("%Y-%m-%d %Hh:%Mm:%Ss", now) ..
|
||||
core.colorize("#FF0000", "[E-URN]").." "
|
||||
..modEUrn.translate("The name '%s' is not the player name registered on the server!"):format(candidatename)
|
||||
)
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(
|
||||
playername,
|
||||
--os.date("%Y-%m-%d %Hh:%Mm:%Ss", now) ..
|
||||
core.colorize("#FF0000", "[E-URN]").." "
|
||||
..modEUrn.translate("Please enter the name of the candidate you wish to display the campaign!").."\n"
|
||||
..core.colorize("#888888", "Syntaxe: ")
|
||||
..core.colorize("#00FFFF",
|
||||
"/campaign <"..modEUrn.translate("candidate_name")..">"
|
||||
)
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
modEUrn.doCheckPresident = function()
|
||||
--Verifica registra quem será o presidente pela maioria de voto do candidato.
|
||||
if #modEUrn.handler.candidates.president >= 1 then
|
||||
|
@ -261,23 +380,10 @@ minetest.register_on_shutdown(function()
|
|||
--minetest.log('action',"[E-URN] "..modEUrn.translate("Saving the database from all players in the file '%s'!"):format(modEUrn.urlTabela))
|
||||
end)
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if type(formname)~="string" and formname == "eurn" then
|
||||
local playername = player:get_player_name()
|
||||
if type(fields.txtCampaign)=="string"
|
||||
and (
|
||||
type(fields.key_enter) ~= "nil"
|
||||
or type(fields.btnSave) ~= "nil"
|
||||
)
|
||||
then
|
||||
modEUrn.doPresidentCandidate(playername, playername, fields.txtCampaign)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.after(3.5, function()
|
||||
minetest.register_globalstep(function(dtime)
|
||||
local presname = modEUrn.handler.elected.president.name
|
||||
--local presname = modEUrn.handler.elected.president.name
|
||||
local presname = modEUrn.getPresidentName()
|
||||
if type(presname)=="string" and presname~="" then
|
||||
local mesAtual = os.date("%m", os.time())
|
||||
local mesChecked = os.date("%m", tonumber(modEUrn.handler.elected.president.when) or os.time())
|
||||
|
@ -287,3 +393,5 @@ minetest.after(3.5, function()
|
|||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
|
||||
|
|
149
commands.lua
149
commands.lua
|
@ -75,16 +75,22 @@ modEUrn.getPropCommCandidateMe = function()
|
|||
params = "[<".. modEUrn.translate("political campaign")..">]",
|
||||
description = modEUrn.translate("Register your campaign to run for server president."),
|
||||
func = function(playername, political_campaign)
|
||||
local candidatename = playername
|
||||
if modEUrn.doPresidentCandidate(playername, candidatename, political_campaign) then
|
||||
modEUrn.doSave()
|
||||
minetest.chat_send_player(
|
||||
playername,
|
||||
--os.date("%Y-%m-%d %Hh:%Mm:%Ss", now) ..
|
||||
core.colorize("#00FF00", "[E-URN]").." "
|
||||
..modEUrn.translate("Player %s has been registered to run as a candidate for president of this server!"):format(dump(candidatename))
|
||||
)
|
||||
end
|
||||
local player = minetest.get_player_by_name(playername)
|
||||
if player and player:is_player() then
|
||||
--modEUrn.debug("playername='"..playername.."' | political_campaign='"..political_campaign.."'")
|
||||
modEUrn.FormSpecs.showFormRegCampaign(playername, political_campaign)
|
||||
else
|
||||
local candidatename = playername
|
||||
if modEUrn.doPresidentCandidate(playername, candidatename, political_campaign) then
|
||||
modEUrn.doSave()
|
||||
minetest.chat_send_player(
|
||||
playername,
|
||||
--os.date("%Y-%m-%d %Hh:%Mm:%Ss", now) ..
|
||||
core.colorize("#00FF00", "[E-URN]").." "
|
||||
..modEUrn.translate("Player %s has been registered to run as a candidate for president of this server!"):format(dump(candidatename))
|
||||
)
|
||||
end
|
||||
end
|
||||
end,
|
||||
}
|
||||
end
|
||||
|
@ -156,56 +162,7 @@ modEUrn.getPropCommCandCampaign = function()
|
|||
params = "<".. modEUrn.translate("candidate_name")..">",
|
||||
description = modEUrn.translate("Show the Campaign of candidate for president."),
|
||||
func = function(playername, candidatename)
|
||||
if type(candidatename)=="string" and candidatename ~= "" then
|
||||
|
||||
if minetest.player_exists(candidatename) then
|
||||
if type(modEUrn.handler.candidates.president[candidatename])=="table" then
|
||||
minetest.chat_send_player(
|
||||
playername,
|
||||
core.colorize("#00FF00", "[E-URN]").." "
|
||||
..core.colorize("#888888",
|
||||
modEUrn.translate("Candidate Name: ")
|
||||
)
|
||||
..core.colorize("#00FF00", candidatename)
|
||||
)
|
||||
local Campaign = modEUrn.getPresCandCampaign(candidatename)
|
||||
if type(Campaign)=="string" and Campaign~="" then
|
||||
minetest.chat_send_player(
|
||||
playername,
|
||||
core.colorize("#00FF00", "[E-URN]").." "
|
||||
..core.colorize("#888888",
|
||||
modEUrn.translate("Candidate Campaign: ")
|
||||
)
|
||||
..Campaign
|
||||
)
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(
|
||||
playername,
|
||||
core.colorize("#FF0000", "[E-URN]").." "
|
||||
..modEUrn.translate("Player %s is not registered as a candidate for president!"):format(candidatename)
|
||||
)
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(
|
||||
playername,
|
||||
--os.date("%Y-%m-%d %Hh:%Mm:%Ss", now) ..
|
||||
core.colorize("#FF0000", "[E-URN]").." "
|
||||
..modEUrn.translate("The name '%s' is not the player name registered on the server!"):format(candidatename)
|
||||
)
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(
|
||||
playername,
|
||||
--os.date("%Y-%m-%d %Hh:%Mm:%Ss", now) ..
|
||||
core.colorize("#FF0000", "[E-URN]").." "
|
||||
..modEUrn.translate("Please enter the name of the candidate you wish to display the campaign!").."\n"
|
||||
..core.colorize("#888888", "Syntaxe: ")
|
||||
..core.colorize("#00FFFF",
|
||||
"/campaign <"..modEUrn.translate("candidate_name")..">"
|
||||
)
|
||||
)
|
||||
end
|
||||
modEUrn.showPresCandCampaign(playername, candidatename)
|
||||
end,
|
||||
}
|
||||
end
|
||||
|
@ -238,7 +195,10 @@ modEUrn.getPropCommCandVote = function()
|
|||
--modEUrn.handler.voters[playername].times.played
|
||||
|
||||
for iCandPresName, _ in pairs(modEUrn.handler.candidates.president) do
|
||||
--modEUrn.debug("iCandPresName = "..iCandPresName)
|
||||
if type(modEUrn.handler.candidates.president[iCandPresName].voters[playername])~="nil" then
|
||||
--modEUrn.debug("modEUrn.handler.candidates.president["..iCandPresName.."].voters = "..dump(modEUrn.handler.candidates.president[iCandPresName].voters))
|
||||
modEUrn.handler.candidates.president[iCandPresName].voters[playername] = nil
|
||||
break
|
||||
end
|
||||
end
|
||||
|
@ -255,7 +215,7 @@ modEUrn.getPropCommCandVote = function()
|
|||
minetest.chat_send_player(
|
||||
playername,
|
||||
core.colorize("#FF0000", "[E-URN]").." "
|
||||
..modEUrn.translate("Player %s is not registered as a candidate for president!"):format(candidatename)
|
||||
..modEUrn.translate("Player '%s' is not registered as a candidate for president!"):format(candidatename)
|
||||
)
|
||||
end
|
||||
else
|
||||
|
@ -299,6 +259,71 @@ minetest.register_chatcommand(
|
|||
modEUrn.getPropCommCandVote()
|
||||
)
|
||||
|
||||
--############################################################################
|
||||
|
||||
modEUrn.getPropCommVotes = function()
|
||||
return {
|
||||
privs = {electoraljudge=true},
|
||||
--params = "<".. modEUrn.translate("candidate_name")..">",
|
||||
description = modEUrn.translate("Displays the number of votes for each candidate!"),
|
||||
func = function(playername, candidatename)
|
||||
--modEUrn.debug("modEUrn.handler.candidates.president = "..dump(modEUrn.handler.candidates.president))
|
||||
--modEUrn.debug("modEUrn.sortTableLenght(modEUrn.handler.candidates.president) = "..modEUrn.sortTableLenght(modEUrn.handler.candidates.president))
|
||||
if type(modEUrn.handler.candidates.president)=="table" then
|
||||
local votes = {}
|
||||
for iCandPresName, iCandPresTable in pairs(modEUrn.handler.candidates.president) do
|
||||
local num = modEUrn.sortTableLenght(iCandPresTable.voters)
|
||||
if type(iCandPresTable.voters)=="table" and num >= 1 then
|
||||
votes[iCandPresName] = num
|
||||
--modEUrn.debug("num = "..num)
|
||||
end
|
||||
end
|
||||
|
||||
if modEUrn.sortTableLenght(votes) >= 1 then
|
||||
--modEUrn.debug(dump(votes))
|
||||
votes = modEUrn.unsortTableByValue(votes)
|
||||
--modEUrn.debug(dump(votes))
|
||||
local strVotes = ""
|
||||
for iCandPresName, iCandPresVotes in pairs(votes) do
|
||||
--modEUrn.debug("modEUrn.getPropCommVotes(): iCandPresName = "..dump(iCandPresName).." | iCandPresVotes = "..dump(iCandPresVotes))
|
||||
if strVotes=="" then
|
||||
strVotes = modEUrn.translate(" * %s : %02d votes"):format(iCandPresName, iCandPresVotes)
|
||||
else
|
||||
strVotes = strVotes.."\n"..modEUrn.translate(" * %s : %02d votes"):format(iCandPresName, iCandPresVotes)
|
||||
end
|
||||
end
|
||||
minetest.chat_send_player(
|
||||
playername,
|
||||
core.colorize("#00FF00", "[E-URN]").." "
|
||||
..modEUrn.translate("Voting list for presidential election: ").."\n"..strVotes
|
||||
)
|
||||
|
||||
--]]
|
||||
|
||||
else
|
||||
minetest.chat_send_player(
|
||||
playername,
|
||||
core.colorize("#FF0000", "[E-URN]").." "
|
||||
..modEUrn.translate("No one has voted in the presidential election yet!")
|
||||
--..core.colorize("#00FF00", candidatename)
|
||||
)
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(
|
||||
playername,
|
||||
core.colorize("#FF0000", "[E-URN]").." "
|
||||
..modEUrn.translate("There is no registered candidate for the presidential election!")
|
||||
--..core.colorize("#00FF00", candidatename)
|
||||
)
|
||||
end
|
||||
end,
|
||||
}
|
||||
end
|
||||
|
||||
minetest.register_chatcommand(
|
||||
"votes",
|
||||
modEUrn.getPropCommVotes()
|
||||
)
|
||||
|
||||
--############################################################################
|
||||
|
||||
|
@ -326,4 +351,4 @@ minetest.register_chatcommand(
|
|||
end,
|
||||
}
|
||||
)
|
||||
--]]
|
||||
--]]
|
||||
|
|
122
formspecs.lua
122
formspecs.lua
|
@ -1,48 +1,58 @@
|
|||
local body = [[
|
||||
|
||||
|
||||
|
||||
<center>
|
||||
<img name=favicon.png float=center width=96 height=96>
|
||||
<style font=mono color=#FF0000 size=24><b>OLÁ %s!</b></style>
|
||||
</center>
|
||||
|
||||
Esse é um <action name=lnkExemplo1><item name=default:sword_wood valign=middle width=14 height=14> Exemplo de Link</action> em formato hyperlink. (Não é funcional!)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<center>
|
||||
-= Fim =-
|
||||
<bigger>=D</bigger>
|
||||
</center>
|
||||
|
||||
]]
|
||||
|
||||
|
||||
modEUrn.FormSpecs = {
|
||||
showFormRegCampaign = function(playername, political_campaign)
|
||||
local Campaign = modEUrn.getPresCandCampaign(playername)
|
||||
if type(political_campaign)~="string" or political_campaign==""then
|
||||
political_campaign = Campaign
|
||||
end
|
||||
|
||||
|
||||
local myFormSpec = ""
|
||||
myFormSpec = myFormSpec
|
||||
.."formspec_version[6]"
|
||||
.."size[16,8,false]"
|
||||
.."background[0,-8;16,16;text_eurn_front.png]"
|
||||
.."box[0.5,0.75;15,5.75;#000000CC]"
|
||||
.."textarea[0.5,0.75;15,5.75;txtCampaign;"
|
||||
..minetest.formspec_escape(
|
||||
modEUrn.translate("Campanha Política de")..": "..
|
||||
core.colorize("#00FF00", playername)
|
||||
)..";"
|
||||
..minetest.formspec_escape(political_campaign)..
|
||||
"]"
|
||||
.."button_exit[0.5,6.75;12.25,1;btnSave;"..modEUrn.translate("REGISTER").."]"
|
||||
.."button_exit[13.25,6.75;2,1;;"..modEUrn.translate("CANCEL").."]"
|
||||
|
||||
minetest.show_formspec(playername, "frmEUrnRegCampaign", myFormSpec)
|
||||
end,
|
||||
showFormInfoCampaign = function(playername, candidatename)
|
||||
local Campaign = modEUrn.getPresCandCampaign(candidatename)
|
||||
--if type(modEUrn.handler.candidates.president[candidatename])=="nil" then Campaign = "" end
|
||||
local myFormSpec = ""
|
||||
myFormSpec = myFormSpec
|
||||
.."formspec_version[6]"
|
||||
.."size[16,8,false]"
|
||||
.."background[0,-8;16,16;text_eurn_front.png]"
|
||||
.."box[0.5,0.75;15,5.75;#00000088]"
|
||||
.."textarea[0.5,0.75;15,5.75;;"
|
||||
..minetest.formspec_escape(
|
||||
modEUrn.translate("Campanha Política de")..": "..
|
||||
core.colorize("#00FF00", candidatename)
|
||||
)..";"
|
||||
..minetest.formspec_escape(Campaign)..
|
||||
"]"
|
||||
--.."button_exit[0.5,6.75;11,1;btnSave;"..modEUrn.translate("REGISTER").."]"
|
||||
.."button_exit[0.5,6.75;15,1;;"..modEUrn.translate("CLOSE").."]"
|
||||
|
||||
minetest.log('action', modEUrn.translate("Player %s is listing campaign data..."):format(playername))
|
||||
minetest.log('action',modEUrn.translate("Candidate Name")..candidatename)
|
||||
minetest.log('action',modEUrn.translate("Candidate Campaign")..Campaign)
|
||||
|
||||
minetest.show_formspec(playername, "frmEUrnInfoCampaign", myFormSpec)
|
||||
end,
|
||||
|
||||
--[[
|
||||
showHypertext = function(playername)
|
||||
--Fonte:
|
||||
-- * https://minetest.gitlab.io/minetest/formspec/
|
||||
|
@ -76,4 +86,32 @@ modEUrn.FormSpecs = {
|
|||
--"hypertext[<X>,<Y>;<W>,<H>;<name>;<text>]"
|
||||
minetest.show_formspec(playername, "frmEUrnInit", myFormSpec)
|
||||
end,
|
||||
--]]
|
||||
}
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
local playername = player:get_player_name()
|
||||
--[[
|
||||
modEUrn.debug(
|
||||
"formname: "..formname.."\n"
|
||||
.."fields: "..dump(fields),
|
||||
playername
|
||||
)
|
||||
--]]
|
||||
if type(formname)=="string" and formname == "frmEUrnRegCampaign" then
|
||||
if type(fields.txtCampaign)~= "nil" and type(fields.btnSave) ~= "nil"
|
||||
then
|
||||
--modEUrn.debug("modEUrn.doPresidentCandidate(playername='"..playername.."', playername='"..playername.."', fields.txtCampaign="..dump(fields.txtCampaign)..")")
|
||||
if modEUrn.doPresidentCandidate(playername, playername, fields.txtCampaign) then
|
||||
modEUrn.doSave()
|
||||
minetest.chat_send_player(
|
||||
playername,
|
||||
--os.date("%Y-%m-%d %Hh:%Mm:%Ss", now) ..
|
||||
core.colorize("#00FF00", "[E-URN]").." "
|
||||
..modEUrn.translate("Player %s has been registered to run as a candidate for president of this server!"):format(dump(playername))
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue