AI_A2A_PATROL
- Added CAP coordinates option.

AI_A2A_DISPATCHER
- Added CAP coordinates option.
This commit is contained in:
Frank 2019-07-06 23:39:48 +02:00
parent 6973e8c028
commit 183c05bcf5
2 changed files with 31 additions and 14 deletions

View File

@ -1902,12 +1902,14 @@ do -- AI_A2A_DISPATCHER
--- Set race track pattern as default when any squadron is performing CAP. --- Set race track pattern as default when any squadron is performing CAP.
-- @param #AI_A2A_DISPATCHER self -- @param #AI_A2A_DISPATCHER self
-- @param #number LeglengthMin Min length of the race track leg in meters. Default 10,000 m. -- @param #number LeglengthMin Min length of the race track leg in meters. Default 10,000 m.
-- @param #number HeadingMin Min heading of the race track in degrees. Default 0 deg, i.e. from South to North. -- @param #number LeglengthMax Max length of the race track leg in meters. Default 15,000 m.
-- @param #number HeadingMax Max heading of the race track in degrees. Default 180 deg, i.e. from North to South. -- @param #number HeadingMin Min heading of the race track in degrees. Default 0 deg, i.e. counter clockwise from South to North.
-- @param #number HeadingMax Max heading of the race track in degrees. Default 180 deg, i.e. counter clockwise from North to South.
-- @param #number DurationMin (Optional) Min duration in seconds before switching the orbit position. Default is keep same orbit until RTB or engage. -- @param #number DurationMin (Optional) Min duration in seconds before switching the orbit position. Default is keep same orbit until RTB or engage.
-- @param #number DurationMax (Optional) Max duration in seconds before switching the orbit position. Default is keep same orbit until RTB or engage. -- @param #number DurationMax (Optional) Max duration in seconds before switching the orbit position. Default is keep same orbit until RTB or engage.
-- @param #table CapCoordinates Table of coordinates of first race track point. Second point is determined by leg length and heading.
-- @return #AI_A2A_DISPATCHER self -- @return #AI_A2A_DISPATCHER self
function AI_A2A_DISPATCHER:SetDefaultCapRacetrack(LeglengthMin, LeglengthMax, HeadingMin, HeadingMax, DurationMin, DurationMax) function AI_A2A_DISPATCHER:SetDefaultCapRacetrack(LeglengthMin, LeglengthMax, HeadingMin, HeadingMax, DurationMin, DurationMax, CapCoordinates)
self.DefenderDefault.Racetrack=true self.DefenderDefault.Racetrack=true
self.DefenderDefault.RacetrackLengthMin=LeglengthMin self.DefenderDefault.RacetrackLengthMin=LeglengthMin
@ -1916,6 +1918,7 @@ do -- AI_A2A_DISPATCHER
self.DefenderDefault.RacetrackHeadingMax=HeadingMax self.DefenderDefault.RacetrackHeadingMax=HeadingMax
self.DefenderDefault.RacetrackDurationMin=DurationMin self.DefenderDefault.RacetrackDurationMin=DurationMin
self.DefenderDefault.RacetrackDurationMax=DurationMax self.DefenderDefault.RacetrackDurationMax=DurationMax
self.DefenderDefault.RacetrackCoordinates=CapCoordinates
return self return self
end end
@ -1924,12 +1927,14 @@ do -- AI_A2A_DISPATCHER
-- @param #AI_A2A_DISPATCHER self -- @param #AI_A2A_DISPATCHER self
-- @param #string SquadronName Name of the squadron. -- @param #string SquadronName Name of the squadron.
-- @param #number LeglengthMin Min length of the race track leg in meters. Default 10,000 m. -- @param #number LeglengthMin Min length of the race track leg in meters. Default 10,000 m.
-- @param #number LeglengthMax Max length of the race track leg in meters. Default 15,000 m.
-- @param #number HeadingMin Min heading of the race track in degrees. Default 0 deg, i.e. from South to North. -- @param #number HeadingMin Min heading of the race track in degrees. Default 0 deg, i.e. from South to North.
-- @param #number HeadingMax Max heading of the race track in degrees. Default 180 deg, i.e. from North to South. -- @param #number HeadingMax Max heading of the race track in degrees. Default 180 deg, i.e. from North to South.
-- @param #number DurationMin (Optional) Min duration in seconds before switching the orbit position. Default is keep same orbit until RTB or engage. -- @param #number DurationMin (Optional) Min duration in seconds before switching the orbit position. Default is keep same orbit until RTB or engage.
-- @param #number DurationMax (Optional) Max duration in seconds before switching the orbit position. Default is keep same orbit until RTB or engage. -- @param #number DurationMax (Optional) Max duration in seconds before switching the orbit position. Default is keep same orbit until RTB or engage.
-- @param #table CapCoordinates Table of coordinates of first race track point. Second point is determined by leg length and heading.
-- @return #AI_A2A_DISPATCHER self -- @return #AI_A2A_DISPATCHER self
function AI_A2A_DISPATCHER:SetSquadronCapRacetrack(SquadronName, LeglengthMin, LeglengthMax, HeadingMin, HeadingMax, DurationMin, DurationMax) function AI_A2A_DISPATCHER:SetSquadronCapRacetrack(SquadronName, LeglengthMin, LeglengthMax, HeadingMin, HeadingMax, DurationMin, DurationMax, CapCoordinates)
local DefenderSquadron = self:GetSquadron( SquadronName ) local DefenderSquadron = self:GetSquadron( SquadronName )
@ -1941,6 +1946,7 @@ do -- AI_A2A_DISPATCHER
DefenderSquadron.RacetrackHeadingMax=HeadingMax DefenderSquadron.RacetrackHeadingMax=HeadingMax
DefenderSquadron.RacetrackDurationMin=DurationMin DefenderSquadron.RacetrackDurationMin=DurationMin
DefenderSquadron.RacetrackDurationMax=DurationMax DefenderSquadron.RacetrackDurationMax=DurationMax
DefenderSquadron.RacetrackCoordinates=CapCoordinates
end end
return self return self
@ -3008,7 +3014,8 @@ do -- AI_A2A_DISPATCHER
DefenderSquadron.RacetrackHeadingMin or self.DefenderDefault.RacetrackHeadingMin, DefenderSquadron.RacetrackHeadingMin or self.DefenderDefault.RacetrackHeadingMin,
DefenderSquadron.RacetrackHeadingMax or self.DefenderDefault.RacetrackHeadingMax, DefenderSquadron.RacetrackHeadingMax or self.DefenderDefault.RacetrackHeadingMax,
DefenderSquadron.RacetrackDurationMin or self.DefenderDefault.RacetrackDurationMin, DefenderSquadron.RacetrackDurationMin or self.DefenderDefault.RacetrackDurationMin,
DefenderSquadron.RacetrackDurationMax or self.DefenderDefault.RacetrackDurationMax) DefenderSquadron.RacetrackDurationMax or self.DefenderDefault.RacetrackDurationMax,
DefenderSquadron.RacetrackCoordinates or self.DefenderDefault.RacetrackCoordinates)
end end
Fsm:Start() Fsm:Start()
@ -3366,7 +3373,7 @@ do -- AI_A2A_DISPATCHER
end end
end end
local Report = REPORT:New( "Tactical Overview" ) local Report = REPORT:New( "Tactical Overviews" )
local DefenderGroupCount = 0 local DefenderGroupCount = 0

View File

@ -263,10 +263,11 @@ end
-- @param #number LegMax Max length of the race track leg in meters. Default 15,000 m. -- @param #number LegMax Max length of the race track leg in meters. Default 15,000 m.
-- @param #number HeadingMin Min heading of the race track in degrees. Default 0 deg, i.e. from South to North. -- @param #number HeadingMin Min heading of the race track in degrees. Default 0 deg, i.e. from South to North.
-- @param #number HeadingMax Max heading of the race track in degrees. Default 180 deg, i.e. from South to North. -- @param #number HeadingMax Max heading of the race track in degrees. Default 180 deg, i.e. from South to North.
-- @param #number duration (Optional) Min duration before switching the orbit position. Default is keep same orbit until RTB or engage. -- @param #number DurationMin (Optional) Min duration before switching the orbit position. Default is keep same orbit until RTB or engage.
-- @param #number duration (Optional) Max duration before switching the orbit position. Default is keep same orbit until RTB or engage. -- @param #number DurationMax (Optional) Max duration before switching the orbit position. Default is keep same orbit until RTB or engage.
-- @param #table CapCoordinates Table of coordinates of first race track point. Second point is determined by leg length and heading.
-- @return #AI_A2A_PATROL self -- @return #AI_A2A_PATROL self
function AI_A2A_PATROL:SetRaceTrackPattern(LegMin, LegMax, HeadingMin, HeadingMax, DurationMin, DurationMax) function AI_A2A_PATROL:SetRaceTrackPattern(LegMin, LegMax, HeadingMin, HeadingMax, DurationMin, DurationMax, CapCoordinates)
self:F2({leglength, duration}) self:F2({leglength, duration})
self.racetrack=true self.racetrack=true
@ -280,6 +281,9 @@ function AI_A2A_PATROL:SetRaceTrackPattern(LegMin, LegMax, HeadingMin, HeadingMa
if self.racetrackdurationmax and not self.racetrackdurationmin then if self.racetrackdurationmax and not self.racetrackdurationmin then
self.racetrackdurationmin=self.racetrackdurationmax self.racetrackdurationmin=self.racetrackdurationmax
end end
self.racetrackcapcoordinates=CapCoordinates
end end
@ -365,8 +369,14 @@ function AI_A2A_PATROL:onafterRoute( AIPatrol, From, Event, To )
duration=math.random(self.racetrackdurationmin, self.racetrackdurationmax) duration=math.random(self.racetrackdurationmin, self.racetrackdurationmax)
end end
-- CAP coordinate.
local c0=self.PatrolZone:GetRandomCoordinate()
if self.racetrackcapcoordinates and #self.racetrackcapcoordinates>0 then
c0=self.racetrackcapcoordinates[math.random(#self.racetrackcapcoordinates)]
end
-- Race track points. -- Race track points.
local c1=self.PatrolZone:GetRandomCoordinate():SetAltitude(altitude) --Core.Point#COORDINATE local c1=c0:SetAltitude(altitude) --Core.Point#COORDINATE
local c2=c1:Translate(leg, heading):SetAltitude(altitude) local c2=c1:Translate(leg, heading):SetAltitude(altitude)
-- Debug: -- Debug: