mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2026-08-20 17:07:54 +00:00
Merge pull request #2495 from shaji-Dev/master
COMMANDER and CHIEF fixes and additions
This commit is contained in:
@@ -396,7 +396,8 @@ function CHIEF:New(Coalition, AgentSet, Alias)
|
|||||||
self.TransportCategories = {Group.Category.HELICOPTER}
|
self.TransportCategories = {Group.Category.HELICOPTER}
|
||||||
|
|
||||||
-- Create a new COMMANDER.
|
-- Create a new COMMANDER.
|
||||||
self.commander=COMMANDER:New(Coalition)
|
self.commander=COMMANDER:New(Coalition, Alias)
|
||||||
|
|
||||||
|
|
||||||
-- Add FSM transitions.
|
-- Add FSM transitions.
|
||||||
-- From State --> Event --> To State
|
-- From State --> Event --> To State
|
||||||
@@ -3357,6 +3358,15 @@ function CHIEF._CheckAssetProperties(Asset, Properties)
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
--- Checks whether or not any of the legions con run a mission.
|
||||||
|
-- @param #CHIEF self
|
||||||
|
-- @param Ops.Auftrag#AUFTRAG Mission The mission.
|
||||||
|
-- @return #boolean If `true`, one of the cohorts can run the mission.
|
||||||
|
function CHIEF:CanMission(Mission)
|
||||||
|
return self.commander and self.commander:CanStartMission(Mission)
|
||||||
|
end
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1748,6 +1748,70 @@ function COMMANDER:_GetCohorts(Legions, Cohorts, Operation)
|
|||||||
return cohorts
|
return cohorts
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Checks whether or not any of the legions con run a mission.
|
||||||
|
-- @param #COMMANDER self
|
||||||
|
-- @param Ops.Auftrag#AUFTRAG Mission The mission.
|
||||||
|
-- @return #boolean If `true`, one of the cohorts can run the mission.
|
||||||
|
function COMMANDER:CanMission(Mission)
|
||||||
|
local commander = self
|
||||||
|
|
||||||
|
-- Target position.
|
||||||
|
local TargetVec2 = Mission:GetTargetVec2()
|
||||||
|
|
||||||
|
local MaxWeight = nil
|
||||||
|
|
||||||
|
if Mission.NcarriersMin then
|
||||||
|
|
||||||
|
local legions = commander.legions
|
||||||
|
local cohorts = nil
|
||||||
|
if Mission.transportLegions or Mission.transportCohorts then
|
||||||
|
legions = Mission.transportLegions
|
||||||
|
cohorts = Mission.transportCohorts
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Get transport cohorts.
|
||||||
|
local Cohorts = LEGION._GetCohorts(legions, cohorts)
|
||||||
|
|
||||||
|
-- Filter cohorts that can actually perform transport missions.
|
||||||
|
local transportcohorts = {}
|
||||||
|
for _, _cohort in pairs(Cohorts) do
|
||||||
|
local cohort = _cohort --Ops.Cohort#COHORT
|
||||||
|
|
||||||
|
-- Check if cohort can perform transport to target.
|
||||||
|
local can = LEGION._CohortCan(cohort, AUFTRAG.Type.OPSTRANSPORT, Mission.carrierCategories, Mission.carrierAttributes, Mission.carrierProperties, nil, TargetVec2)
|
||||||
|
|
||||||
|
-- MaxWeight of cargo assets is limited by the largets available cargo bay. We don't want to select, e.g., tanks that cannot be transported by APCs or helos.
|
||||||
|
if can and (MaxWeight == nil or cohort.cargobayLimit > MaxWeight) then
|
||||||
|
MaxWeight = cohort.cargobayLimit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
local legions = commander.legions
|
||||||
|
local cohorts = nil
|
||||||
|
if Mission.specialLegions or Mission.specialCohorts then
|
||||||
|
legions = Mission.specialLegions
|
||||||
|
cohorts = Mission.specialCohorts
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Get cohorts.
|
||||||
|
local Cohorts = LEGION._GetCohorts(legions, cohorts, Mission.operation, commander.opsqueue)
|
||||||
|
|
||||||
|
for _, _cohort in pairs(Cohorts) do
|
||||||
|
local cohort = _cohort --Ops.Cohort#COHORT
|
||||||
|
|
||||||
|
-- Check if cohort can do the mission.
|
||||||
|
local can = LEGION._CohortCan(cohort, Mission.type, nil, Mission.attributes, Mission.properties, { Mission.engageWeaponType }, TargetVec2, Mission.engageRange, Mission.refuelSystem, nil, MaxWeight)
|
||||||
|
if can then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
--- Recruit assets for a given mission.
|
--- Recruit assets for a given mission.
|
||||||
-- @param #COMMANDER self
|
-- @param #COMMANDER self
|
||||||
-- @param Ops.Auftrag#AUFTRAG Mission The mission.
|
-- @param Ops.Auftrag#AUFTRAG Mission The mission.
|
||||||
|
|||||||
Reference in New Issue
Block a user