mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
CHIEF
This commit is contained in:
@@ -1555,8 +1555,8 @@ function AIRWING:onafterAssetSpawned(From, Event, To, group, asset, request)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Add group to the detection set of the WINGCOMMANDER.
|
-- Add group to the detection set of the WINGCOMMANDER.
|
||||||
if self.wingcommander then
|
if self.wingcommander and self.wingcommander.chief then
|
||||||
self.wingcommander.detectionset:AddGroup(asset.flightgroup.group)
|
self.wingcommander.chief.detectionset:AddGroup(asset.flightgroup.group)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -1574,8 +1574,8 @@ function AIRWING:onafterAssetDead(From, Event, To, asset, request)
|
|||||||
self:GetParent(self).onafterAssetDead(self, From, Event, To, asset, request)
|
self:GetParent(self).onafterAssetDead(self, From, Event, To, asset, request)
|
||||||
|
|
||||||
-- Add group to the detection set of the WINGCOMMANDER.
|
-- Add group to the detection set of the WINGCOMMANDER.
|
||||||
if self.wingcommander then
|
if self.wingcommander and self.wingcommander.chief then
|
||||||
self.wingcommander.detectionset:RemoveGroupsByName({asset.spawngroupname})
|
self.wingcommander.chief.detectionset:RemoveGroupsByName({asset.spawngroupname})
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Remove asset from mission is done via Mission:AssetDead() call from flightgroup onafterFlightDead function
|
-- Remove asset from mission is done via Mission:AssetDead() call from flightgroup onafterFlightDead function
|
||||||
|
|||||||
@@ -110,6 +110,7 @@ function CHIEF:New(AgentSet, Coalition)
|
|||||||
self:AddTransition("*", "AssignMissionArmy", "*") -- Assign mission to a GENERAL.
|
self:AddTransition("*", "AssignMissionArmy", "*") -- Assign mission to a GENERAL.
|
||||||
self:AddTransition("*", "CancelMission", "*") -- Cancel mission.
|
self:AddTransition("*", "CancelMission", "*") -- Cancel mission.
|
||||||
self:AddTransition("*", "Defcon", "*") -- Change defence condition.
|
self:AddTransition("*", "Defcon", "*") -- Change defence condition.
|
||||||
|
self:AddTransition("*", "DeclareWar", "*") -- Declare War.
|
||||||
|
|
||||||
------------------------
|
------------------------
|
||||||
--- Pseudo Functions ---
|
--- Pseudo Functions ---
|
||||||
@@ -238,12 +239,14 @@ end
|
|||||||
|
|
||||||
--- Set the wing commander for the airforce.
|
--- Set the wing commander for the airforce.
|
||||||
-- @param #CHIEF self
|
-- @param #CHIEF self
|
||||||
-- @param Ops.WingCommander WingCommander The WINGCOMMANDER object.
|
-- @param Ops.WingCommander#WINGCOMMANDER WingCommander The WINGCOMMANDER object.
|
||||||
-- @return #CHIEF self
|
-- @return #CHIEF self
|
||||||
function CHIEF:SetWingCommander(WingCommander)
|
function CHIEF:SetWingCommander(WingCommander)
|
||||||
|
|
||||||
self.wingcommander=WingCommander
|
self.wingcommander=WingCommander
|
||||||
|
|
||||||
|
self.wingcommander.chief=self
|
||||||
|
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -594,14 +597,18 @@ function CHIEF:CheckMissionQueue()
|
|||||||
-- PLANNNED Mission
|
-- PLANNNED Mission
|
||||||
---
|
---
|
||||||
|
|
||||||
|
-- Check if there is an airwing that can do the mission.
|
||||||
local airwing=self:GetAirwingForMission(mission)
|
local airwing=self:GetAirwingForMission(mission)
|
||||||
|
|
||||||
if airwing then
|
if airwing then
|
||||||
|
|
||||||
-- Add mission to airwing.
|
-- Add mission to airwing.
|
||||||
self:MissionAssign(airwing, mission)
|
self:AssignMissionAirforce(mission)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
else
|
||||||
|
self:T(self.lid.."NO airwing")
|
||||||
end
|
end
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
-- @field #string lid Class id string for output to DCS log file.
|
-- @field #string lid Class id string for output to DCS log file.
|
||||||
-- @field #table airwings Table of airwings which are commanded.
|
-- @field #table airwings Table of airwings which are commanded.
|
||||||
-- @field #table missionqueue Mission queue.
|
-- @field #table missionqueue Mission queue.
|
||||||
|
-- @field Ops.ChiefOfStaff#CHIEF chief Chief of staff.
|
||||||
-- @extends Core.Fsm#FSM
|
-- @extends Core.Fsm#FSM
|
||||||
|
|
||||||
--- Be surprised!
|
--- Be surprised!
|
||||||
@@ -65,12 +66,19 @@ function WINGCOMMANDER:New()
|
|||||||
|
|
||||||
-- Inherit everything from INTEL class.
|
-- Inherit everything from INTEL class.
|
||||||
local self=BASE:Inherit(self, FSM:New()) --#WINGCOMMANDER
|
local self=BASE:Inherit(self, FSM:New()) --#WINGCOMMANDER
|
||||||
|
|
||||||
|
self.lid="WINGCOMMANDER | "
|
||||||
|
|
||||||
|
-- Start state.
|
||||||
|
self:SetStartState("NotReadyYet")
|
||||||
|
|
||||||
-- Add FSM transitions.
|
-- Add FSM transitions.
|
||||||
-- From State --> Event --> To State
|
-- From State --> Event --> To State
|
||||||
self:AddTransition("*", "MissionAssign", "*") -- Mission was assigned to an AIRWING.
|
self:AddTransition("NotReadyYet", "Start", "OnDuty") -- Start WC.
|
||||||
self:AddTransition("*", "CancelMission", "*") -- Cancel mission.
|
self:AddTransition("*", "Status", "*") -- Status report.
|
||||||
self:AddTransition("*", "Defcon", "*") -- Cancel mission.
|
self:AddTransition("*", "MissionAssign", "*") -- Mission was assigned to an AIRWING.
|
||||||
|
self:AddTransition("*", "CancelMission", "*") -- Cancel mission.
|
||||||
|
self:AddTransition("*", "Defcon", "*") -- Cancel mission.
|
||||||
|
|
||||||
------------------------
|
------------------------
|
||||||
--- Pseudo Functions ---
|
--- Pseudo Functions ---
|
||||||
@@ -112,7 +120,6 @@ function WINGCOMMANDER:New()
|
|||||||
end
|
end
|
||||||
self.Debug=true
|
self.Debug=true
|
||||||
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -182,9 +189,6 @@ function WINGCOMMANDER:onafterStart(From, Event, To)
|
|||||||
-- Short info.
|
-- Short info.
|
||||||
local text=string.format("Starting Wing Commander")
|
local text=string.format("Starting Wing Commander")
|
||||||
self:I(self.lid..text)
|
self:I(self.lid..text)
|
||||||
|
|
||||||
-- Start parent INTEL.
|
|
||||||
self:GetParent(self).onafterStart(self, From, Event, To)
|
|
||||||
|
|
||||||
-- Start attached airwings.
|
-- Start attached airwings.
|
||||||
for _,_airwing in pairs(self.airwings) do
|
for _,_airwing in pairs(self.airwings) do
|
||||||
@@ -194,6 +198,7 @@ function WINGCOMMANDER:onafterStart(From, Event, To)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
self:__Status(-1)
|
||||||
end
|
end
|
||||||
|
|
||||||
--- On after "Status" event.
|
--- On after "Status" event.
|
||||||
@@ -204,9 +209,6 @@ end
|
|||||||
-- @param #string To To state.
|
-- @param #string To To state.
|
||||||
function WINGCOMMANDER:onafterStatus(From, Event, To)
|
function WINGCOMMANDER:onafterStatus(From, Event, To)
|
||||||
|
|
||||||
-- Start parent INTEL.
|
|
||||||
self:GetParent(self).onafterStatus(self, From, Event, To)
|
|
||||||
|
|
||||||
-- FSM state.
|
-- FSM state.
|
||||||
local fsmstate=self:GetState()
|
local fsmstate=self:GetState()
|
||||||
|
|
||||||
@@ -226,6 +228,7 @@ function WINGCOMMANDER:onafterStatus(From, Event, To)
|
|||||||
self:I(self.lid..text)
|
self:I(self.lid..text)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
self:__Status(-30)
|
||||||
end
|
end
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user