1
0
mirror of https://github.com/Refactorio/RedMew.git synced 2025-01-26 03:52:00 +02:00
RedMew/map_gen/maps/crash_site/map_poll.lua
2023-10-17 17:42:17 +01:00

97 lines
1.9 KiB
Lua

local Poll = require 'features.gui.poll'
local Global = require 'utils.global'
local Event = require 'utils.event'
local PollUtils = require 'utils.poll_utils'
local Restart = require 'features.restart_command'
local Server = require 'features.server'
local Ranks = require 'resources.ranks'
local data = {
created = false,
id = nil
}
Global.register(data, function(tbl)
data = tbl
end)
local maps = {
{
name = 'crashsite',
display_name = 'Normal'
},
{
name = 'crashsite-UK',
display_name = 'UK'
},
{
name = 'crashsite-arrakis',
display_name = 'Arrakis'
},
{
name = 'crashsite-desert',
display_name = 'Desert'
},
{
name = 'crashsite-manhattan',
display_name = 'Manhattan'
},
{
name = 'crashsite-venice',
display_name = 'Venice'
},
{
name = 'crashsite-world',
display_name = 'World'
},
}
Event.add(Server.events.on_server_started, function()
if data.created then
return
end
data.created = true
local answers = {}
for i, map_data in pairs(maps) do
answers[i] = map_data.display_name
end
local success, id = Poll.poll({
question = 'Next map? (Advisory only)',
duration = 0,
edit_rank = Ranks.admin,
answers = answers
})
if success then
data.id = id
end
Restart.set_use_map_poll_result_option(true)
end)
local Public = {}
function Public.get_map_poll_id()
return data.id
end
function Public.get_next_map()
local poll_data = Poll.get_poll_data(data.id)
if poll_data == nil then
return nil
end
local answers = poll_data.answers
local chosen_index = PollUtils.get_poll_winner(answers)
if chosen_index == nil then
return nil
end
return maps[chosen_index]
end
return Public