Zone configuration (#62)
* wip * updates on trigger zone labels, mgrs fix, mission briefings --------- Co-authored-by: ex61wi <tim.rorije@ing.com> Co-authored-by: dutchie032 <dutchie032>
This commit is contained in:
committed by
GitHub
co-authored by
ex61wi
dutchie032 <dutchie032>
parent
1d4c0a8313
commit
bd023b46ac
@@ -54,7 +54,7 @@ function SpearheadGroup:Spawn(lateStart)
|
||||
|
||||
---@type SpawnOverrides
|
||||
local overrides = {
|
||||
uncontrolled = lateStart or false,
|
||||
uncontrolled = lateStart,
|
||||
}
|
||||
|
||||
local spawnedObject, isStatic = self._spawnManager:SpawnGroup(self._groupName, overrides, self._isPersistent)
|
||||
|
||||
@@ -59,6 +59,7 @@ function FarpZone.New(database, logger, zoneName, spawnManager)
|
||||
|
||||
local zone = Spearhead.DcsUtil.getZoneByName(zoneName)
|
||||
if zone then
|
||||
self._logger:debug("Creating Buildable zone: " .. zoneName .. " with " .. (farpData.buildingKilos or "nil") .. " kilos")
|
||||
Spearhead.classes.stageClasses.SpecialZones.abstract.BuildableZone.New(self, zone, farpData.buildingKilos or 0, "FARP_CRATE", self._groups, logger, database)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -28,6 +28,7 @@ function BuildableZone:New(targetZone, kilosRequired, crateType, buildableGroup
|
||||
self._receivedBuildingKilos = 0
|
||||
local persistedKilos = Spearhead.classes.persistence.Persistence.GetZoneDeliveredKilos(targetZone.name)
|
||||
if persistedKilos and persistedKilos > 0 then
|
||||
self._buildableLogger:debug("Zone " .. targetZone.name .. " already has " .. persistedKilos .. " kilos delivered")
|
||||
self._receivedBuildingKilos = persistedKilos
|
||||
|
||||
---@param params UnpackCrateParam
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
---| "GRAY"
|
||||
|
||||
--- @class StageData
|
||||
--- @field stageBriefing string?
|
||||
--- @field missionsByCode table<string, Mission>
|
||||
--- @field missionsByName table<string, Mission>
|
||||
--- @field missions Array<ZoneMission>
|
||||
@@ -29,6 +30,7 @@
|
||||
--- @field zoneName string
|
||||
--- @field stageName string?
|
||||
--- @field stageNumber number
|
||||
--- @field protected _missionCommandsHelper MissionCommandsHelper
|
||||
--- @field protected _isActive boolean
|
||||
--- @field protected _isComplete boolean
|
||||
--- @field protected _missionPriority MissionPriority
|
||||
@@ -83,6 +85,7 @@ function Stage:superNew(database, stageConfig, logger, initData, missionPriority
|
||||
self._database = database
|
||||
self._logger = logger
|
||||
self._db = {
|
||||
stageBriefing = nil,
|
||||
missionsByCode = {},
|
||||
missions = {},
|
||||
sams ={},
|
||||
@@ -98,6 +101,7 @@ function Stage:superNew(database, stageConfig, logger, initData, missionPriority
|
||||
self._activeStage = -99
|
||||
self._preActivated = false
|
||||
self._stageConfig = stageConfig or {}
|
||||
self._missionCommandsHelper = Spearhead.classes.stageClasses.helpers.MissionCommandsHelper.getOrCreate(logger.LogLevel)
|
||||
|
||||
local zone = Spearhead.DcsUtil.getZoneByName(self.zoneName)
|
||||
if zone then
|
||||
@@ -120,6 +124,7 @@ function Stage:superNew(database, stageConfig, logger, initData, missionPriority
|
||||
table.insert(self._db.supplyHubs, supplyHub)
|
||||
end
|
||||
|
||||
self._db.stageBriefing = database:getStageBriefingForStage(self.zoneName)
|
||||
self._logger:info("Initiating new Stage with name: " .. self.zoneName)
|
||||
|
||||
---comment
|
||||
@@ -238,7 +243,7 @@ function Stage:superNew(database, stageConfig, logger, initData, missionPriority
|
||||
end
|
||||
|
||||
Spearhead.Events.AddStageNumberChangedListener(self)
|
||||
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
@@ -453,6 +458,10 @@ function Stage:OnStageNumberChanged(number)
|
||||
|
||||
if number == self.stageNumber then
|
||||
self:ActivateStage()
|
||||
|
||||
if self._db and self._db.stageBriefing then
|
||||
self._missionCommandsHelper:AddStageBriefing(self.zoneName, self._db.stageBriefing)
|
||||
end
|
||||
end
|
||||
|
||||
if previousActive <= self.stageNumber then
|
||||
@@ -460,6 +469,10 @@ function Stage:OnStageNumberChanged(number)
|
||||
self:ActivateBlueStage()
|
||||
end
|
||||
end
|
||||
|
||||
if number > self.stageNumber then
|
||||
self._missionCommandsHelper:RemoveStageBriefing(self.zoneName)
|
||||
end
|
||||
end
|
||||
|
||||
function Stage:GetBriefing()
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
---@field lastUpdate number @last update time
|
||||
---@field updateContinuous fun(self: MissionCommandsHelper, time: number): number @function to update commands continuously
|
||||
---@field pinnedByGroup table<string, Mission> @table of pinned missions by group ID
|
||||
---@field private _stageBriefings table<string, string> @table of stage briefings by stage name
|
||||
---@field private _supplyHubGroups table<string, boolean> @table of supply hub groups by their ID
|
||||
---@field private _logger Logger @logger instance for logging
|
||||
---@field private _supplyUnitsTracker SupplyUnitsTracker @supply units tracker instance
|
||||
@@ -32,6 +33,7 @@ function MissionCommandsHelper.getOrCreate(logLevel)
|
||||
instance.pinnedByGroup = {}
|
||||
instance.lastUpdate = 0
|
||||
instance._supplyHubGroups = {}
|
||||
instance._stageBriefings = {}
|
||||
|
||||
instance._supplyUnitsTracker = Spearhead.classes.stageClasses.helpers.SupplyUnitsTracker.getOrCreate(logLevel)
|
||||
|
||||
@@ -66,6 +68,14 @@ function MissionCommandsHelper.getOrCreate(logLevel)
|
||||
return instance
|
||||
end
|
||||
|
||||
function MissionCommandsHelper:AddStageBriefing(stageName, briefing)
|
||||
self._stageBriefings[stageName] = briefing
|
||||
end
|
||||
|
||||
function MissionCommandsHelper:RemoveStageBriefing(stageName)
|
||||
self._stageBriefings[stageName] = nil
|
||||
end
|
||||
|
||||
---@param mission Mission
|
||||
function MissionCommandsHelper:AddMissionToCommands(mission)
|
||||
self._logger:debug("Adding mission to commands: [" .. mission.code .. "]" .. mission.name)
|
||||
@@ -174,6 +184,10 @@ function MissionCommandsHelper:AddOverviewCommand(groupID)
|
||||
return string.format("[%s]\t%s \t%s \t%s %% \t%s nM\n", mission.code, mission.missionTypeDisplay, mission.name, mission:PercentageComplete(), distanceText)
|
||||
end
|
||||
|
||||
for _, briefing in pairs(self._stageBriefings) do
|
||||
text = text .. briefing .. "\n\n"
|
||||
end
|
||||
|
||||
---Primary missions
|
||||
text = text .. "Primary Missions\n"
|
||||
for code, enabled in pairs(self.enabledByCode) do
|
||||
|
||||
@@ -81,7 +81,10 @@ function ZoneMission.new(zoneName, priority, database, logger, parentStage, spaw
|
||||
return nil
|
||||
end
|
||||
|
||||
local missionBriefing = database:getMissionBriefingForMissionZone(zoneName) or "no briefing provided"
|
||||
local missionData = database:getMissionDataForZone(zoneName)
|
||||
if not missionData then return end
|
||||
|
||||
local missionBriefing = missionData.description or "No briefing available"
|
||||
|
||||
local success, error = Mission.newSuper(self, zoneName, parsed.missionName, parsed.type, missionBriefing, priority,
|
||||
database, logger)
|
||||
@@ -109,26 +112,22 @@ function ZoneMission.new(zoneName, priority, database, logger, parentStage, spaw
|
||||
self._parentStage = parentStage
|
||||
self._dependencies = {}
|
||||
|
||||
local dependencies = database:getMissionDependencies(zoneName)
|
||||
for _, dependency in pairs(dependencies) do
|
||||
self._dependencies[dependency] = false
|
||||
end
|
||||
|
||||
local completeAtIndex = database:getMissionCompleteAt(zoneName)
|
||||
if completeAtIndex == nil and self.missionType == "BAI" or self.missionType == "CAS" then
|
||||
self._completeAtIndex = 0.8
|
||||
elseif completeAtIndex == nil then
|
||||
self._completeAtIndex = 1
|
||||
else
|
||||
self._completeAtIndex = completeAtIndex
|
||||
end
|
||||
|
||||
self._logger:debug("Complete at index " .. self.zoneName .. ": " .. self._completeAtIndex)
|
||||
|
||||
local SpearheadGroup = Spearhead.classes.stageClasses.Groups.SpearheadGroup
|
||||
|
||||
local missionData = database:getMissionDataForZone(zoneName)
|
||||
if not missionData then return end
|
||||
if missionData.dependsOn then
|
||||
for _, dependency in pairs(missionData.dependsOn) do
|
||||
self._dependencies[dependency] = false
|
||||
end
|
||||
end
|
||||
|
||||
if missionData.completeAt == nil and (self.missionType == "BAI" or self.missionType == "CAS") then
|
||||
self._completeAtIndex = 0.8
|
||||
elseif missionData.completeAt == nil then
|
||||
self._completeAtIndex = 1
|
||||
else
|
||||
self._completeAtIndex = missionData.completeAt
|
||||
end
|
||||
|
||||
self._missionGroups.sceneryTargets = missionData.SceneryTargets or {}
|
||||
if Spearhead.Util.tableLength(self._missionGroups.sceneryTargets) > 0 then
|
||||
self._missionGroups.hasTargets = true
|
||||
|
||||
Reference in New Issue
Block a user