Added automatic stage continuation
This commit is contained in:
@@ -1,22 +1,47 @@
|
||||
|
||||
|
||||
local StagesByName = {}
|
||||
local StagesByIndex = {}
|
||||
|
||||
|
||||
GlobalStageManager = {}
|
||||
GlobalStageManager.start = function (database, stageConfig)
|
||||
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 logger = Spearhead.LoggerTemplate:new(stageName, stageConfig.logLevel)
|
||||
local stage = Spearhead.internal.Stage:new(stageName, database, logger, stageConfig)
|
||||
|
||||
StagesByName[stageName] = stage
|
||||
|
||||
local logger = Spearhead.LoggerTemplate:new("StageManager", stageConfig.logLevel)
|
||||
logger:info("Initiated " .. Spearhead.Util.tableLength(StagesByName) .. " airbases for cap")
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user