Files
spearhead/classes/stageClasses/GlobalStageManager.lua
T

49 lines
1.5 KiB
Lua

local StagesByName = {}
local StagesByIndex = {}
GlobalStageManager = {}
function GlobalStageManager:NewAndStart(database, stageConfig)
local o = {}
setmetatable(o, { __index = self })
o.onStageCompleted = function(stage)
local stageNumber = tostring(stage.stageNumber)
local anyActive = false
for _, stage in pairs(StagesByIndex[stageNumber] or {}) do
if stage.isActive then anyActive = true end
end
if anyActive == false and stageConfig:isAutoStages() == true then
Spearhead.Events.PublishStageNumberChanged(tonumber(stageNumber) + 1)
end
end
local logger = Spearhead.LoggerTemplate:new("StageManager", stageConfig.logLevel)
for _, stageName in pairs(database:getStagezoneNames()) do
local stagelogger = Spearhead.LoggerTemplate:new(stageName, stageConfig.logLevel)
local stage = Spearhead.internal.Stage:new(stageName, database, stagelogger, stageConfig)
if stage then
stage:AddStageCompleteListener(o);
StagesByName[stageName] = stage
local indexString = tostring(stage.stageNumber)
if StagesByIndex[indexString] == nil then StagesByIndex[indexString] = {} end
table.insert(StagesByIndex[indexString], stage)
logger:info("Initiated " .. Spearhead.Util.tableLength(StagesByName) .. " airbases for cap")
end
end
return o
end
if not Spearhead.internal then Spearhead.internal = {} end
Spearhead.internal.GlobalStageManager = GlobalStageManager