fixed stage switcher

This commit is contained in:
2024-10-23 13:33:09 +02:00
parent 2447092d05
commit e2b90b4ba1
4 changed files with 25 additions and 9 deletions
Binary file not shown.
+4 -3
View File
@@ -6,12 +6,13 @@ local StagesByIndex = {}
GlobalStageManager = {}
function GlobalStageManager:NewAndStart(database, stageConfig)
local logger = Spearhead.LoggerTemplate:new("StageManager", stageConfig.logLevel)
local o = {}
setmetatable(o, { __index = self })
o.onStageCompleted = function(stage)
o.logger = logger
o.onStageCompleted = function(self, stage)
local stageNumber = tostring(stage.stageNumber)
local anyActive = false
for _, stage in pairs(StagesByIndex[stageNumber] or {}) do
@@ -24,7 +25,7 @@ function GlobalStageManager:NewAndStart(database, stageConfig)
end
local logger = Spearhead.LoggerTemplate:new("StageManager", stageConfig.logLevel)
for _, stageName in pairs(database:getStagezoneNames()) do
+20 -2
View File
@@ -40,7 +40,7 @@ do --init STAGE DIRECTOR
o.db.blueAirbasegroups = {}
o.db.airbaseIds = {}
o.db.farps = {}
o.activeStage = 0
o.activeStage = -99
o.preActivated = false
o.stageConfig = stageConfig or {}
o.stageDrawingId = stageDrawingId + 1
@@ -138,7 +138,6 @@ do --init STAGE DIRECTOR
end
end
o.IsComplete = function(self)
for i, mission in pairs(self.db.missions) do
local state = mission:GetState()
@@ -149,6 +148,19 @@ do --init STAGE DIRECTOR
return true
end
local CheckContinuousAsync = function(self, time)
self.logger:info("Checking stage completion for stage: " .. self.zoneName)
if self.activeStage == self.stageNumber then
return nil -- stop looping if this stage is not even active
end
if self:IsComplete() == true then
triggerStageCompleteListeners(self)
return nil
end
return time + 60
end
---Activates all SAMS, Airbase units etc all at once.
---@param self table
o.PreActivate = function(self)
@@ -222,6 +234,8 @@ do --init STAGE DIRECTOR
end
end
timer.scheduleFunction(activateMissionsIfApplicableAsync, self, timer.getTime() + 5)
timer.scheduleFunction(CheckContinuousAsync, self, timer.getTime() + 60)
end
o.ActivateMissionsIfApplicable = function (self)
@@ -259,6 +273,10 @@ do --init STAGE DIRECTOR
end
end
end
if activeCount <= 0 and availableMissions <= 0 then
end
end
---Cleans up all missions
+1 -4
View File
@@ -22,16 +22,13 @@ local SetStageDelayed = function(number, time)
return nil
end
timer.scheduleFunction(SetStageDelayed, 1, timer.getTime() + 3)
timer.scheduleFunction(SetStageDelayed, 0, timer.getTime() + 3)
Spearhead.LoadingDone()
--Check lines of code in directory per file:
-- Get-ChildItem . -Include *.lua -Recurse | foreach {""+(Get-Content $_).Count + " => " + $_.name }; && GCI . -Include *.lua* -Recurse | foreach{(GC $_).Count} | measure-object -sum | % Sum
-- find . -name '*.lua' | xargs wc -l
--- ==================== DEBUG ORDER OR ZONE VEC ===========================
-- local zone = Spearhead.DcsUtil.getZoneByName("MISSIONSTAGE_99")