AWACS - Tweaked escort logic to use one AUFTRAG per escort fighter and tweaked positioning logic. Allows more control over escort fighters which will support a future PR (#1746)

This commit is contained in:
Anthony De Vellis
2022-07-12 02:18:47 -04:00
committed by GitHub
parent 0e4d731068
commit ab1dd2b374

View File

@@ -919,6 +919,8 @@ function AWACS:New(Name,AirWing,Coalition,AirbaseName,AwacsOrbit,OpsZone,Station
-- Escorts -- Escorts
self.HasEscorts = false self.HasEscorts = false
self.EscortTemplate = "" self.EscortTemplate = ""
self.EscortMission = {}
self.EscortMissionReplacement = {}
-- SRS -- SRS
self.PathToSRS = "C:\\Program Files\\DCS-SimpleRadio-Standalone" self.PathToSRS = "C:\\Program Files\\DCS-SimpleRadio-Standalone"
@@ -1738,20 +1740,21 @@ function AWACS:_StartEscorts(Shiftchange)
local AwacsFG = self.AwacsFG -- Ops.FlightGroup#FLIGHTGROUP local AwacsFG = self.AwacsFG -- Ops.FlightGroup#FLIGHTGROUP
local group = AwacsFG:GetGroup() local group = AwacsFG:GetGroup()
local mission = AUFTRAG:NewESCORT(group,{x=-100, y=0, z=200},45,{"Air"})
self.CatchAllMissions[#self.CatchAllMissions+1] = mission
mission:SetRequiredAssets(self.EscortNumber)
local timeonstation = (self.EscortsTimeOnStation + self.ShiftChangeTime) * 3600 -- hours to seconds local timeonstation = (self.EscortsTimeOnStation + self.ShiftChangeTime) * 3600 -- hours to seconds
mission:SetTime(nil,timeonstation) for i=1,self.EscortNumber do
-- every
self.AirWing:AddMission(mission) local escort = AUFTRAG:NewESCORT(group, {x= -100*((i + (i%2))/2), y=0, z=(100 + 100*((i + (i%2))/2))*(-1)^i},45,{"Air"})
escort:SetRequiredAssets(1)
escort:SetTime(nil,timeonstation)
self.AirWing:AddMission(escort)
self.CatchAllMissions[#self.CatchAllMissions+1] = escort
if Shiftchange then if Shiftchange then
self.EscortMissionReplacement = mission self.EscortMissionReplacement[i] = mission
else else
self.EscortMission = mission self.EscortMission[i] = mission
end
end end
return self return self
@@ -5601,7 +5604,9 @@ function AWACS:_CheckAwacsStatus()
-------------------------------- --------------------------------
if self.HasEscorts then if self.HasEscorts then
local ESmission = self.EscortMission -- Ops.Auftrag#AUFTRAG for i=1, self.EscortNumber do
local ESmission = self.EscortMission[i] -- Ops.Auftrag#AUFTRAG
if not ESmission then break end
local esstatus = ESmission:GetState() local esstatus = ESmission:GetState()
local ESmissiontime = (timer.getTime() - self.EscortsTimeStamp) local ESmissiontime = (timer.getTime() - self.EscortsTimeStamp)
local ESTOSLeft = UTILS.Round((((self.EscortsTimeOnStation+self.ShiftChangeTime)*3600) - ESmissiontime),0) -- seconds local ESTOSLeft = UTILS.Round((((self.EscortsTimeOnStation+self.ShiftChangeTime)*3600) - ESmissiontime),0) -- seconds
@@ -5629,8 +5634,8 @@ function AWACS:_CheckAwacsStatus()
report:Add(string.format("Mission FG %s",OpsName)) report:Add(string.format("Mission FG %s",OpsName))
report:Add(string.format("Callsign %s",OpsCallSign)) report:Add(string.format("Callsign %s",OpsCallSign))
report:Add(string.format("Mission FG State %s",OpsGroup:GetState())) report:Add(string.format("Mission FG State %s",OpsGroup:GetState()))
monitoringdata.EscortsStateMission = esstatus monitoringdata.EscortsStateMission[i] = esstatus
monitoringdata.EscortsStateFG = OpsGroup:GetState() monitoringdata.EscortsStateFG[i] = OpsGroup:GetState()
else else
report:Add("***** Cannot obtain (yet) this missions OpsGroup!") report:Add("***** Cannot obtain (yet) this missions OpsGroup!")
end end
@@ -5639,7 +5644,7 @@ function AWACS:_CheckAwacsStatus()
-- Check for replacement mission - if any -- Check for replacement mission - if any
if self.ShiftChangeEscortsFlag and self.ShiftChangeEscortsRequested then -- Ops.Auftrag#AUFTRAG if self.ShiftChangeEscortsFlag and self.ShiftChangeEscortsRequested then -- Ops.Auftrag#AUFTRAG
ESmission = self.EscortMissionReplacement ESmission = self.EscortMissionReplacement[i]
local esstatus = ESmission:GetState() local esstatus = ESmission:GetState()
local ESmissiontime = (timer.getTime() - self.EscortsTimeStamp) local ESmissiontime = (timer.getTime() - self.EscortsTimeStamp)
local ESTOSLeft = UTILS.Round((((self.EscortsTimeOnStation+self.ShiftChangeTime)*3600) - ESmissiontime),0) -- seconds local ESTOSLeft = UTILS.Round((((self.EscortsTimeOnStation+self.ShiftChangeTime)*3600) - ESmissiontime),0) -- seconds
@@ -5670,17 +5675,18 @@ function AWACS:_CheckAwacsStatus()
self.ShiftChangeEscortsFlag = false self.ShiftChangeEscortsFlag = false
self.ShiftChangeEscortsRequested = false self.ShiftChangeEscortsRequested = false
-- cancel old mission -- cancel old mission
if self.EscortMission and self.EscortMission:IsNotOver() then if ESmission and ESmission:IsNotOver() then
self.EscortMission:Cancel() ESmission:Cancel()
end end
self.EscortMission = self.EscortMissionReplacement self.EscortMission[i] = self.EscortMissionReplacement[i]
self.EscortMissionReplacement = nil self.EscortMissionReplacement[i] = nil
self.EscortsTimeStamp = timer.getTime() self.EscortsTimeStamp = timer.getTime()
report:Add("*** Replacement DONE ***") report:Add("*** Replacement DONE ***")
end end
report:Add("====================") report:Add("====================")
end end
end end
end
if self.debug then if self.debug then
self:T(report:Text()) self:T(report:Text())