From 5fda8c1c1b29e4e9dd2ea1ea7bece46684623b56 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 31 Jan 2020 12:02:13 +0100 Subject: [PATCH] FG TG --- Moose Development/Moose/Modules.lua | 2 + Moose Development/Moose/Ops/FlightGroup.lua | 21 ++++++++++ Moose Development/Moose/Ops/TankerGroup.lua | 45 ++++++++++++++++----- 3 files changed, 58 insertions(+), 10 deletions(-) diff --git a/Moose Development/Moose/Modules.lua b/Moose Development/Moose/Modules.lua index d4ab86556..99538fa42 100644 --- a/Moose Development/Moose/Modules.lua +++ b/Moose Development/Moose/Modules.lua @@ -78,6 +78,8 @@ __Moose.Include( 'Scripts/Moose/Ops/CarrierAirWing.lua' ) __Moose.Include( 'Scripts/Moose/Ops/Squadron.lua' ) __Moose.Include( 'Scripts/Moose/Ops/FlightGroup.lua' ) __Moose.Include( 'Scripts/Moose/Ops/ATIS.lua' ) +__Moose.Include( 'Scripts/Moose/Ops/TankerGroup.lua' ) +__Moose.Include( 'Scripts/Moose/Ops/AwacsGroup.lua' ) __Moose.Include( 'Scripts/Moose/AI/AI_Balancer.lua' ) __Moose.Include( 'Scripts/Moose/AI/AI_Air.lua' ) diff --git a/Moose Development/Moose/Ops/FlightGroup.lua b/Moose Development/Moose/Ops/FlightGroup.lua index 388b1901e..db9354d05 100644 --- a/Moose Development/Moose/Ops/FlightGroup.lua +++ b/Moose Development/Moose/Ops/FlightGroup.lua @@ -2831,6 +2831,27 @@ function FLIGHTGROUP:IsStartAir() return nil end +--- Check if this group is "late activated". +-- @param #FLIGHTGROUP self +-- @return #boolean Hot start? +function FLIGHTGROUP:IsLateActivated() + + local wp=self.group:GetTemplate() + local template=_DATABASE:GetGroupTemplate(self.groupname) + + if template then + + if template.lateActivation==true then + return true + else + return false + end + + end + + return nil +end + --- Check if task description is unique. -- @param #FLIGHTGROUP self -- @param #string description Task destription diff --git a/Moose Development/Moose/Ops/TankerGroup.lua b/Moose Development/Moose/Ops/TankerGroup.lua index c7650834f..be0fdcac5 100644 --- a/Moose Development/Moose/Ops/TankerGroup.lua +++ b/Moose Development/Moose/Ops/TankerGroup.lua @@ -47,8 +47,8 @@ TANKERGROUP = { Debug = false, lid = nil, tankerzones = nil, - missionqueue = {}, - clientqueue = {}, + Qmissions = {}, + Qclients = {}, currentmission = nil, missioncounter = nil, } @@ -104,6 +104,16 @@ function TANKERGROUP:New(groupname) self.missioncounter=0 + self.lid=string.format("TANKERGROUP %s | ", groupname) + + BASE:TraceOn() + BASE:TraceLevel(3) + BASE:TraceClass(self.ClassName) + + env.info("FF NEW Tanker!") + + self:TankerStatus() + return self end @@ -114,7 +124,7 @@ end --- Add mission for tanker. -- @param #TANKERGROUP self -- @return #TANKERGROUP self -function TANKERGROUP:AddMission(Zone) +function TANKERGROUP:AddMission(Zone, Altitude, Distance, Speed) self.missioncounter=self.missioncounter+1 @@ -126,8 +136,10 @@ function TANKERGROUP:AddMission(Zone) mission.distance=UTILS.NMToMeters(Distance or 25) mission.name="Aerial Refueling" mission.speed=UTILS.KnotsToMps(Speed or 280) + mission.heading=270 mission.tid=nil + table.insert(self.Qmissions, mission) end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -141,17 +153,30 @@ end -- @param #string To To state. function TANKERGROUP:onafterTankerStatus(From, Event, To) + env.info("FF Tanker status!") + -- FSM state. local fsmstate=self:GetState() - local mission=self:_GetNextMission() + -- First check if group is alive? + if self.group and self.group:IsAlive()==true then - if mission then - - self:MissionStart(mission) + local mission=self:_GetNextMission() + if mission then + + self:MissionStart(mission) + + end end + + local mymission=self.currentmission and self.currentmission.name or "N/A" + + local text=string.format("Tanker Status %s: Mission=%s (%d)", fsmstate, mymission, #self.Qmissions) + self:I(self.lid..text) + + self:__TankerStatus(30) end --- On after "MissionStart" event. @@ -179,7 +204,7 @@ function TANKERGROUP:onafterMissionStart(From, Event, To, Mission) end - self:RouteTo() + self:RouteTo(Mission) end @@ -192,13 +217,13 @@ end -- @return #TANKERGROUP.Mission Next mission or *nil*. function TANKERGROUP:_GetNextMission() - if #self.missionqueue==0 then + if #self.Qmissions==0 then return nil end --TODO: Sort wrt start time and priority. - local mission=self.missionqueue[1] + local mission=self.Qmissions[1] return mission end