mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-02-01 13:08:05 +02:00
e91b6a352f
Change global -> storage Rework how rendering works Game prototypes are now stored inside 'prototypes.#' Renamed entity names
167 lines
5.4 KiB
Lua
167 lines
5.4 KiB
Lua
--luacheck: ignore
|
|
local Public = {}
|
|
local Table = require 'modules.towny.table'
|
|
|
|
function Public.toggle_button(player)
|
|
if player.gui.top['towny_map_intro_button'] then
|
|
return
|
|
end
|
|
local b = player.gui.top.add({ type = 'sprite-button', caption = { 'modules_towny.towny' }, name = 'towny_map_intro_button', tooltip = { 'modules_towny.show_info' } })
|
|
b.style.font_color = { r = 0.5, g = 0.3, b = 0.99 }
|
|
b.style.font = 'heading-1'
|
|
b.style.minimal_height = 38
|
|
b.style.maximal_height = 38
|
|
b.style.minimal_width = 100
|
|
b.style.top_padding = 1
|
|
b.style.left_padding = 1
|
|
b.style.right_padding = 1
|
|
b.style.bottom_padding = 1
|
|
end
|
|
|
|
function Public.show(player)
|
|
local townytable = Table.get_table()
|
|
if player.gui.center['towny_map_intro_frame'] then
|
|
player.gui.center['towny_map_intro_frame'].destroy()
|
|
end
|
|
local frame = player.gui.center.add { type = 'frame', name = 'towny_map_intro_frame' }
|
|
local frame = frame.add { type = 'frame', direction = 'vertical' }
|
|
|
|
local t = frame.add { type = 'table', column_count = 2 }
|
|
|
|
local label = t.add { type = 'label', caption = { 'modules_towny.active_factions' } }
|
|
label.style.font = 'heading-1'
|
|
label.style.font_color = { r = 0.85, g = 0.85, b = 0.85 }
|
|
label.style.right_padding = 8
|
|
|
|
local t = t.add { type = 'table', column_count = 4 }
|
|
|
|
local label = t.add { type = 'label', caption = { 'modules_towny.outlander', #game.forces.player.connected_players } }
|
|
label.style.font_color = { 170, 170, 170 }
|
|
label.style.font = 'default-semibold'
|
|
label.style.minimal_width = 80
|
|
|
|
for _, town_center in pairs(townytable.town_centers) do
|
|
local force = town_center.market.force
|
|
local label = t.add { type = 'label', caption = { 'modules_towny.force', force.name, #force.connected_players } }
|
|
label.style.font = 'default-semibold'
|
|
label.style.minimal_width = 80
|
|
label.style.font_color = town_center.color
|
|
end
|
|
|
|
frame.add { type = 'line' }
|
|
|
|
local l = frame.add { type = 'label', caption = { 'modules_towny.map_info_header' } }
|
|
l.style.font = 'heading-1'
|
|
l.style.font_color = { r = 0.85, g = 0.85, b = 0.85 }
|
|
local caption = {
|
|
'modules_towny.map_info',
|
|
{ 'modules_towny.map_info1' },
|
|
{ 'modules_towny.map_info2' },
|
|
{ 'modules_towny.map_info3' },
|
|
{ 'modules_towny.map_info4' },
|
|
{ 'modules_towny.map_info5' }
|
|
}
|
|
|
|
local l = frame.add { type = 'label', caption = caption }
|
|
l.style.single_line = false
|
|
l.style.font = 'heading-2'
|
|
l.style.font_color = { r = 0.8, g = 0.7, b = 0.99 }
|
|
end
|
|
|
|
function Public.new_town_button(player)
|
|
if player.gui.top['towny_new_town_button'] then
|
|
return
|
|
end
|
|
local b =
|
|
player.gui.top.add(
|
|
{ type = 'sprite-button', caption = 'New Town', name = 'towny_new_town_button', tooltip = { 'modules_towny.new_town_caption', { 'modules_towny.new_town_off' } } }
|
|
)
|
|
b.style.font_color = { r = 0.88, g = 0.02, b = 0.02 }
|
|
b.style.font = 'heading-1'
|
|
b.style.minimal_height = 38
|
|
b.style.maximal_height = 38
|
|
b.style.minimal_width = 100
|
|
b.style.top_padding = 1
|
|
b.style.left_padding = 1
|
|
b.style.right_padding = 1
|
|
b.style.bottom_padding = 1
|
|
end
|
|
|
|
function Public.update_new_town_button(player)
|
|
local townytable = Table.get_table()
|
|
local button = player.gui.top['towny_new_town_button']
|
|
if not button or not button.valid then
|
|
return
|
|
end
|
|
if player.force == game.forces.player then
|
|
button.visible = true
|
|
if townytable.town_buttons[player.index] == true then
|
|
button.tooltip = { 'modules_towny.new_town_caption', { 'modules_towny.new_town_on' } }
|
|
button.style.font_color = { r = 0.02, g = 0.88, b = 0.02 }
|
|
else
|
|
button.tooltip = { 'modules_towny.new_town_caption', { 'modules_towny.new_town_off' } }
|
|
button.style.font_color = { r = 0.88, g = 0.02, b = 0.02 }
|
|
end
|
|
else
|
|
button.visible = false
|
|
end
|
|
end
|
|
|
|
function Public.close(event)
|
|
if not event.element then
|
|
return
|
|
end
|
|
if not event.element.valid then
|
|
return
|
|
end
|
|
local parent = event.element.parent
|
|
for _ = 1, 4, 1 do
|
|
if not parent then
|
|
return
|
|
end
|
|
if parent.name == 'towny_map_intro_frame' then
|
|
parent.destroy()
|
|
return
|
|
end
|
|
parent = parent.parent
|
|
end
|
|
end
|
|
|
|
function Public.toggle(event)
|
|
if not event.element then
|
|
return
|
|
end
|
|
if not event.element.valid then
|
|
return
|
|
end
|
|
if event.element.name == 'towny_map_intro_button' then
|
|
local player = game.players[event.player_index]
|
|
if player.gui.center['towny_map_intro_frame'] then
|
|
player.gui.center['towny_map_intro_frame'].destroy()
|
|
else
|
|
Public.show(player)
|
|
end
|
|
end
|
|
end
|
|
|
|
function Public.toggle_town(event)
|
|
local townytable = Table.get_table()
|
|
if not event.element then
|
|
return
|
|
end
|
|
if not event.element.valid then
|
|
return
|
|
end
|
|
if event.element.name == 'towny_new_town_button' then
|
|
local player = game.players[event.player_index]
|
|
if townytable.town_buttons[player.index] then
|
|
townytable.town_buttons[player.index] = false
|
|
else
|
|
townytable.town_buttons[player.index] = true
|
|
end
|
|
Public.update_new_town_button(player)
|
|
end
|
|
end
|
|
|
|
return Public
|