1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-01-10 00:43:27 +02:00
ComfyFactorio/modules/scrap_towny_ffa/info.lua

148 lines
4.8 KiB
Lua
Raw Normal View History

2021-02-06 22:42:10 +02:00
local Public = {}
local Table = require 'modules.scrap_towny_ffa.table'
local info = [[You wake up on this god-forsaken planet with a bunch of other desolate fools. Who will survive?
2021-02-06 22:42:10 +02:00
You better found a town and start producing and defending yourself!
2021-02-06 22:42:10 +02:00
Have fun and be comfy ^.^
]]
2021-02-06 22:42:10 +02:00
local info_adv =
[[
# Goal of the game
2021-02-06 22:42:10 +02:00
Survive as long as you can. Raid other towns. Defend your town.
# Advanced tips and tricks
It's best to found new towns far from existing towns, as enemies will become aggressive with town's research.
Are you out of ore patches? Make sure you researched steel processing,
then hand mine a few big rocks to find ore patches under them!
The town market is the heart of your town. If it is destroyed, you lose everything.
So protect it well, repair it whenever possible, and if you can afford, increase its health by purchasing upgrades.
2021-02-06 22:42:10 +02:00
It's possible to automate trading with the town center! How cool is that?!! Try it out.
2021-02-06 22:42:10 +02:00
When building your town, note that you may only build nearby existing structures such as your town market and walls and
any other structure you have placed. Beware that biters and spitters become more aggressive towards towns that are
advanced in research. Their evolution will scale around technology progress in any nearby towns and pollution levels.
# Alliances
Once a town is formed, members may invite other players and teams using a coin. To invite another player, drop a coin
on that player (with the Z key). To accept an invite, offer a coin in return to the member. To leave a town, simply drop coal
on the market. As a member of a town, your respawn point will change to that of the town.
To form any alliance with another town, drop a coin on a member or their market. If they agree they can reciprocate with a
coin offering.
]]
2021-02-06 22:42:10 +02:00
function Public.toggle_button(player)
2021-03-24 17:46:00 +02:00
if player.gui.top['towny_map_intro_button'] then
return
end
local b = player.gui.top.add({type = 'sprite-button', caption = 'Info', name = 'towny_map_intro_button', tooltip = 'Show Info'})
2021-03-24 17:46:00 +02:00
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.minimal_width = 80
b.style.top_padding = 1
b.style.left_padding = 1
b.style.right_padding = 1
b.style.bottom_padding = 1
2021-02-06 22:42:10 +02:00
end
function Public.show(player, info_type)
2021-03-24 17:46:00 +02:00
local ffatable = 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'}
frame = frame.add {type = 'frame', direction = 'vertical'}
local t = frame.add {type = 'table', column_count = 2}
local label = t.add {type = 'label', caption = '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
t = t.add {type = 'table', column_count = 4}
local label2 = t.add {type = 'label', caption = 'Outlander' .. ':' .. #game.forces.player.connected_players .. ' '}
2021-03-24 17:46:00 +02:00
label2.style.font_color = {170, 170, 170}
label2.style.font = 'heading-3'
label2.style.minimal_width = 80
for _, town_center in pairs(ffatable.town_centers) do
local force = town_center.market.force
local label3 = t.add {type = 'label', caption = force.name .. ':' .. #force.connected_players .. ' '}
2021-03-24 17:46:00 +02:00
label3.style.font = 'heading-3'
label3.style.minimal_width = 80
label3.style.font_color = town_center.color
end
frame.add {type = 'line'}
local cap = info
if info_type == 'adv' then
cap = info_adv
end
local l2 = frame.add {type = 'label', caption = cap}
2021-03-24 17:46:00 +02:00
l2.style.single_line = false
l2.style.font = 'heading-2'
l2.style.font_color = {r = 0.8, g = 0.7, b = 0.99}
2021-02-06 22:42:10 +02:00
end
function Public.close(event)
2021-03-24 17:46:00 +02:00
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
2021-02-06 22:42:10 +02:00
end
function Public.toggle(event)
2021-03-24 17:46:00 +02:00
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, 'adv')
2021-03-24 17:46:00 +02:00
end
end
2021-02-06 22:42:10 +02:00
end
local function on_gui_click(event)
2021-03-24 17:46:00 +02:00
Public.close(event)
Public.toggle(event)
2021-02-06 22:42:10 +02:00
end
local Event = require 'utils.event'
Event.add(defines.events.on_gui_click, on_gui_click)
return Public