recurring command updates fix

This commit is contained in:
2025-05-07 18:01:36 +02:00
parent 4de7887c35
commit f08cee4314
5 changed files with 35 additions and 23 deletions
+23 -14
View File
@@ -240,36 +240,45 @@ end
function Stage:CheckAndUpdateSelf()
self._logger:debug("Checking on Stage: " .. self.zoneName)
local activeCount = 0
local dbTables = self:GetStageTables()
local availableMissions = {}
for _, mission in pairs(dbTables.missionsByCode) do
local state = mission:getState()
if state == "ACTIVE" then
activeCount = activeCount + 1
---@return Array<Mission>
local getAvailableMissions = function ()
---@type Array<Mission>
local availableMissions = {}
for _, mission in pairs(dbTables.missionsByCode) do
if mission:getState() == "NEW" then
table.insert(availableMissions, mission)
end
end
return availableMissions
end
if state == "NEW" then
table.insert(availableMissions, mission)
---@return number
local getActiveMissionsCount = function ()
local result = 0
for _, mission in pairs(dbTables.missionsByCode) do
if mission:getState() == "ACTIVE" then
result = result + 1
end
end
return result
end
local max = dbTables.maxMissions
local availableMissionsCount = Spearhead.Util.tableLength(availableMissions)
local availableMissionsCount = Spearhead.Util.tableLength(getAvailableMissions())
local activeCount = getActiveMissionsCount()
if activeCount < max and availableMissionsCount > 0 then
for i = activeCount+1, max do
if availableMissionsCount == 0 then
i = max+1 --exits this loop
else
local index = math.random(1, availableMissionsCount)
---@type Mission
local mission = table.remove(availableMissions, index)
local mission = Spearhead.Util.randomFromList(getAvailableMissions()) --[[@as Mission]]
if mission then
mission:SpawnActive()
activeCount = activeCount + 1;
else
return
end
availableMissionsCount = availableMissionsCount - 1
end