mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Boom and Probe
This commit is contained in:
parent
e4aa23ce3d
commit
a2808163a7
@ -148,12 +148,13 @@ AIRWING = {
|
|||||||
-- @field #number heading Heading in degrees.
|
-- @field #number heading Heading in degrees.
|
||||||
-- @field #number leg Leg length in NM.
|
-- @field #number leg Leg length in NM.
|
||||||
-- @field #number speed Speed in knots.
|
-- @field #number speed Speed in knots.
|
||||||
|
-- @field #number refuelsystem Refueling system type: `0=Unit.RefuelingSystem.BOOM_AND_RECEPTACLE`, `1=Unit.RefuelingSystem.PROBE_AND_DROGUE`.
|
||||||
-- @field #number noccupied Number of flights on this patrol point.
|
-- @field #number noccupied Number of flights on this patrol point.
|
||||||
-- @field Wrapper.Marker#MARKER marker F10 marker.
|
-- @field Wrapper.Marker#MARKER marker F10 marker.
|
||||||
|
|
||||||
--- AIRWING class version.
|
--- AIRWING class version.
|
||||||
-- @field #string version
|
-- @field #string version
|
||||||
AIRWING.version="0.5.1"
|
AIRWING.version="0.6.0"
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
-- ToDo list
|
-- ToDo list
|
||||||
@ -739,8 +740,9 @@ end
|
|||||||
-- @param #number Heading Heading in degrees. Default random (0, 360] degrees.
|
-- @param #number Heading Heading in degrees. Default random (0, 360] degrees.
|
||||||
-- @param #number LegLength Length of race-track orbit in NM. Default 15 NM.
|
-- @param #number LegLength Length of race-track orbit in NM. Default 15 NM.
|
||||||
-- @param #number Speed Orbit speed in knots. Default 350 knots.
|
-- @param #number Speed Orbit speed in knots. Default 350 knots.
|
||||||
|
-- @param #number RefuelSystem Refueling system: 0=Boom, 1=Probe. Default nil=any.
|
||||||
-- @return #AIRWING.PatrolData Patrol point table.
|
-- @return #AIRWING.PatrolData Patrol point table.
|
||||||
function AIRWING:NewPatrolPoint(Type, Coordinate, Altitude, Speed, Heading, LegLength)
|
function AIRWING:NewPatrolPoint(Type, Coordinate, Altitude, Speed, Heading, LegLength, RefuelSystem)
|
||||||
|
|
||||||
local patrolpoint={} --#AIRWING.PatrolData
|
local patrolpoint={} --#AIRWING.PatrolData
|
||||||
patrolpoint.type=Type or "Unknown"
|
patrolpoint.type=Type or "Unknown"
|
||||||
@ -750,6 +752,7 @@ function AIRWING:NewPatrolPoint(Type, Coordinate, Altitude, Speed, Heading, LegL
|
|||||||
patrolpoint.altitude=Altitude or math.random(10,20)*1000
|
patrolpoint.altitude=Altitude or math.random(10,20)*1000
|
||||||
patrolpoint.speed=Speed or 350
|
patrolpoint.speed=Speed or 350
|
||||||
patrolpoint.noccupied=0
|
patrolpoint.noccupied=0
|
||||||
|
patrolpoint.refuelsystem=RefuelSystem
|
||||||
|
|
||||||
if self.markpoints then
|
if self.markpoints then
|
||||||
patrolpoint.marker=MARKER:New(Coordinate, "New Patrol Point"):ToAll()
|
patrolpoint.marker=MARKER:New(Coordinate, "New Patrol Point"):ToAll()
|
||||||
@ -783,10 +786,11 @@ end
|
|||||||
-- @param #number Speed Orbit speed in knots.
|
-- @param #number Speed Orbit speed in knots.
|
||||||
-- @param #number Heading Heading in degrees.
|
-- @param #number Heading Heading in degrees.
|
||||||
-- @param #number LegLength Length of race-track orbit in NM.
|
-- @param #number LegLength Length of race-track orbit in NM.
|
||||||
|
-- @param #number RefuelSystem Set refueling system of tanker: 0=boom, 1=probe. Default any (=nil).
|
||||||
-- @return #AIRWING self
|
-- @return #AIRWING self
|
||||||
function AIRWING:AddPatrolPointTANKER(Coordinate, Altitude, Speed, Heading, LegLength)
|
function AIRWING:AddPatrolPointTANKER(Coordinate, Altitude, Speed, Heading, LegLength, RefuelSystem)
|
||||||
|
|
||||||
local patrolpoint=self:NewPatrolPoint("Tanker", Coordinate, Altitude, Speed, Heading, LegLength)
|
local patrolpoint=self:NewPatrolPoint("Tanker", Coordinate, Altitude, Speed, Heading, LegLength, RefuelSystem)
|
||||||
|
|
||||||
table.insert(self.pointsTANKER, patrolpoint)
|
table.insert(self.pointsTANKER, patrolpoint)
|
||||||
|
|
||||||
@ -919,11 +923,12 @@ function AIRWING:onafterStatus(From, Event, To)
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Get patrol data
|
--- Get patrol data.
|
||||||
-- @param #AIRWING self
|
-- @param #AIRWING self
|
||||||
-- @param #table PatrolPoints Patrol data points.
|
-- @param #table PatrolPoints Patrol data points.
|
||||||
-- @return #AIRWING.PatrolData
|
-- @param #number RefuelSystem If provided, only return points with the specific refueling system.
|
||||||
function AIRWING:_GetPatrolData(PatrolPoints)
|
-- @return #AIRWING.PatrolData Patrol point data table.
|
||||||
|
function AIRWING:_GetPatrolData(PatrolPoints, RefuelSystem)
|
||||||
|
|
||||||
-- Sort wrt lowest number of flights on this point.
|
-- Sort wrt lowest number of flights on this point.
|
||||||
local function sort(a,b)
|
local function sort(a,b)
|
||||||
@ -934,14 +939,18 @@ function AIRWING:_GetPatrolData(PatrolPoints)
|
|||||||
|
|
||||||
-- Sort data wrt number of flights at that point.
|
-- Sort data wrt number of flights at that point.
|
||||||
table.sort(PatrolPoints, sort)
|
table.sort(PatrolPoints, sort)
|
||||||
return PatrolPoints[1]
|
|
||||||
|
|
||||||
else
|
for _,_patrolpoint in pairs(PatrolPoints) do
|
||||||
|
local patrolpoint=_patrolpoint --#AIRWING.PatrolData
|
||||||
return self:NewPatrolPoint()
|
if (RefuelSystem and patrolpoint.refuelsystem and RefuelSystem==patrolpoint.refuelsystem) or RefuelSystem==nil or patrolpoint.refuelsystem==nil then
|
||||||
|
return patrolpoint
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Return a new point.
|
||||||
|
return self:NewPatrolPoint()
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Check how many CAP missions are assigned and add number of missing missions.
|
--- Check how many CAP missions are assigned and add number of missing missions.
|
||||||
@ -980,14 +989,14 @@ function AIRWING:CheckTANKER()
|
|||||||
local Nboom=0
|
local Nboom=0
|
||||||
local Nprob=0
|
local Nprob=0
|
||||||
|
|
||||||
-- Count tanker mission.
|
-- Count tanker missions.
|
||||||
for _,_mission in pairs(self.missionqueue) do
|
for _,_mission in pairs(self.missionqueue) do
|
||||||
local mission=_mission --Ops.Auftrag#AUFTRAG
|
local mission=_mission --Ops.Auftrag#AUFTRAG
|
||||||
|
|
||||||
if mission:IsNotOver() and mission.type==AUFTRAG.Type.TANKER then
|
if mission:IsNotOver() and mission.type==AUFTRAG.Type.TANKER then
|
||||||
if mission.refuelSystem==0 then
|
if mission.refuelSystem==Unit.RefuelingSystem.BOOM_AND_RECEPTACLE then
|
||||||
Nboom=Nboom+1
|
Nboom=Nboom+1
|
||||||
elseif mission.refuelSystem==1 then
|
elseif mission.refuelSystem==Unit.RefuelingSystem.PROBE_AND_DROGUE then
|
||||||
Nprob=Nprob+1
|
Nprob=Nprob+1
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -995,13 +1004,14 @@ function AIRWING:CheckTANKER()
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Check missing boom tankers.
|
||||||
for i=1,self.nflightsTANKERboom-Nboom do
|
for i=1,self.nflightsTANKERboom-Nboom do
|
||||||
|
|
||||||
local patrol=self:_GetPatrolData(self.pointsTANKER)
|
local patrol=self:_GetPatrolData(self.pointsTANKER)
|
||||||
|
|
||||||
local altitude=patrol.altitude+1000*patrol.noccupied
|
local altitude=patrol.altitude+1000*patrol.noccupied
|
||||||
|
|
||||||
local mission=AUFTRAG:NewTANKER(patrol.coord, altitude, patrol.speed, patrol.heading, patrol.leg, 1)
|
local mission=AUFTRAG:NewTANKER(patrol.coord, altitude, patrol.speed, patrol.heading, patrol.leg, Unit.RefuelingSystem.BOOM_AND_RECEPTACLE)
|
||||||
|
|
||||||
mission.patroldata=patrol
|
mission.patroldata=patrol
|
||||||
|
|
||||||
@ -1013,13 +1023,14 @@ function AIRWING:CheckTANKER()
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Check missing probe tankers.
|
||||||
for i=1,self.nflightsTANKERprobe-Nprob do
|
for i=1,self.nflightsTANKERprobe-Nprob do
|
||||||
|
|
||||||
local patrol=self:_GetPatrolData(self.pointsTANKER)
|
local patrol=self:_GetPatrolData(self.pointsTANKER)
|
||||||
|
|
||||||
local altitude=patrol.altitude+1000*patrol.noccupied
|
local altitude=patrol.altitude+1000*patrol.noccupied
|
||||||
|
|
||||||
local mission=AUFTRAG:NewTANKER(patrol.coord, altitude, patrol.speed, patrol.heading, patrol.leg, 0)
|
local mission=AUFTRAG:NewTANKER(patrol.coord, altitude, patrol.speed, patrol.heading, patrol.leg, Unit.RefuelingSystem.PROBE_AND_DROGUE)
|
||||||
|
|
||||||
mission.patroldata=patrol
|
mission.patroldata=patrol
|
||||||
|
|
||||||
|
|||||||
@ -688,7 +688,7 @@ end
|
|||||||
-- @param #number Speed Orbit speed in knots. Default 350 kts.
|
-- @param #number Speed Orbit speed in knots. Default 350 kts.
|
||||||
-- @param #number Heading Heading of race-track pattern in degrees. Default 270 (East to West).
|
-- @param #number Heading Heading of race-track pattern in degrees. Default 270 (East to West).
|
||||||
-- @param #number Leg Length of race-track in NM. Default 10 NM.
|
-- @param #number Leg Length of race-track in NM. Default 10 NM.
|
||||||
-- @param #number RefuelSystem Refueling system (1=boom, 0=probe). This info is *only* for AIRWINGs so they launch the right tanker type.
|
-- @param #number RefuelSystem Refueling system (0=boom, 1=probe). This info is *only* for AIRWINGs so they launch the right tanker type.
|
||||||
-- @return #AUFTRAG self
|
-- @return #AUFTRAG self
|
||||||
function AUFTRAG:NewTANKER(Coordinate, Altitude, Speed, Heading, Leg, RefuelSystem)
|
function AUFTRAG:NewTANKER(Coordinate, Altitude, Speed, Heading, Leg, RefuelSystem)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user