1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-11-23 22:22:34 +02:00
Files
ComfyFactorio/modules/map_info.lua
2025-05-10 12:43:38 +02:00

129 lines
3.7 KiB
Lua

local Event = require 'utils.event'
local Global = require 'utils.global'
local Gui = require 'utils.gui'
local Task = require 'utils.task_token'
local module_name = Gui.uid_name()
local map_info =
{
localised_category = false,
main_caption = nil,
main_caption_color = { r = 0.6, g = 0.3, b = 0.99 },
sub_caption = nil,
sub_caption_color = { r = 0.2, g = 0.9, b = 0.2 },
text = nil
}
Global.register(
map_info,
function (tbl)
map_info = tbl
end
)
local call_active_tab_token =
Task.register(
function (event)
local player_index = event.player_index
local player = game.get_player(player_index)
if not player or not player.valid then
return
end
Gui.call_existing_tab(player, 'Map Info')
end
)
local Public = {}
function Public.Pop_info()
return map_info
end
local function create_map_intro(data)
local frame = data.frame
frame.clear()
frame.style.padding = 4
frame.style.margin = 0
local t = frame.add { type = 'table', column_count = 1 }
local line = t.add { type = 'line' }
line.style.top_margin = 4
line.style.bottom_margin = 4
if not map_info.localised_category then
return
end
local caption = map_info.main_caption or { map_info.localised_category .. '.map_info_main_caption' }
local sub_caption = map_info.sub_caption or { map_info.localised_category .. '.map_info_sub_caption' }
local text = map_info.text or { map_info.localised_category .. '.map_info_text' }
if map_info.localised_category then
map_info.main_caption = caption
map_info.sub_caption = sub_caption
map_info.text = text
end
local l = t.add { type = 'label', caption = map_info.main_caption }
l.style.font = 'heading-1'
l.style.font_color = map_info.main_caption_color
l.style.minimal_width = 780
l.style.horizontal_align = 'center'
l.style.vertical_align = 'center'
local l_2 = t.add { type = 'label', caption = map_info.sub_caption }
l_2.style.font = 'heading-2'
l_2.style.font_color = map_info.sub_caption_color
l_2.style.minimal_width = 780
l_2.style.horizontal_align = 'center'
l_2.style.vertical_align = 'center'
local line_2 = t.add { type = 'line' }
line_2.style.top_margin = 4
line_2.style.bottom_margin = 4
local scroll_pane =
frame.add
{
type = 'scroll-pane',
name = 'scroll_pane',
direction = 'vertical',
horizontal_scroll_policy = 'never',
vertical_scroll_policy = 'auto'
}
scroll_pane.style.maximal_height = 320
scroll_pane.style.minimal_height = 320
local l_3 = scroll_pane.add { type = 'label', caption = map_info.text }
l_3.style.font = 'heading-2'
l_3.style.single_line = false
l_3.style.font_color = { r = 0.85, g = 0.85, b = 0.88 }
l_3.style.minimal_width = 780
l_3.style.horizontal_align = 'center'
l_3.style.vertical_align = 'center'
end
local create_map_intro_token = Task.register(create_map_intro)
local function on_player_joined_game(event)
local player = game.players[event.player_index]
if player.online_time == 0 then
Gui.call_existing_tab(player, 'Map Info')
Task.set_timeout_in_ticks(5, call_active_tab_token, { player_index = player.index })
end
end
Event.add(defines.events.on_player_joined_game, on_player_joined_game)
Gui.add_tab_to_gui({ name = module_name, caption = 'Map Info', id = create_map_intro_token, admin = false })
Gui.on_click(
module_name,
function (event)
local player = event.player
Gui.reload_active_tab(player, nil, 'Map Info')
end
)
return Public