mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2024-12-30 23:17:53 +02:00
75 lines
2.1 KiB
Lua
75 lines
2.1 KiB
Lua
local Event = require 'utils.event'
|
|
local ScenarioTable = require 'maps.scrap_towny_ffa.table'
|
|
|
|
local Public = {}
|
|
|
|
function Public.reset()
|
|
local this = ScenarioTable.get_table()
|
|
if this.testing_mode then
|
|
return
|
|
end
|
|
local map_surface = game.get_surface(this.active_surface_index)
|
|
if not map_surface or not map_surface.valid then
|
|
return
|
|
end
|
|
for index = 1, table.size(game.forces), 1 do
|
|
local force = game.forces[index]
|
|
if force ~= nil then
|
|
force.clear_chart(map_surface.name)
|
|
end
|
|
end
|
|
end
|
|
|
|
local function add_force(id, force_name)
|
|
local forces = rendering.get_forces(id)
|
|
for _, force in ipairs(forces) do
|
|
if force.name == force_name or force == force_name then
|
|
return
|
|
end
|
|
end
|
|
forces[#forces + 1] = force_name
|
|
rendering.set_forces(id, forces)
|
|
end
|
|
|
|
local function update_forces(id)
|
|
local forces = rendering.get_forces(id)
|
|
local new_forces = {}
|
|
for _, force in ipairs(forces) do
|
|
if force ~= nil and force.valid then
|
|
new_forces[#new_forces + 1] = force.name
|
|
end
|
|
end
|
|
rendering.set_forces(id, new_forces)
|
|
end
|
|
|
|
local function on_chunk_charted(event)
|
|
local this = ScenarioTable.get_table()
|
|
local surface = game.get_surface(this.active_surface_index)
|
|
if not surface or not surface.valid then
|
|
return
|
|
end
|
|
local force = event.force
|
|
local area = event.area
|
|
local markets = surface.find_entities_filtered({area = area, name = 'market'})
|
|
for _, market in pairs(markets) do
|
|
local force_name = market.force.name
|
|
local town_center = this.town_centers[force_name]
|
|
if not town_center then
|
|
return
|
|
end
|
|
|
|
-- town caption
|
|
local town_caption = town_center.town_caption
|
|
update_forces(town_caption)
|
|
add_force(town_caption, force.name)
|
|
-- health text
|
|
local health_text = town_center.health_text
|
|
update_forces(health_text)
|
|
add_force(health_text, force.name)
|
|
end
|
|
end
|
|
|
|
Event.add(defines.events.on_chunk_charted, on_chunk_charted)
|
|
|
|
return Public
|