Fix/mission commands fix (#24)

This commit is contained in:
2025-05-03 02:44:15 +02:00
committed by GitHub
parent 3ed55f7aeb
commit 5f434542af
8 changed files with 67 additions and 22 deletions
+3 -3
View File
@@ -7,8 +7,8 @@
---@field code string
---@field priority MissionPriority
---@field location Vec2?
---@field zoneName string
---@field private _state MissionState
---@field private _zoneName string
---@field private _database Database
---@field private _logger Logger
---@field private _missionBriefing string?
@@ -76,7 +76,7 @@ function Mission.New(zoneName, priority, database, logger)
local o = {}
local self = setmetatable(o, Mission)
self._zoneName = zoneName
self.zoneName = zoneName
self.name = parsed.missionName
self.missionType = parsed.type
self.displayMissionType = self.missionType or "unknown"
@@ -352,7 +352,7 @@ end
function Mission:NotifyMissionComplete()
self._missionCommandsHelper:RemoveMissionToCommands(self)
self._logger:info("Mission Completed: " .. self._zoneName)
self._logger:info("Mission Completed: " .. self.zoneName)
trigger.action.outText("Mission " .. self.name .. " [" .. self.code .. "] was completed succesfully" , 20)
for _, listener in pairs(self._completeListeners) do
@@ -77,7 +77,6 @@ function StageBase.New(databaseManager, logger, airbaseName)
for blueUnitName, blueUnitPos in pairs(blueUnitsPos) do
for redUnitName, redUnitPos in pairs(redUnitsPos) do
local distance = Spearhead.Util.VectorDistance3d(blueUnitPos, redUnitPos)
env.info("distance: " .. tostring(distance))
if distance <= cleanup_distance then
self._cleanup_units[redUnitName] = true
end
@@ -121,6 +121,8 @@ function Stage:superNew(database, stageConfig, logger, initData, missionPriority
end
local randomMissionNames = database:getRandomMissionsForStage(self.zoneName)
---@type table<string, Array<Mission>>
local randomMissionByName = {}
for _, missionZoneName in pairs(randomMissionNames) do
local mission = Spearhead.classes.stageClasses.Missions.Mission.New(missionZoneName, self._missionPriority, database, logger)
@@ -132,14 +134,32 @@ function Stage:superNew(database, stageConfig, logger, initData, missionPriority
end
end
for _, missions in pairs(randomMissionByName) do
local mission = Spearhead.Util.randomFromList(missions)
if mission then
self._db.missionsByCode[mission.code] = mission
if mission.missionType == "SAM" then
table.insert(self._db.sams, mission)
else
table.insert(self._db.missions, mission)
for missionName, missions in pairs(randomMissionByName) do
local missionZonePicked = Spearhead.classes.persistence.Persistence.GetPickedRandomMission(missionName)
if missionZonePicked == nil then
local mission = Spearhead.Util.randomFromList(missions) --[[@as Mission]]
if mission then
Spearhead.classes.persistence.Persistence.RegisterPickedRandomMission(mission.name, mission.zoneName)
self._db.missionsByCode[mission.code] = mission
if mission.missionType == "SAM" then
table.insert(self._db.sams, mission)
else
table.insert(self._db.missions, mission)
end
end
else
self._logger:info("Using persisted random mission with name: " .. missionName .. " and zone: " .. missionZonePicked)
for _, mission in pairs(missions) do
if string.lower(mission.zoneName) == string.lower(missionZonePicked) then
self._db.missionsByCode[mission.code] = mission
if mission.missionType == "SAM" then
table.insert(self._db.sams, mission)
else
table.insert(self._db.missions, mission)
end
end
end
end
end
@@ -31,8 +31,8 @@ function MissionCommandsHelper.getOrCreate(logLevel)
---@param time number
---@return number
self.updateContinuous = function(selfA, time)
if selfA.updateNeeded == false and timer.getTime() - selfA.lastUpdate < 10 then
return time + 2
if selfA.updateNeeded == false then
return time + 10
end
for _, unit in pairs(Spearhead.DcsUtil.getAllPlayerUnits()) do
@@ -46,7 +46,7 @@ function MissionCommandsHelper.getOrCreate(logLevel)
selfA.lastUpdate = timer.getTime()
selfA.updateNeeded = false
return time + 3
return time + 10
end
timer.scheduleFunction(self.updateContinuous, self, timer.getTime() + 5)
@@ -149,6 +149,7 @@ function MissionCommandsHelper:AddOverviewCommand(groupID)
end
---@private
---@param groupID number
function MissionCommandsHelper:AddPinnedMission(groupID)
local pinndedMission = self.pinnedByGroup[tostring(groupID)]
@@ -216,7 +217,6 @@ function MissionCommandsHelper:addMissionCommands(groupId, mission)
path = { [1] = folderNames.secondary }
end
if path then
self._logger:debug("Registering command: [" .. mission.code .. "]" .. mission.name)
local missionFolderName = "[" .. mission.code .. "]" .. mission.name