mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-01-24 03:47:58 +02:00
107 lines
2.7 KiB
Lua
107 lines
2.7 KiB
Lua
-- created by Gerkiz for ComfyFactorio
|
|
local Server = require 'utils.server'
|
|
local Event = require 'utils.event'
|
|
local Gui = require 'utils.gui'
|
|
local Commands = require 'utils.commands'
|
|
|
|
local ups_label = 'ups_label'
|
|
|
|
local function set_location(player)
|
|
local gui = player.gui
|
|
local label = gui.screen[ups_label]
|
|
if not label or not label.valid then
|
|
return
|
|
end
|
|
local res = player.display_resolution
|
|
local uis = player.display_scale
|
|
label.location = { x = res.width - 423 * uis, y = 30 * uis }
|
|
end
|
|
|
|
local function create_label(player)
|
|
local ups = Server.get_ups()
|
|
local sUPS = 'SUPS = ' .. ups
|
|
|
|
local label =
|
|
player.gui.screen.add(
|
|
{
|
|
type = 'label',
|
|
name = ups_label,
|
|
caption = sUPS
|
|
}
|
|
)
|
|
local style = label.style
|
|
style.font = 'default-game'
|
|
return label
|
|
end
|
|
|
|
Event.add(
|
|
defines.events.on_player_joined_game,
|
|
function (event)
|
|
local player = game.get_player(event.player_index)
|
|
|
|
local label = player.gui.screen[ups_label]
|
|
|
|
if not label or not label.valid then
|
|
label = create_label(player)
|
|
end
|
|
set_location(player)
|
|
label.visible = false
|
|
end
|
|
)
|
|
|
|
-- Update the value each second
|
|
Event.on_nth_tick(
|
|
60,
|
|
function ()
|
|
local ups = Server.get_ups()
|
|
local caption = 'SUPS = ' .. ups
|
|
local players = game.connected_players
|
|
for i = 1, #players do
|
|
local player = players[i]
|
|
local label = player.gui.screen[ups_label]
|
|
if label and label.valid then
|
|
label.caption = caption
|
|
set_location(player)
|
|
end
|
|
end
|
|
end
|
|
)
|
|
|
|
Commands.new('server-ups', 'Toggle the server UPS display!')
|
|
:require_backend()
|
|
:callback(
|
|
function (player)
|
|
local label = player.gui.screen[ups_label]
|
|
if not label or not label.valid then
|
|
label = create_label(player)
|
|
end
|
|
|
|
if label.visible then
|
|
label.visible = false
|
|
player.print('Removed Server-UPS label.')
|
|
else
|
|
label.visible = true
|
|
set_location(player)
|
|
player.print('Added Server-UPS label.')
|
|
end
|
|
end
|
|
)
|
|
|
|
Gui.screen_to_bypass(ups_label)
|
|
|
|
Event.add(
|
|
defines.events.on_player_display_resolution_changed,
|
|
function (event)
|
|
local player = game.get_player(event.player_index)
|
|
set_location(player)
|
|
end
|
|
)
|
|
|
|
Event.add(
|
|
defines.events.on_player_display_scale_changed,
|
|
function (event)
|
|
local player = game.get_player(event.player_index)
|
|
set_location(player)
|
|
end
|
|
)
|