mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-01-10 00:43:27 +02:00
45 lines
1.5 KiB
Lua
45 lines
1.5 KiB
Lua
|
local Public = {}
|
||
|
|
||
|
function Public.create_top_gui(player)
|
||
|
local element = player.gui.top.mountain_race
|
||
|
if element then return end
|
||
|
element = player.gui.top.add({type = "frame", name = "mountain_race", direction = "horizontal"})
|
||
|
element.style.maximal_height = 38
|
||
|
|
||
|
local team = element.add({type = "label", caption = "Loading..."})
|
||
|
team.style.font = "heading-2"
|
||
|
local text = element.add({type = "label"})
|
||
|
text.style.font = "heading-2"
|
||
|
text.style.font_color = {225, 225, 225}
|
||
|
end
|
||
|
|
||
|
local function get_status_string(mountain_race)
|
||
|
local north = mountain_race.locomotives.north
|
||
|
local south = mountain_race.locomotives.south
|
||
|
|
||
|
if not north then return {{255, 65, 65}, "SOUTH", " has won the race!"} end
|
||
|
if not south then return {{75, 75, 255}, "NORTH", " has won the race!"} end
|
||
|
|
||
|
local distance = math.floor(math.abs(north.position.x - south.position.x))
|
||
|
if distance == 0 then return {{200, 200, 0}, "Teams", " are equal"} end
|
||
|
|
||
|
if north.position.x > south.position.x then
|
||
|
return {{75, 75, 255}, "NORTH", " is " .. distance .. " units in the lead"}
|
||
|
else
|
||
|
return {{255, 65, 65}, "SOUTH", " is " .. distance .. " units in the lead"}
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function Public.update_top_gui(mountain_race)
|
||
|
local status = get_status_string(mountain_race)
|
||
|
for _, player in pairs(game.connected_players) do
|
||
|
local element = player.gui.top.mountain_race
|
||
|
if element and element.valid then
|
||
|
element.children[1].style.font_color = status[1]
|
||
|
element.children[1].caption = status[2]
|
||
|
element.children[2].caption = status[3]
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return Public
|