From 2328f9a36bcf25cb3bc406527c301451f435e2c6 Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 23 Jul 2020 19:15:26 +0200 Subject: [PATCH] CHIEF --- Moose Development/Moose/Ops/AirWing.lua | 8 +++--- Moose Development/Moose/Ops/ChiefOfStaff.lua | 11 ++++++-- Moose Development/Moose/Ops/WingCommander.lua | 25 +++++++++++-------- 3 files changed, 27 insertions(+), 17 deletions(-) diff --git a/Moose Development/Moose/Ops/AirWing.lua b/Moose Development/Moose/Ops/AirWing.lua index 7267403ac..e87de00e1 100644 --- a/Moose Development/Moose/Ops/AirWing.lua +++ b/Moose Development/Moose/Ops/AirWing.lua @@ -1555,8 +1555,8 @@ function AIRWING:onafterAssetSpawned(From, Event, To, group, asset, request) end -- Add group to the detection set of the WINGCOMMANDER. - if self.wingcommander then - self.wingcommander.detectionset:AddGroup(asset.flightgroup.group) + if self.wingcommander and self.wingcommander.chief then + self.wingcommander.chief.detectionset:AddGroup(asset.flightgroup.group) end end @@ -1574,8 +1574,8 @@ function AIRWING:onafterAssetDead(From, Event, To, asset, request) self:GetParent(self).onafterAssetDead(self, From, Event, To, asset, request) -- Add group to the detection set of the WINGCOMMANDER. - if self.wingcommander then - self.wingcommander.detectionset:RemoveGroupsByName({asset.spawngroupname}) + if self.wingcommander and self.wingcommander.chief then + self.wingcommander.chief.detectionset:RemoveGroupsByName({asset.spawngroupname}) end -- Remove asset from mission is done via Mission:AssetDead() call from flightgroup onafterFlightDead function diff --git a/Moose Development/Moose/Ops/ChiefOfStaff.lua b/Moose Development/Moose/Ops/ChiefOfStaff.lua index c0b06bbfe..af72725a3 100644 --- a/Moose Development/Moose/Ops/ChiefOfStaff.lua +++ b/Moose Development/Moose/Ops/ChiefOfStaff.lua @@ -110,6 +110,7 @@ function CHIEF:New(AgentSet, Coalition) self:AddTransition("*", "AssignMissionArmy", "*") -- Assign mission to a GENERAL. self:AddTransition("*", "CancelMission", "*") -- Cancel mission. self:AddTransition("*", "Defcon", "*") -- Change defence condition. + self:AddTransition("*", "DeclareWar", "*") -- Declare War. ------------------------ --- Pseudo Functions --- @@ -238,12 +239,14 @@ end --- Set the wing commander for the airforce. -- @param #CHIEF self --- @param Ops.WingCommander WingCommander The WINGCOMMANDER object. +-- @param Ops.WingCommander#WINGCOMMANDER WingCommander The WINGCOMMANDER object. -- @return #CHIEF self function CHIEF:SetWingCommander(WingCommander) self.wingcommander=WingCommander + self.wingcommander.chief=self + return self end @@ -594,14 +597,18 @@ function CHIEF:CheckMissionQueue() -- PLANNNED Mission --- + -- Check if there is an airwing that can do the mission. local airwing=self:GetAirwingForMission(mission) if airwing then -- Add mission to airwing. - self:MissionAssign(airwing, mission) + self:AssignMissionAirforce(mission) return + + else + self:T(self.lid.."NO airwing") end else diff --git a/Moose Development/Moose/Ops/WingCommander.lua b/Moose Development/Moose/Ops/WingCommander.lua index b6ada11ae..13f38e89a 100644 --- a/Moose Development/Moose/Ops/WingCommander.lua +++ b/Moose Development/Moose/Ops/WingCommander.lua @@ -18,6 +18,7 @@ -- @field #string lid Class id string for output to DCS log file. -- @field #table airwings Table of airwings which are commanded. -- @field #table missionqueue Mission queue. +-- @field Ops.ChiefOfStaff#CHIEF chief Chief of staff. -- @extends Core.Fsm#FSM --- Be surprised! @@ -65,12 +66,19 @@ function WINGCOMMANDER:New() -- Inherit everything from INTEL class. local self=BASE:Inherit(self, FSM:New()) --#WINGCOMMANDER + + self.lid="WINGCOMMANDER | " + + -- Start state. + self:SetStartState("NotReadyYet") -- Add FSM transitions. - -- From State --> Event --> To State - self:AddTransition("*", "MissionAssign", "*") -- Mission was assigned to an AIRWING. - self:AddTransition("*", "CancelMission", "*") -- Cancel mission. - self:AddTransition("*", "Defcon", "*") -- Cancel mission. + -- From State --> Event --> To State + self:AddTransition("NotReadyYet", "Start", "OnDuty") -- Start WC. + self:AddTransition("*", "Status", "*") -- Status report. + self:AddTransition("*", "MissionAssign", "*") -- Mission was assigned to an AIRWING. + self:AddTransition("*", "CancelMission", "*") -- Cancel mission. + self:AddTransition("*", "Defcon", "*") -- Cancel mission. ------------------------ --- Pseudo Functions --- @@ -112,7 +120,6 @@ function WINGCOMMANDER:New() end self.Debug=true - return self end @@ -182,9 +189,6 @@ function WINGCOMMANDER:onafterStart(From, Event, To) -- Short info. local text=string.format("Starting Wing Commander") self:I(self.lid..text) - - -- Start parent INTEL. - self:GetParent(self).onafterStart(self, From, Event, To) -- Start attached airwings. for _,_airwing in pairs(self.airwings) do @@ -194,6 +198,7 @@ function WINGCOMMANDER:onafterStart(From, Event, To) end end + self:__Status(-1) end --- On after "Status" event. @@ -204,9 +209,6 @@ end -- @param #string To To state. function WINGCOMMANDER:onafterStatus(From, Event, To) - -- Start parent INTEL. - self:GetParent(self).onafterStatus(self, From, Event, To) - -- FSM state. local fsmstate=self:GetState() @@ -226,6 +228,7 @@ function WINGCOMMANDER:onafterStatus(From, Event, To) self:I(self.lid..text) end + self:__Status(-30) end -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------