resolved conflict from develop

This commit is contained in:
2024-11-06 15:23:18 +01:00
15 changed files with 159 additions and 79 deletions
+3 -4
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,8 +25,6 @@ function GlobalStageManager:NewAndStart(database, stageConfig)
end
local logger = Spearhead.LoggerTemplate:new("StageManager", stageConfig.logLevel)
for _, stageName in pairs(database:getStagezoneNames()) do
local stagelogger = Spearhead.LoggerTemplate:new(stageName, stageConfig.logLevel)
+23 -5
View File
@@ -183,17 +183,35 @@ do -- INIT Mission Class
timer.scheduleFunction(CheckAndUpdate, self, timer.getTime() + 300)
end
local CleanupDelayedAsync = function (self, time)
self:Cleanup()
return nil
end
---comment
---@param self table
---@param checkUnitHealth boolean?
o.CheckAndUpdateSelf = function(self, checkUnitHealth)
if not checkUnitHealth then checkUnitHealth = false end
if checkUnitHealth == true then
local function unitAliveState(unitName)
local unit = Unit.getByName(unitName)
return unit ~= nil and unit:isExist() == true and unit:getLife() > 0.1
end
for groupName, unitNameDict in pairs(self.groupUnitAliveDict) do
for unitName, isAlive in pairs(unitNameDict) do
if isAlive == true then
self.groupUnitAliveDict[groupName][unitName] = unitAliveState(unitName)
end
end
end
for groupName, unitNameDict in pairs(self.targetAliveStates) do
for unitName, isAlive in pairs(unitNameDict) do
if isAlive == true then
self.targetAliveStates[groupName][unitName] = unitAliveState(unitName)
end
end
end
end
if self.missionState == Mission.MissionState.COMPLETED then
return
end
+18 -2
View File
@@ -41,7 +41,7 @@ do --init STAGE DIRECTOR
o.db.blueSamGroups = {}
o.db.airbaseIds = {}
o.db.farps = {}
o.activeStage = 0
o.activeStage = -99
o.preActivated = false
o.stageConfig = stageConfig or {}
o.stageDrawingId = stageDrawingId + 1
@@ -146,7 +146,6 @@ do --init STAGE DIRECTOR
end
end
o.IsComplete = function(self)
for i, mission in pairs(self.db.missions) do
local state = mission:GetState()
@@ -157,6 +156,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)
@@ -230,6 +242,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)
@@ -267,6 +281,7 @@ do --init STAGE DIRECTOR
end
end
end
end
---Cleans up all missions
@@ -471,6 +486,7 @@ do --init STAGE DIRECTOR
mission:AddMissionCompleteListener(o)
end
Spearhead.Events.AddOnPlayerEnterUnitListener(o)
Spearhead.Events.AddOnStatusRequestReceivedListener(o)
Spearhead.Events.AddStageNumberChangedListener(o)
return o