From 60bb6de4a5f55def5a26eb27070aa686f633be93 Mon Sep 17 00:00:00 2001 From: FlightControl Date: Fri, 13 Jan 2017 14:05:09 +0100 Subject: [PATCH] CAS first prototype --- Moose Development/Moose/AI/AI_CAS.lua | 711 ++++++++--------- Moose Development/Moose/AI/AI_Patrol.lua | 219 +++++- Moose Development/Moose/Moose.lua | 1 + .../Moose/Wrapper/Controllable.lua | 1 + .../Moose/Wrapper/Identifiable.lua | 2 +- Moose Development/Moose/Wrapper/Object.lua | 2 +- .../Moose/Wrapper/Positionable.lua | 2 +- .../l10n/DEFAULT/Moose.lua | 721 +++++++++++++++++- Moose Mission Setup/Moose.lua | 721 +++++++++++++++++- Moose Mission Setup/Moose_Create.bat | 1 + .../CAS-001 - CAS in a ZONE.lua | 37 + .../CAS-001 - CAS in a ZONE.miz | Bin 0 -> 219524 bytes 12 files changed, 1933 insertions(+), 485 deletions(-) create mode 100644 Moose Test Missions/CAS - Close Air Support/CAS-001 - CAS in a ZONE/CAS-001 - CAS in a ZONE.lua create mode 100644 Moose Test Missions/CAS - Close Air Support/CAS-001 - CAS in a ZONE/CAS-001 - CAS in a ZONE.miz diff --git a/Moose Development/Moose/AI/AI_CAS.lua b/Moose Development/Moose/AI/AI_CAS.lua index 50e4009be..99405281d 100644 --- a/Moose Development/Moose/AI/AI_CAS.lua +++ b/Moose Development/Moose/AI/AI_CAS.lua @@ -1,42 +1,42 @@ ---- SP:Y MP:Y AI:Y HU:N TYP:Air -- This module contains the AI_CAS class. +--- SP:Y MP:Y AI:Y HU:N TYP:Air -- This module contains the AI_CAS_ZONE class. -- -- === -- --- 1) @{#AI_CAS} class, extends @{Core.Fsm#FSM_CONTROLLABLE} +-- 1) @{#AI_CAS_ZONE} class, extends @{Core.Fsm#FSM_CONTROLLABLE} -- ================================================================ --- The @{#AI_CAS} class implements the core functions to CAS a @{Zone} by an AIR @{Controllable} @{Group}. +-- The @{#AI_CAS_ZONE} class implements the core functions to CAS a @{Zone} by an AIR @{Controllable} @{Group}. -- --- 1.1) AI_CAS constructor: +-- 1.1) AI_CAS_ZONE constructor: -- ---------------------------- -- --- * @{#AI_CAS.New}(): Creates a new AI_CAS object. +-- * @{#AI_CAS_ZONE.New}(): Creates a new AI_CAS_ZONE object. -- --- 1.2) AI_CAS state machine: +-- 1.2) AI_CAS_ZONE state machine: -- ---------------------------------- --- The AI_CAS is a state machine: it manages the different events and states of the AIControllable it is controlling. +-- The AI_CAS_ZONE is a state machine: it manages the different events and states of the AIControllable it is controlling. -- --- ### 1.2.1) AI_CAS Events: +-- ### 1.2.1) AI_CAS_ZONE Events: -- --- * @{#AI_CAS.TakeOff}( AIControllable ): The AI is taking-off from an airfield. --- * @{#AI_CAS.Hold}( AIControllable ): The AI is holding in airspace at a zone. --- * @{#AI_CAS.Engage}( AIControllable ): The AI is engaging the targets. --- * @{#AI_CAS.WeaponReleased}( AIControllable ): The AI has released a weapon to the target. --- * @{#AI_CAS.Destroy}( AIControllable ): The AI has destroyed a target. --- * @{#AI_CAS.Complete}( AIControllable ): The AI has destroyed all defined targets. --- * @{#AI_CAS.RTB}( AIControllable ): The AI is returning to the home base. +-- * @{#AI_CAS_ZONE.TakeOff}( AIControllable ): The AI is taking-off from an airfield. +-- * @{#AI_CAS_ZONE.Hold}( AIControllable ): The AI is holding in airspace at a zone. +-- * @{#AI_CAS_ZONE.Engage}( AIControllable ): The AI is engaging the targets. +-- * @{#AI_CAS_ZONE.WeaponReleased}( AIControllable ): The AI has released a weapon to the target. +-- * @{#AI_CAS_ZONE.Destroy}( AIControllable ): The AI has destroyed a target. +-- * @{#AI_CAS_ZONE.Complete}( AIControllable ): The AI has destroyed all defined targets. +-- * @{#AI_CAS_ZONE.RTB}( AIControllable ): The AI is returning to the home base. -- --- ### 1.2.2) AI_CAS States: +-- ### 1.2.2) AI_CAS_ZONE States: -- -- --- ### 1.2.3) AI_CAS state transition methods: +-- ### 1.2.3) AI_CAS_ZONE state transition methods: -- -- --- 1.3) Manage the AI_CAS parameters: +-- 1.3) Manage the AI_CAS_ZONE parameters: -- ------------------------------------------ --- The following methods are available to modify the parameters of an AI_CAS object: +-- The following methods are available to modify the parameters of an AI_CAS_ZONE object: -- --- * @{#AI_CAS.SetControllable}(): Set the AIControllable. --- * @{#AI_CAS.GetControllable}(): Get the AIControllable. +-- * @{#AI_CAS_ZONE.SetControllable}(): Set the AIControllable. +-- * @{#AI_CAS_ZONE.GetControllable}(): Get the AIControllable. -- -- ==== -- @@ -70,181 +70,44 @@ -- @module Cas ---- AI_CAS class --- @type AI_CAS +--- AI_CAS_ZONE class +-- @type AI_CAS_ZONE -- @field Wrapper.Controllable#CONTROLLABLE AIControllable The @{Controllable} patrolling. -- @field Core.Zone#ZONE_BASE TargetZone The @{Zone} where the patrol needs to be executed. --- @extends Core.Fsm#FSM_CONTROLLABLE -AI_CAS = { - ClassName = "AI_CAS", +-- @extends AI.AI_Patrol#AI_PATROLZONE +AI_CAS_ZONE = { + ClassName = "AI_CAS_ZONE", } ---- Creates a new AI_CAS object. --- @param #AI_CAS self --- @param Wrapper.Controllable#CONTROLLABLE Ct --- @param Core.Zone#ZONE_BASE TargetZone The @{Zone} where the CAS needs to be executed. --- @param Core.Set#SET_UNIT TargetSet The @{Set} of units to be destroyed. --- @return #AI_CAS The new AI_CAS object. -function AI_CAS:New( Ct, TargetZone, TargetSet ) +--- Creates a new AI_CAS_ZONE object +-- @param #AI_CAS_ZONE self +-- @param Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed. +-- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. +-- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. +-- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h. +-- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h. +-- @param Core.Zone#ZONE EngageZone +-- @return #AI_CAS_ZONE self +function AI_CAS_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, EngageZone ) -- Inherits from BASE - local self = BASE:Inherit( self, FSM_CONTROLLABLE:New() ) -- #AI_CAS + local self = BASE:Inherit( self, AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed ) ) -- #AI_CAS_ZONE - self:SetStartState( "None" ) - - env.info( Ct ) - - do self:AddTransition( "*", "TakeOff", "RTH" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS. - - --- OnLeave State Transition for *. - -- @function [parent=#AI_CAS] OnLeave - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnEnter State Transition for RTH. - -- @function [parent=#AI_CAS] OnEnterRTH - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- OnBefore State Transition for TakeOff. - -- @function [parent=#AI_CAS] OnBeforeTakeOff - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter State Transition for TakeOff. - -- @function [parent=#AI_CAS] OnAfterTakeOff - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - - --- Embedded Event Trigger for TakeOff. - -- @function [parent=#AI_CAS] TakeOff - -- @param #AI_CAS self - - --- Delayed Event Trigger for TakeOff - -- @function [parent=#AI_CAS] __TakeOff - -- @param #AI_CAS self - -- @param #number Delay The delay in seconds. - - end -- AI_CAS - - do self:AddTransition( "RTH", "RouteToHold", "RTH" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS. - - --- OnLeave State Transition for RTH. - -- @function [parent=#AI_CAS] OnLeaveRTH - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnEnter State Transition for RTH. - -- @function [parent=#AI_CAS] OnEnterRTH - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- OnBefore State Transition for RouteToHold. - -- @function [parent=#AI_CAS] OnBeforeRouteToHold - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - - - --- OnAfter State Transition for RouteToHold. - -- @function [parent=#AI_CAS] OnAfterRouteToHold - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Embedded Event Trigger for RouteToHold. - -- @function [parent=#AI_CAS] RouteToHold - -- @param #AI_CAS self - - --- Delayed Event Trigger for RouteToHold - -- @function [parent=#AI_CAS] __RouteToHold - -- @param #AI_CAS self - -- @param #number Delay The delay in seconds. - - end -- AI_CAS - - do self:AddTransition( "RTH", "Hold", "Holding" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS. - - --- OnLeave State Transition for RTH. - -- @function [parent=#AI_CAS] OnLeaveRTH - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnEnter State Transition for Holding. - -- @function [parent=#AI_CAS] OnEnterHolding - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- OnBefore State Transition for Hold. - -- @function [parent=#AI_CAS] OnBeforeHold - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter State Transition for Hold. - -- @function [parent=#AI_CAS] OnAfterHold - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Embedded Event Trigger for Hold. - -- @function [parent=#AI_CAS] Hold - -- @param #AI_CAS self - - --- Delayed Event Trigger for Hold - -- @function [parent=#AI_CAS] __Hold - -- @param #AI_CAS self - -- @param #number Delay The delay in seconds. - - end -- AI_CAS - - do self:AddTransition( "Holding", "Engage", "Engaging" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS. + self.PatrolZone = PatrolZone + self.PatrolFloorAltitude = PatrolFloorAltitude + self.PatrolCeilingAltitude = PatrolCeilingAltitude + self.PatrolMinSpeed = PatrolMinSpeed + self.PatrolMaxSpeed = PatrolMaxSpeed + + self.EngageZone = EngageZone + + do self:AddTransition( { "Patrol", "Route", "Engaging" }, "Engage", "Engaging" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. --- OnLeave State Transition for Holding. - -- @function [parent=#AI_CAS] OnLeaveHolding - -- @param #AI_CAS self + -- @function [parent=#AI_CAS_ZONE] OnLeaveHolding + -- @param #AI_CAS_ZONE self -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param #string From The From State string. -- @param #string Event The Event string. @@ -252,16 +115,16 @@ function AI_CAS:New( Ct, TargetZone, TargetSet ) -- @return #boolean Return false to cancel Transition. --- OnEnter State Transition for Engaging. - -- @function [parent=#AI_CAS] OnEnterEngaging - -- @param #AI_CAS self + -- @function [parent=#AI_CAS_ZONE] OnEnterEngaging + -- @param #AI_CAS_ZONE self -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param #string From The From State string. -- @param #string Event The Event string. -- @param #string To The To State string. --- OnBefore State Transition for Engage. - -- @function [parent=#AI_CAS] OnBeforeEngage - -- @param #AI_CAS self + -- @function [parent=#AI_CAS_ZONE] OnBeforeEngage + -- @param #AI_CAS_ZONE self -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param #string From The From State string. -- @param #string Event The Event string. @@ -269,29 +132,30 @@ function AI_CAS:New( Ct, TargetZone, TargetSet ) -- @return #boolean Return false to cancel Transition. --- OnAfter State Transition for Engage. - -- @function [parent=#AI_CAS] OnAfterEngage - -- @param #AI_CAS self + -- @function [parent=#AI_CAS_ZONE] OnAfterEngage + -- @param #AI_CAS_ZONE self -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param #string From The From State string. -- @param #string Event The Event string. -- @param #string To The To State string. --- Embedded Event Trigger for Engage. - -- @function [parent=#AI_CAS] Engage - -- @param #AI_CAS self + -- @function [parent=#AI_CAS_ZONE] Engage + -- @param #AI_CAS_ZONE self --- Delayed Event Trigger for Engage - -- @function [parent=#AI_CAS] __Engage - -- @param #AI_CAS self + -- @function [parent=#AI_CAS_ZONE] __Engage + -- @param #AI_CAS_ZONE self -- @param #number Delay The delay in seconds. - end -- AI_CAS + end -- AI_CAS_ZONE - do self:AddTransition( "Engaging", "Fired", "Engaging" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS. + + do self:AddTransition( "Engaging", "Fired", "Engaging" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. --- OnLeave State Transition for Engaging. - -- @function [parent=#AI_CAS] OnLeaveEngaging - -- @param #AI_CAS self + -- @function [parent=#AI_CAS_ZONE] OnLeaveEngaging + -- @param #AI_CAS_ZONE self -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param #string From The From State string. -- @param #string Event The Event string. @@ -299,16 +163,16 @@ function AI_CAS:New( Ct, TargetZone, TargetSet ) -- @return #boolean Return false to cancel Transition. --- OnEnter State Transition for Engaging. - -- @function [parent=#AI_CAS] OnEnterEngaging - -- @param #AI_CAS self + -- @function [parent=#AI_CAS_ZONE] OnEnterEngaging + -- @param #AI_CAS_ZONE self -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param #string From The From State string. -- @param #string Event The Event string. -- @param #string To The To State string. --- OnBefore State Transition for Fired. - -- @function [parent=#AI_CAS] OnBeforeFired - -- @param #AI_CAS self + -- @function [parent=#AI_CAS_ZONE] OnBeforeFired + -- @param #AI_CAS_ZONE self -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param #string From The From State string. -- @param #string Event The Event string. @@ -316,8 +180,8 @@ function AI_CAS:New( Ct, TargetZone, TargetSet ) -- @return #boolean Return false to cancel Transition. --- OnAfter State Transition for Fired. - -- @function [parent=#AI_CAS] OnAfterFired - -- @param #AI_CAS self + -- @function [parent=#AI_CAS_ZONE] OnAfterFired + -- @param #AI_CAS_ZONE self -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param #string From The From State string. -- @param #string Event The Event string. @@ -325,21 +189,21 @@ function AI_CAS:New( Ct, TargetZone, TargetSet ) -- @return #boolean --- Embedded Event Trigger for Fired. - -- @function [parent=#AI_CAS] Fired - -- @param #AI_CAS self + -- @function [parent=#AI_CAS_ZONE] Fired + -- @param #AI_CAS_ZONE self --- Delayed Event Trigger for Fired - -- @function [parent=#AI_CAS] __Fired - -- @param #AI_CAS self + -- @function [parent=#AI_CAS_ZONE] __Fired + -- @param #AI_CAS_ZONE self -- @param #number Delay The delay in seconds. - end -- AI_CAS + end -- AI_CAS_ZONE - do self:AddTransition( "Engaging", "Destroy", "Engaging" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS. + do self:AddTransition( "Engaging", "Destroy", "Engaging" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. --- OnLeave State Transition for Engaging. - -- @function [parent=#AI_CAS] OnLeaveEngaging - -- @param #AI_CAS self + -- @function [parent=#AI_CAS_ZONE] OnLeaveEngaging + -- @param #AI_CAS_ZONE self -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param #string From The From State string. -- @param #string Event The Event string. @@ -347,16 +211,16 @@ function AI_CAS:New( Ct, TargetZone, TargetSet ) -- @return #boolean Return false to cancel Transition. --- OnEnter State Transition for Engaging. - -- @function [parent=#AI_CAS] OnEnterEngaging - -- @param #AI_CAS self + -- @function [parent=#AI_CAS_ZONE] OnEnterEngaging + -- @param #AI_CAS_ZONE self -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param #string From The From State string. -- @param #string Event The Event string. -- @param #string To The To State string. --- OnBefore State Transition for Destroy. - -- @function [parent=#AI_CAS] OnBeforeDestroy - -- @param #AI_CAS self + -- @function [parent=#AI_CAS_ZONE] OnBeforeDestroy + -- @param #AI_CAS_ZONE self -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param #string From The From State string. -- @param #string Event The Event string. @@ -364,221 +228,268 @@ function AI_CAS:New( Ct, TargetZone, TargetSet ) -- @return #boolean Return false to cancel Transition. --- OnAfter State Transition for Destroy. - -- @function [parent=#AI_CAS] OnAfterDestroy - -- @param #AI_CAS self + -- @function [parent=#AI_CAS_ZONE] OnAfterDestroy + -- @param #AI_CAS_ZONE self -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param #string From The From State string. -- @param #string Event The Event string. -- @param #string To The To State string. --- Embedded Event Trigger for Destroy. - -- @function [parent=#AI_CAS] Destroy - -- @param #AI_CAS self + -- @function [parent=#AI_CAS_ZONE] Destroy + -- @param #AI_CAS_ZONE self --- Delayed Event Trigger for Destroy - -- @function [parent=#AI_CAS] __Destroy - -- @param #AI_CAS self + -- @function [parent=#AI_CAS_ZONE] __Destroy + -- @param #AI_CAS_ZONE self -- @param #number Delay The delay in seconds. - end -- AI_CAS + end -- AI_CAS_ZONE - do self:AddTransition( "Engaging", "Abort", "Holding" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS. +do self:AddTransition( "Engaging", "Abort", "Patrol" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. - --- OnLeave State Transition for Engaging. - -- @function [parent=#AI_CAS] OnLeaveEngaging - -- @param #AI_CAS self + --- OnLeave State Transition for Engaging. + -- @function [parent=#AI_CAS_ZONE] OnLeaveEngaging + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Patrol. + -- @function [parent=#AI_CAS_ZONE] OnEnterPatrol + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Abort. + -- @function [parent=#AI_CAS_ZONE] OnBeforeAbort + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Abort. + -- @function [parent=#AI_CAS_ZONE] OnAfterAbort + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for Abort. + -- @function [parent=#AI_CAS_ZONE] Abort + -- @param #AI_CAS_ZONE self + + --- Delayed Event Trigger for Abort + -- @function [parent=#AI_CAS_ZONE] __Abort + -- @param #AI_CAS_ZONE self + -- @param #number Delay The delay in seconds. + +end -- AI_CAS_ZONE + + + do self:AddTransition( "Engaging", "Completed", "Patrol" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. + + --- OnLeave State Transition for Engaging. + -- @function [parent=#AI_CAS_ZONE] OnLeaveEngaging + -- @param #AI_CAS_ZONE self -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param #string From The From State string. -- @param #string Event The Event string. -- @param #string To The To State string. -- @return #boolean Return false to cancel Transition. - - --- OnEnter State Transition for Holding. - -- @function [parent=#AI_CAS] OnEnterHolding - -- @param #AI_CAS self + + --- OnEnter State Transition for Patrol. + -- @function [parent=#AI_CAS_ZONE] OnEnterPatrol + -- @param #AI_CAS_ZONE self -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param #string From The From State string. -- @param #string Event The Event string. -- @param #string To The To State string. - - --- OnBefore State Transition for Abort. - -- @function [parent=#AI_CAS] OnBeforeAbort - -- @param #AI_CAS self + + --- OnBefore State Transition for Completed. + -- @function [parent=#AI_CAS_ZONE] OnBeforeCompleted + -- @param #AI_CAS_ZONE self -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param #string From The From State string. -- @param #string Event The Event string. -- @param #string To The To State string. -- @return #boolean Return false to cancel Transition. - - --- OnAfter State Transition for Abort. - -- @function [parent=#AI_CAS] OnAfterAbort - -- @param #AI_CAS self + + --- OnAfter State Transition for Completed. + -- @function [parent=#AI_CAS_ZONE] OnAfterCompleted + -- @param #AI_CAS_ZONE self -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param #string From The From State string. -- @param #string Event The Event string. -- @param #string To The To State string. - - --- Embedded Event Trigger for Abort. - -- @function [parent=#AI_CAS] Abort - -- @param #AI_CAS self - - --- Delayed Event Trigger for Abort - -- @function [parent=#AI_CAS] __Abort - -- @param #AI_CAS self + + --- Embedded Event Trigger for Completed. + -- @function [parent=#AI_CAS_ZONE] Completed + -- @param #AI_CAS_ZONE self + + --- Delayed Event Trigger for Completed + -- @function [parent=#AI_CAS_ZONE] __Completed + -- @param #AI_CAS_ZONE self -- @param #number Delay The delay in seconds. - - end -- AI_CAS - - - do self:AddTransition( "Engaging", "Completed", "Holding" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS. - - --- OnLeave State Transition for Engaging. - -- @function [parent=#AI_CAS] OnLeaveEngaging - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnEnter State Transition for Holding. - -- @function [parent=#AI_CAS] OnEnterHolding - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- OnBefore State Transition for Completed. - -- @function [parent=#AI_CAS] OnBeforeCompleted - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter State Transition for Completed. - -- @function [parent=#AI_CAS] OnAfterCompleted - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Embedded Event Trigger for Completed. - -- @function [parent=#AI_CAS] Completed - -- @param #AI_CAS self - - --- Delayed Event Trigger for Completed - -- @function [parent=#AI_CAS] __Completed - -- @param #AI_CAS self - -- @param #number Delay The delay in seconds. - - end -- AI_CAS - - - do self:AddTransition( "Holding", "RTH", "RTB" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS. - - --- OnLeave State Transition for Holding. - -- @function [parent=#AI_CAS] OnLeaveHolding - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnEnter State Transition for RTB. - -- @function [parent=#AI_CAS] OnEnterRTB - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- OnBefore State Transition for RTH. - -- @function [parent=#AI_CAS] OnBeforeRTH - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter State Transition for RTH. - -- @function [parent=#AI_CAS] OnAfterRTH - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Embedded Event Trigger for RTH. - -- @function [parent=#AI_CAS] RTH - -- @param #AI_CAS self - - --- Delayed Event Trigger for RTH - -- @function [parent=#AI_CAS] __RTH - -- @param #AI_CAS self - -- @param #number Delay The delay in seconds. - - end -- AI_CAS - - - do self:AddTransition( "*", "Dead", "Dead" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS. - - --- OnLeave State Transition for *. - -- @function [parent=#AI_CAS] OnLeave - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnEnter State Transition for Dead. - -- @function [parent=#AI_CAS] OnEnterDead - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- OnBefore State Transition for Dead. - -- @function [parent=#AI_CAS] OnBeforeDead - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - -- @return #boolean Return false to cancel Transition. - - --- OnAfter State Transition for Dead. - -- @function [parent=#AI_CAS] OnAfterDead - -- @param #AI_CAS self - -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. - -- @param #string From The From State string. - -- @param #string Event The Event string. - -- @param #string To The To State string. - - --- Embedded Event Trigger for Dead. - -- @function [parent=#AI_CAS] Dead - -- @param #AI_CAS self - - --- Delayed Event Trigger for Dead - -- @function [parent=#AI_CAS] __Dead - -- @param #AI_CAS self - -- @param #number Delay The delay in seconds. - - end -- AI_CAS - - - - self.TargetZone = TargetZone - self.TargetSet = TargetSet - + + end -- AI_CAS_ZONE return self end + +--- onafter State Transition for Event Start. +-- @param #AI_CAS_ZONE self +-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +function AI_CAS_ZONE:onafterStart( Controllable, From, Event, To ) + + + if Controllable:IsAlive() then + self:__Route( 1 ) + end + + self:EventOnDead( self.OnDead ) + + Controllable:OptionROEHoldFire() + Controllable:OptionROTVertical() + +end + +--- @param Wrapper.Controllable#CONTROLLABLE AIControllable +function _NewEngageRoute( AIControllable ) + + AIControllable:T( "NewEngageRoute" ) + local EngageZone = AIControllable:GetState( AIControllable, "EngageZone" ) -- AI.AI_Patrol#AI_PATROLZONE + EngageZone:__Engage( 1 ) +end + + +--- @param #AI_CAS_ZONE self +-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +function AI_CAS_ZONE:onafterEngage( Controllable, From, Event, To ) + + if Controllable:IsAlive() then + + local EngageRoute = {} + + if self.Controllable:IsNotInZone( self.EngageZone ) then + + -- Find a random 2D point in EngageZone. + local ToEngageZoneVec2 = self.EngageZone:GetRandomVec2() + self:T2( ToEngageZoneVec2 ) + + -- Define Speed and Altitude. + local ToEngageZoneAltitude = math.random( self.EngageFloorAltitude, self.EngageCeilingAltitude ) + local ToEngageZoneSpeed = self.PatrolMaxSpeed + self:T2( ToEngageZoneSpeed ) + + -- Obtain a 3D @{Point} from the 2D point + altitude. + local ToEngageZonePointVec3 = POINT_VEC3:New( ToEngageZoneVec2.x, ToEngageZoneAltitude, ToEngageZoneVec2.y ) + + -- Create a route point of type air. + local ToEngageZoneRoutePoint = ToEngageZonePointVec3:RoutePointAir( + POINT_VEC3.RoutePointAltType.BARO, + POINT_VEC3.RoutePointType.TurningPoint, + POINT_VEC3.RoutePointAction.TurningPoint, + ToEngageZoneSpeed, + true + ) + + EngageRoute[#EngageRoute+1] = ToEngageZoneRoutePoint + + end + + --- Define a random point in the @{Zone}. The AI will fly to that point within the zone. + + --- Find a random 2D point in EngageZone. + local ToTargetVec2 = self.EngageZone:GetRandomVec2() + self:T2( ToTargetVec2 ) + + --- Define Speed and Altitude. + local ToTargetAltitude = math.random( self.EngageFloorAltitude, self.EngageCeilingAltitude ) + local ToTargetSpeed = math.random( self.PatrolMinSpeed, self.PatrolMaxSpeed ) + self:T2( { self.PatrolMinSpeed, self.PatrolMaxSpeed, ToTargetSpeed } ) + + --- Obtain a 3D @{Point} from the 2D point + altitude. + local ToTargetPointVec3 = POINT_VEC3:New( ToTargetVec2.x, ToTargetAltitude, ToTargetVec2.y ) + + --- Create a route point of type air. + local ToTargetRoutePoint = ToTargetPointVec3:RoutePointAir( + POINT_VEC3.RoutePointAltType.BARO, + POINT_VEC3.RoutePointType.TurningPoint, + POINT_VEC3.RoutePointAction.TurningPoint, + ToTargetSpeed, + true + ) + + ToTargetPointVec3:SmokeRed() + + EngageRoute[#EngageRoute+1] = ToTargetRoutePoint + + --- Now we're going to do something special, we're going to call a function from a waypoint action at the AIControllable... + self.Controllable:WayPointInitialize( EngageRoute ) + + --- Do a trick, link the NewEngageRoute function of the PATROLGROUP object to the AIControllable in a temporary variable ... + self.Controllable:SetState( self.Controllable, "EngageZone", self ) + self.Controllable:WayPointFunction( #EngageRoute, 1, "_NewEngageRoute" ) + + --- NOW ROUTE THE GROUP! + self.Controllable:WayPointExecute( 1, 5 ) + + local DetectedTargets = Controllable:GetDetectedTargets() + for TargetID, Target in pairs( DetectedTargets ) do + local TargetObject = Target.object + self:T( TargetObject ) + if TargetObject and TargetObject:isExist() and TargetObject.id_ < 50000000 then + + local TargetUnit = UNIT:Find( TargetObject ) + local TargetUnitName = TargetUnit:GetName() + + if TargetUnit:IsInZone( self.EngageZone ) then + --local EngageTask = Controllable:EnRouteTaskEngageUnit( TargetUnit, 1 ) + local EngageTask = Controllable:TaskAttackUnit( TargetUnit ) + Controllable:PushTask( EngageTask, 1 ) + end + end + end + + Controllable:OptionROEWeaponFree() + Controllable:OptionROTPassiveDefense() + + end +end + +--- @param #AI_CAS_ZONE self +-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +function AI_CAS_ZONE:onafterDestroy( Controllable, From, Event, To ) + + Controllable:MessageToAll( "Destroyed a target", 15 , "Destroyed!" ) +end + +--- @param #AI_CAS_ZONE self +-- @param Core.Event#EVENTDATA EventData +function AI_CAS_ZONE:OnDead( EventData ) + self:T( { "EventDead", EventData } ) + + if EventData.IniDCSUnit then + self:__Destroy( 1, EventData ) + end +end + + diff --git a/Moose Development/Moose/AI/AI_Patrol.lua b/Moose Development/Moose/AI/AI_Patrol.lua index cd517e450..ed76c1fc8 100644 --- a/Moose Development/Moose/AI/AI_Patrol.lua +++ b/Moose Development/Moose/AI/AI_Patrol.lua @@ -130,22 +130,7 @@ -- * **FlightControl**: Design & Programming. -- -- --- @module Patrol - --- State Transition Functions - ---- OnBefore State Transition Function --- @function [parent=#AI_PATROLZONE] OnBeforeRoute --- @param #AI_PATROLZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable --- @return #boolean - ---- OnAfter State Transition Function --- @function [parent=#AI_PATROLZONE] OnAfterRoute --- @param #AI_PATROLZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable - - +-- @module AI_Patrol --- AI_PATROLZONE class -- @type AI_PATROLZONE @@ -180,20 +165,206 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu -- Inherits from BASE local self = BASE:Inherit( self, FSM_CONTROLLABLE:New() ) -- Core.Fsm#FSM_CONTROLLABLE - self:SetStartState( "None" ) - self:AddTransition( "*", "Start", "Route" ) - self:AddTransition( "*", "Route", "Route" ) - self:AddTransition( { "Patrol", "Route" }, "Patrol", "Patrol" ) - self:AddTransition( "Patrol", "RTB", "RTB" ) - self:AddTransition( "*", "End", "End" ) - self:AddTransition( "*", "Dead", "End" ) - self.PatrolZone = PatrolZone + self.PatrolZone = PatrolZone self.PatrolFloorAltitude = PatrolFloorAltitude self.PatrolCeilingAltitude = PatrolCeilingAltitude self.PatrolMinSpeed = PatrolMinSpeed self.PatrolMaxSpeed = PatrolMaxSpeed + + self.PatrolFuelTresholdPercentage = 0.2 + + self:SetStartState( "Route" ) + +do self:AddTransition( "Route", "Start", "Route" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. + + --- OnLeave State Transition for Route. + -- @function [parent=#AI_PATROLZONE] OnLeaveRoute + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Route. + -- @function [parent=#AI_PATROLZONE] OnEnterRoute + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Start. + -- @function [parent=#AI_PATROLZONE] OnBeforeStart + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Start. + -- @function [parent=#AI_PATROLZONE] OnAfterStart + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for Start. + -- @function [parent=#AI_PATROLZONE] Start + -- @param #AI_PATROLZONE self + + --- Delayed Event Trigger for Start + -- @function [parent=#AI_PATROLZONE] __Start + -- @param #AI_PATROLZONE self + -- @param #number Delay The delay in seconds. + +end -- AI_PATROLZONE + +do self:AddTransition( "Route", "Route", "Route" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. + + --- OnLeave State Transition for Route. + -- @function [parent=#AI_PATROLZONE] OnLeaveRoute + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Route. + -- @function [parent=#AI_PATROLZONE] OnEnterRoute + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Route. + -- @function [parent=#AI_PATROLZONE] OnBeforeRoute + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Route. + -- @function [parent=#AI_PATROLZONE] OnAfterRoute + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for Route. + -- @function [parent=#AI_PATROLZONE] Route + -- @param #AI_PATROLZONE self + + --- Delayed Event Trigger for Route + -- @function [parent=#AI_PATROLZONE] __Route + -- @param #AI_PATROLZONE self + -- @param #number Delay The delay in seconds. + +end -- AI_PATROLZONE + +do self:AddTransition( { "Patrol", "Route" }, "Patrol", "Patrol" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. + + --- OnLeave State Transition for Patrol. + -- @function [parent=#AI_PATROLZONE] OnLeavePatrol + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Patrol. + -- @function [parent=#AI_PATROLZONE] OnEnterPatrol + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Patrol. + -- @function [parent=#AI_PATROLZONE] OnBeforePatrol + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Patrol. + -- @function [parent=#AI_PATROLZONE] OnAfterPatrol + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for Patrol. + -- @function [parent=#AI_PATROLZONE] Patrol + -- @param #AI_PATROLZONE self + + --- Delayed Event Trigger for Patrol + -- @function [parent=#AI_PATROLZONE] __Patrol + -- @param #AI_PATROLZONE self + -- @param #number Delay The delay in seconds. + +end -- AI_PATROLZONE + +do self:AddTransition( "Patrol", "RTB", "RTB" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. + + --- OnLeave State Transition for Patrol. + -- @function [parent=#AI_PATROLZONE] OnLeavePatrol + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for RTB. + -- @function [parent=#AI_PATROLZONE] OnEnterRTB + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for RTB. + -- @function [parent=#AI_PATROLZONE] OnBeforeRTB + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for RTB. + -- @function [parent=#AI_PATROLZONE] OnAfterRTB + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for RTB. + -- @function [parent=#AI_PATROLZONE] RTB + -- @param #AI_PATROLZONE self + + --- Delayed Event Trigger for RTB + -- @function [parent=#AI_PATROLZONE] __RTB + -- @param #AI_PATROLZONE self + -- @param #number Delay The delay in seconds. + +end -- AI_PATROLZONE + return self end diff --git a/Moose Development/Moose/Moose.lua b/Moose Development/Moose/Moose.lua index 32b309b3b..710bc0da7 100644 --- a/Moose Development/Moose/Moose.lua +++ b/Moose Development/Moose/Moose.lua @@ -43,6 +43,7 @@ Include.File( "Functional/Detection" ) Include.File( "AI/AI_Balancer" ) Include.File( "AI/AI_Patrol" ) Include.File( "AI/AI_Cargo" ) +Include.File( "AI/AI_Cas" ) --- Actions Include.File( "Actions/Act_Assign" ) diff --git a/Moose Development/Moose/Wrapper/Controllable.lua b/Moose Development/Moose/Wrapper/Controllable.lua index 3a39ef887..1ba317318 100644 --- a/Moose Development/Moose/Wrapper/Controllable.lua +++ b/Moose Development/Moose/Wrapper/Controllable.lua @@ -126,6 +126,7 @@ --- The CONTROLLABLE class -- @type CONTROLLABLE +-- @extends Wrapper.Positionable#POSITIONABLE -- @field Dcs.DCSWrapper.Controllable#Controllable DCSControllable The DCS controllable class. -- @field #string ControllableName The name of the controllable. CONTROLLABLE = { diff --git a/Moose Development/Moose/Wrapper/Identifiable.lua b/Moose Development/Moose/Wrapper/Identifiable.lua index 19b0d6c14..c11b5cee7 100644 --- a/Moose Development/Moose/Wrapper/Identifiable.lua +++ b/Moose Development/Moose/Wrapper/Identifiable.lua @@ -28,7 +28,7 @@ -- -- === -- --- @module Wrapper.Identifiable +-- @module Identifiable --- The IDENTIFIABLE class -- @type IDENTIFIABLE diff --git a/Moose Development/Moose/Wrapper/Object.lua b/Moose Development/Moose/Wrapper/Object.lua index 1215e004f..14650e584 100644 --- a/Moose Development/Moose/Wrapper/Object.lua +++ b/Moose Development/Moose/Wrapper/Object.lua @@ -22,7 +22,7 @@ -- -- === -- --- @module Wrapper.Object +-- @module Object --- The OBJECT class -- @type OBJECT diff --git a/Moose Development/Moose/Wrapper/Positionable.lua b/Moose Development/Moose/Wrapper/Positionable.lua index d9219fcf5..696f64c10 100644 --- a/Moose Development/Moose/Wrapper/Positionable.lua +++ b/Moose Development/Moose/Wrapper/Positionable.lua @@ -23,7 +23,7 @@ -- -- === -- --- @module Wrapper.Positionable +-- @module Positionable --- The POSITIONABLE class -- @type POSITIONABLE diff --git a/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua b/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua index 07060d824..20365da69 100644 --- a/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua +++ b/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua @@ -1,5 +1,5 @@ env.info( '*** MOOSE STATIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20170112_1219' ) +env.info( 'Moose Generation Timestamp: 20170113_1404' ) local base = _G Include = {} @@ -11769,7 +11769,6 @@ end -- FSM_SET -- === -- -- @module Object --- @author FlightControl --- The OBJECT class -- @type OBJECT @@ -11864,7 +11863,6 @@ end -- === -- -- @module Identifiable --- @author FlightControl --- The IDENTIFIABLE class -- @type IDENTIFIABLE @@ -12086,7 +12084,6 @@ end -- === -- -- @module Positionable --- @author FlightControl --- The POSITIONABLE class -- @type POSITIONABLE @@ -12608,7 +12605,6 @@ end -- === -- -- @module Controllable --- @author FlightControl --- The CONTROLLABLE class -- @type CONTROLLABLE @@ -24644,22 +24640,7 @@ end -- * **FlightControl**: Design & Programming. -- -- --- @module Patrol - --- State Transition Functions - ---- OnBefore State Transition Function --- @function [parent=#AI_PATROLZONE] OnBeforeRoute --- @param #AI_PATROLZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable --- @return #boolean - ---- OnAfter State Transition Function --- @function [parent=#AI_PATROLZONE] OnAfterRoute --- @param #AI_PATROLZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable - - +-- @module AI_Patrol --- AI_PATROLZONE class -- @type AI_PATROLZONE @@ -24694,20 +24675,206 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu -- Inherits from BASE local self = BASE:Inherit( self, FSM_CONTROLLABLE:New() ) -- Core.Fsm#FSM_CONTROLLABLE - self:SetStartState( "None" ) - self:AddTransition( "*", "Start", "Route" ) - self:AddTransition( "*", "Route", "Route" ) - self:AddTransition( { "Patrol", "Route" }, "Patrol", "Patrol" ) - self:AddTransition( "Patrol", "RTB", "RTB" ) - self:AddTransition( "*", "End", "End" ) - self:AddTransition( "*", "Dead", "End" ) - self.PatrolZone = PatrolZone + self.PatrolZone = PatrolZone self.PatrolFloorAltitude = PatrolFloorAltitude self.PatrolCeilingAltitude = PatrolCeilingAltitude self.PatrolMinSpeed = PatrolMinSpeed self.PatrolMaxSpeed = PatrolMaxSpeed + + self.PatrolFuelTresholdPercentage = 0.2 + + self:SetStartState( "Route" ) + +do self:AddTransition( "Route", "Start", "Route" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. + + --- OnLeave State Transition for Route. + -- @function [parent=#AI_PATROLZONE] OnLeaveRoute + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Route. + -- @function [parent=#AI_PATROLZONE] OnEnterRoute + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Start. + -- @function [parent=#AI_PATROLZONE] OnBeforeStart + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Start. + -- @function [parent=#AI_PATROLZONE] OnAfterStart + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for Start. + -- @function [parent=#AI_PATROLZONE] Start + -- @param #AI_PATROLZONE self + + --- Delayed Event Trigger for Start + -- @function [parent=#AI_PATROLZONE] __Start + -- @param #AI_PATROLZONE self + -- @param #number Delay The delay in seconds. + +end -- AI_PATROLZONE + +do self:AddTransition( "Route", "Route", "Route" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. + + --- OnLeave State Transition for Route. + -- @function [parent=#AI_PATROLZONE] OnLeaveRoute + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Route. + -- @function [parent=#AI_PATROLZONE] OnEnterRoute + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Route. + -- @function [parent=#AI_PATROLZONE] OnBeforeRoute + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Route. + -- @function [parent=#AI_PATROLZONE] OnAfterRoute + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for Route. + -- @function [parent=#AI_PATROLZONE] Route + -- @param #AI_PATROLZONE self + + --- Delayed Event Trigger for Route + -- @function [parent=#AI_PATROLZONE] __Route + -- @param #AI_PATROLZONE self + -- @param #number Delay The delay in seconds. + +end -- AI_PATROLZONE + +do self:AddTransition( { "Patrol", "Route" }, "Patrol", "Patrol" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. + + --- OnLeave State Transition for Patrol. + -- @function [parent=#AI_PATROLZONE] OnLeavePatrol + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Patrol. + -- @function [parent=#AI_PATROLZONE] OnEnterPatrol + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Patrol. + -- @function [parent=#AI_PATROLZONE] OnBeforePatrol + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Patrol. + -- @function [parent=#AI_PATROLZONE] OnAfterPatrol + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for Patrol. + -- @function [parent=#AI_PATROLZONE] Patrol + -- @param #AI_PATROLZONE self + + --- Delayed Event Trigger for Patrol + -- @function [parent=#AI_PATROLZONE] __Patrol + -- @param #AI_PATROLZONE self + -- @param #number Delay The delay in seconds. + +end -- AI_PATROLZONE + +do self:AddTransition( "Patrol", "RTB", "RTB" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. + + --- OnLeave State Transition for Patrol. + -- @function [parent=#AI_PATROLZONE] OnLeavePatrol + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for RTB. + -- @function [parent=#AI_PATROLZONE] OnEnterRTB + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for RTB. + -- @function [parent=#AI_PATROLZONE] OnBeforeRTB + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for RTB. + -- @function [parent=#AI_PATROLZONE] OnAfterRTB + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for RTB. + -- @function [parent=#AI_PATROLZONE] RTB + -- @param #AI_PATROLZONE self + + --- Delayed Event Trigger for RTB + -- @function [parent=#AI_PATROLZONE] __RTB + -- @param #AI_PATROLZONE self + -- @param #number Delay The delay in seconds. + +end -- AI_PATROLZONE + return self end @@ -25915,6 +26082,501 @@ end -- AI_CARGO_GROUPED +--- SP:Y MP:Y AI:Y HU:N TYP:Air -- This module contains the AI_CAS_ZONE class. +-- +-- === +-- +-- 1) @{#AI_CAS_ZONE} class, extends @{Core.Fsm#FSM_CONTROLLABLE} +-- ================================================================ +-- The @{#AI_CAS_ZONE} class implements the core functions to CAS a @{Zone} by an AIR @{Controllable} @{Group}. +-- +-- 1.1) AI_CAS_ZONE constructor: +-- ---------------------------- +-- +-- * @{#AI_CAS_ZONE.New}(): Creates a new AI_CAS_ZONE object. +-- +-- 1.2) AI_CAS_ZONE state machine: +-- ---------------------------------- +-- The AI_CAS_ZONE is a state machine: it manages the different events and states of the AIControllable it is controlling. +-- +-- ### 1.2.1) AI_CAS_ZONE Events: +-- +-- * @{#AI_CAS_ZONE.TakeOff}( AIControllable ): The AI is taking-off from an airfield. +-- * @{#AI_CAS_ZONE.Hold}( AIControllable ): The AI is holding in airspace at a zone. +-- * @{#AI_CAS_ZONE.Engage}( AIControllable ): The AI is engaging the targets. +-- * @{#AI_CAS_ZONE.WeaponReleased}( AIControllable ): The AI has released a weapon to the target. +-- * @{#AI_CAS_ZONE.Destroy}( AIControllable ): The AI has destroyed a target. +-- * @{#AI_CAS_ZONE.Complete}( AIControllable ): The AI has destroyed all defined targets. +-- * @{#AI_CAS_ZONE.RTB}( AIControllable ): The AI is returning to the home base. +-- +-- ### 1.2.2) AI_CAS_ZONE States: +-- +-- +-- ### 1.2.3) AI_CAS_ZONE state transition methods: +-- +-- +-- 1.3) Manage the AI_CAS_ZONE parameters: +-- ------------------------------------------ +-- The following methods are available to modify the parameters of an AI_CAS_ZONE object: +-- +-- * @{#AI_CAS_ZONE.SetControllable}(): Set the AIControllable. +-- * @{#AI_CAS_ZONE.GetControllable}(): Get the AIControllable. +-- +-- ==== +-- +-- **API CHANGE HISTORY** +-- ====================== +-- +-- The underlying change log documents the API changes. Please read this carefully. The following notation is used: +-- +-- * **Added** parts are expressed in bold type face. +-- * _Removed_ parts are expressed in italic type face. +-- +-- Hereby the change log: +-- +-- 2017-01-12: Initial class and API. +-- +-- === +-- +-- AUTHORS and CONTRIBUTIONS +-- ========================= +-- +-- ### Contributions: +-- +-- * **Quax**: Concept & Testing. +-- * **Pikey**: Concept & Testing. +-- +-- ### Authors: +-- +-- * **FlightControl**: Concept, Design & Programming. +-- +-- +-- @module Cas + + +--- AI_CAS_ZONE class +-- @type AI_CAS_ZONE +-- @field Wrapper.Controllable#CONTROLLABLE AIControllable The @{Controllable} patrolling. +-- @field Core.Zone#ZONE_BASE TargetZone The @{Zone} where the patrol needs to be executed. +-- @extends AI.AI_Patrol#AI_PATROLZONE +AI_CAS_ZONE = { + ClassName = "AI_CAS_ZONE", +} + + + +--- Creates a new AI_CAS_ZONE object +-- @param #AI_CAS_ZONE self +-- @param Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed. +-- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. +-- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. +-- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h. +-- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h. +-- @param Core.Zone#ZONE EngageZone +-- @return #AI_CAS_ZONE self +function AI_CAS_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, EngageZone ) + + -- Inherits from BASE + local self = BASE:Inherit( self, AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed ) ) -- #AI_CAS_ZONE + + self.PatrolZone = PatrolZone + self.PatrolFloorAltitude = PatrolFloorAltitude + self.PatrolCeilingAltitude = PatrolCeilingAltitude + self.PatrolMinSpeed = PatrolMinSpeed + self.PatrolMaxSpeed = PatrolMaxSpeed + + self.EngageZone = EngageZone + + do self:AddTransition( { "Patrol", "Route", "Engaging" }, "Engage", "Engaging" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. + + --- OnLeave State Transition for Holding. + -- @function [parent=#AI_CAS_ZONE] OnLeaveHolding + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Engaging. + -- @function [parent=#AI_CAS_ZONE] OnEnterEngaging + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Engage. + -- @function [parent=#AI_CAS_ZONE] OnBeforeEngage + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Engage. + -- @function [parent=#AI_CAS_ZONE] OnAfterEngage + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for Engage. + -- @function [parent=#AI_CAS_ZONE] Engage + -- @param #AI_CAS_ZONE self + + --- Delayed Event Trigger for Engage + -- @function [parent=#AI_CAS_ZONE] __Engage + -- @param #AI_CAS_ZONE self + -- @param #number Delay The delay in seconds. + + end -- AI_CAS_ZONE + + + do self:AddTransition( "Engaging", "Fired", "Engaging" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. + + --- OnLeave State Transition for Engaging. + -- @function [parent=#AI_CAS_ZONE] OnLeaveEngaging + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Engaging. + -- @function [parent=#AI_CAS_ZONE] OnEnterEngaging + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Fired. + -- @function [parent=#AI_CAS_ZONE] OnBeforeFired + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Fired. + -- @function [parent=#AI_CAS_ZONE] OnAfterFired + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean + + --- Embedded Event Trigger for Fired. + -- @function [parent=#AI_CAS_ZONE] Fired + -- @param #AI_CAS_ZONE self + + --- Delayed Event Trigger for Fired + -- @function [parent=#AI_CAS_ZONE] __Fired + -- @param #AI_CAS_ZONE self + -- @param #number Delay The delay in seconds. + + end -- AI_CAS_ZONE + + do self:AddTransition( "Engaging", "Destroy", "Engaging" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. + + --- OnLeave State Transition for Engaging. + -- @function [parent=#AI_CAS_ZONE] OnLeaveEngaging + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Engaging. + -- @function [parent=#AI_CAS_ZONE] OnEnterEngaging + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Destroy. + -- @function [parent=#AI_CAS_ZONE] OnBeforeDestroy + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Destroy. + -- @function [parent=#AI_CAS_ZONE] OnAfterDestroy + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for Destroy. + -- @function [parent=#AI_CAS_ZONE] Destroy + -- @param #AI_CAS_ZONE self + + --- Delayed Event Trigger for Destroy + -- @function [parent=#AI_CAS_ZONE] __Destroy + -- @param #AI_CAS_ZONE self + -- @param #number Delay The delay in seconds. + + end -- AI_CAS_ZONE + +do self:AddTransition( "Engaging", "Abort", "Patrol" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. + + --- OnLeave State Transition for Engaging. + -- @function [parent=#AI_CAS_ZONE] OnLeaveEngaging + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Patrol. + -- @function [parent=#AI_CAS_ZONE] OnEnterPatrol + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Abort. + -- @function [parent=#AI_CAS_ZONE] OnBeforeAbort + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Abort. + -- @function [parent=#AI_CAS_ZONE] OnAfterAbort + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for Abort. + -- @function [parent=#AI_CAS_ZONE] Abort + -- @param #AI_CAS_ZONE self + + --- Delayed Event Trigger for Abort + -- @function [parent=#AI_CAS_ZONE] __Abort + -- @param #AI_CAS_ZONE self + -- @param #number Delay The delay in seconds. + +end -- AI_CAS_ZONE + + + do self:AddTransition( "Engaging", "Completed", "Patrol" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. + + --- OnLeave State Transition for Engaging. + -- @function [parent=#AI_CAS_ZONE] OnLeaveEngaging + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Patrol. + -- @function [parent=#AI_CAS_ZONE] OnEnterPatrol + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Completed. + -- @function [parent=#AI_CAS_ZONE] OnBeforeCompleted + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Completed. + -- @function [parent=#AI_CAS_ZONE] OnAfterCompleted + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for Completed. + -- @function [parent=#AI_CAS_ZONE] Completed + -- @param #AI_CAS_ZONE self + + --- Delayed Event Trigger for Completed + -- @function [parent=#AI_CAS_ZONE] __Completed + -- @param #AI_CAS_ZONE self + -- @param #number Delay The delay in seconds. + + end -- AI_CAS_ZONE + + return self +end + + +--- onafter State Transition for Event Start. +-- @param #AI_CAS_ZONE self +-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +function AI_CAS_ZONE:onafterStart( Controllable, From, Event, To ) + + + if Controllable:IsAlive() then + self:__Route( 1 ) + end + + self:EventOnDead( self.OnDead ) + + Controllable:OptionROEHoldFire() + Controllable:OptionROTVertical() + +end + +--- @param Wrapper.Controllable#CONTROLLABLE AIControllable +function _NewEngageRoute( AIControllable ) + + AIControllable:T( "NewEngageRoute" ) + local EngageZone = AIControllable:GetState( AIControllable, "EngageZone" ) -- AI.AI_Patrol#AI_PATROLZONE + EngageZone:__Engage( 1 ) +end + + +--- @param #AI_CAS_ZONE self +-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +function AI_CAS_ZONE:onafterEngage( Controllable, From, Event, To ) + + if Controllable:IsAlive() then + + local EngageRoute = {} + + if self.Controllable:IsNotInZone( self.EngageZone ) then + + -- Find a random 2D point in EngageZone. + local ToEngageZoneVec2 = self.EngageZone:GetRandomVec2() + self:T2( ToEngageZoneVec2 ) + + -- Define Speed and Altitude. + local ToEngageZoneAltitude = math.random( self.EngageFloorAltitude, self.EngageCeilingAltitude ) + local ToEngageZoneSpeed = self.PatrolMaxSpeed + self:T2( ToEngageZoneSpeed ) + + -- Obtain a 3D @{Point} from the 2D point + altitude. + local ToEngageZonePointVec3 = POINT_VEC3:New( ToEngageZoneVec2.x, ToEngageZoneAltitude, ToEngageZoneVec2.y ) + + -- Create a route point of type air. + local ToEngageZoneRoutePoint = ToEngageZonePointVec3:RoutePointAir( + POINT_VEC3.RoutePointAltType.BARO, + POINT_VEC3.RoutePointType.TurningPoint, + POINT_VEC3.RoutePointAction.TurningPoint, + ToEngageZoneSpeed, + true + ) + + EngageRoute[#EngageRoute+1] = ToEngageZoneRoutePoint + + end + + --- Define a random point in the @{Zone}. The AI will fly to that point within the zone. + + --- Find a random 2D point in EngageZone. + local ToTargetVec2 = self.EngageZone:GetRandomVec2() + self:T2( ToTargetVec2 ) + + --- Define Speed and Altitude. + local ToTargetAltitude = math.random( self.EngageFloorAltitude, self.EngageCeilingAltitude ) + local ToTargetSpeed = math.random( self.PatrolMinSpeed, self.PatrolMaxSpeed ) + self:T2( { self.PatrolMinSpeed, self.PatrolMaxSpeed, ToTargetSpeed } ) + + --- Obtain a 3D @{Point} from the 2D point + altitude. + local ToTargetPointVec3 = POINT_VEC3:New( ToTargetVec2.x, ToTargetAltitude, ToTargetVec2.y ) + + --- Create a route point of type air. + local ToTargetRoutePoint = ToTargetPointVec3:RoutePointAir( + POINT_VEC3.RoutePointAltType.BARO, + POINT_VEC3.RoutePointType.TurningPoint, + POINT_VEC3.RoutePointAction.TurningPoint, + ToTargetSpeed, + true + ) + + ToTargetPointVec3:SmokeRed() + + EngageRoute[#EngageRoute+1] = ToTargetRoutePoint + + --- Now we're going to do something special, we're going to call a function from a waypoint action at the AIControllable... + self.Controllable:WayPointInitialize( EngageRoute ) + + --- Do a trick, link the NewEngageRoute function of the PATROLGROUP object to the AIControllable in a temporary variable ... + self.Controllable:SetState( self.Controllable, "EngageZone", self ) + self.Controllable:WayPointFunction( #EngageRoute, 1, "_NewEngageRoute" ) + + --- NOW ROUTE THE GROUP! + self.Controllable:WayPointExecute( 1, 5 ) + + local DetectedTargets = Controllable:GetDetectedTargets() + for TargetID, Target in pairs( DetectedTargets ) do + local TargetObject = Target.object + self:T( TargetObject ) + if TargetObject and TargetObject:isExist() and TargetObject.id_ < 50000000 then + + local TargetUnit = UNIT:Find( TargetObject ) + local TargetUnitName = TargetUnit:GetName() + + if TargetUnit:IsInZone( self.EngageZone ) then + --local EngageTask = Controllable:EnRouteTaskEngageUnit( TargetUnit, 1 ) + local EngageTask = Controllable:TaskAttackUnit( TargetUnit ) + Controllable:PushTask( EngageTask, 1 ) + end + end + end + + Controllable:OptionROEWeaponFree() + Controllable:OptionROTPassiveDefense() + + end +end + +--- @param #AI_CAS_ZONE self +-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +function AI_CAS_ZONE:onafterDestroy( Controllable, From, Event, To ) + + Controllable:MessageToAll( "Destroyed a target", 15 , "Destroyed!" ) +end + +--- @param #AI_CAS_ZONE self +-- @param Core.Event#EVENTDATA EventData +function AI_CAS_ZONE:OnDead( EventData ) + self:T( { "EventDead", EventData } ) + + if EventData.IniDCSUnit then + self:__Destroy( 1, EventData ) + end +end + + --- (SP) (MP) (FSM) Accept or reject process for player (task) assignments. -- -- === @@ -29882,6 +30544,7 @@ Include.File( "Functional/Detection" ) Include.File( "AI/AI_Balancer" ) Include.File( "AI/AI_Patrol" ) Include.File( "AI/AI_Cargo" ) +Include.File( "AI/AI_Cas" ) --- Actions Include.File( "Actions/Act_Assign" ) diff --git a/Moose Mission Setup/Moose.lua b/Moose Mission Setup/Moose.lua index 07060d824..20365da69 100644 --- a/Moose Mission Setup/Moose.lua +++ b/Moose Mission Setup/Moose.lua @@ -1,5 +1,5 @@ env.info( '*** MOOSE STATIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20170112_1219' ) +env.info( 'Moose Generation Timestamp: 20170113_1404' ) local base = _G Include = {} @@ -11769,7 +11769,6 @@ end -- FSM_SET -- === -- -- @module Object --- @author FlightControl --- The OBJECT class -- @type OBJECT @@ -11864,7 +11863,6 @@ end -- === -- -- @module Identifiable --- @author FlightControl --- The IDENTIFIABLE class -- @type IDENTIFIABLE @@ -12086,7 +12084,6 @@ end -- === -- -- @module Positionable --- @author FlightControl --- The POSITIONABLE class -- @type POSITIONABLE @@ -12608,7 +12605,6 @@ end -- === -- -- @module Controllable --- @author FlightControl --- The CONTROLLABLE class -- @type CONTROLLABLE @@ -24644,22 +24640,7 @@ end -- * **FlightControl**: Design & Programming. -- -- --- @module Patrol - --- State Transition Functions - ---- OnBefore State Transition Function --- @function [parent=#AI_PATROLZONE] OnBeforeRoute --- @param #AI_PATROLZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable --- @return #boolean - ---- OnAfter State Transition Function --- @function [parent=#AI_PATROLZONE] OnAfterRoute --- @param #AI_PATROLZONE self --- @param Wrapper.Controllable#CONTROLLABLE Controllable - - +-- @module AI_Patrol --- AI_PATROLZONE class -- @type AI_PATROLZONE @@ -24694,20 +24675,206 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu -- Inherits from BASE local self = BASE:Inherit( self, FSM_CONTROLLABLE:New() ) -- Core.Fsm#FSM_CONTROLLABLE - self:SetStartState( "None" ) - self:AddTransition( "*", "Start", "Route" ) - self:AddTransition( "*", "Route", "Route" ) - self:AddTransition( { "Patrol", "Route" }, "Patrol", "Patrol" ) - self:AddTransition( "Patrol", "RTB", "RTB" ) - self:AddTransition( "*", "End", "End" ) - self:AddTransition( "*", "Dead", "End" ) - self.PatrolZone = PatrolZone + self.PatrolZone = PatrolZone self.PatrolFloorAltitude = PatrolFloorAltitude self.PatrolCeilingAltitude = PatrolCeilingAltitude self.PatrolMinSpeed = PatrolMinSpeed self.PatrolMaxSpeed = PatrolMaxSpeed + + self.PatrolFuelTresholdPercentage = 0.2 + + self:SetStartState( "Route" ) + +do self:AddTransition( "Route", "Start", "Route" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. + + --- OnLeave State Transition for Route. + -- @function [parent=#AI_PATROLZONE] OnLeaveRoute + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Route. + -- @function [parent=#AI_PATROLZONE] OnEnterRoute + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Start. + -- @function [parent=#AI_PATROLZONE] OnBeforeStart + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Start. + -- @function [parent=#AI_PATROLZONE] OnAfterStart + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for Start. + -- @function [parent=#AI_PATROLZONE] Start + -- @param #AI_PATROLZONE self + + --- Delayed Event Trigger for Start + -- @function [parent=#AI_PATROLZONE] __Start + -- @param #AI_PATROLZONE self + -- @param #number Delay The delay in seconds. + +end -- AI_PATROLZONE + +do self:AddTransition( "Route", "Route", "Route" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. + + --- OnLeave State Transition for Route. + -- @function [parent=#AI_PATROLZONE] OnLeaveRoute + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Route. + -- @function [parent=#AI_PATROLZONE] OnEnterRoute + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Route. + -- @function [parent=#AI_PATROLZONE] OnBeforeRoute + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Route. + -- @function [parent=#AI_PATROLZONE] OnAfterRoute + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for Route. + -- @function [parent=#AI_PATROLZONE] Route + -- @param #AI_PATROLZONE self + + --- Delayed Event Trigger for Route + -- @function [parent=#AI_PATROLZONE] __Route + -- @param #AI_PATROLZONE self + -- @param #number Delay The delay in seconds. + +end -- AI_PATROLZONE + +do self:AddTransition( { "Patrol", "Route" }, "Patrol", "Patrol" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. + + --- OnLeave State Transition for Patrol. + -- @function [parent=#AI_PATROLZONE] OnLeavePatrol + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Patrol. + -- @function [parent=#AI_PATROLZONE] OnEnterPatrol + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Patrol. + -- @function [parent=#AI_PATROLZONE] OnBeforePatrol + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Patrol. + -- @function [parent=#AI_PATROLZONE] OnAfterPatrol + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for Patrol. + -- @function [parent=#AI_PATROLZONE] Patrol + -- @param #AI_PATROLZONE self + + --- Delayed Event Trigger for Patrol + -- @function [parent=#AI_PATROLZONE] __Patrol + -- @param #AI_PATROLZONE self + -- @param #number Delay The delay in seconds. + +end -- AI_PATROLZONE + +do self:AddTransition( "Patrol", "RTB", "RTB" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. + + --- OnLeave State Transition for Patrol. + -- @function [parent=#AI_PATROLZONE] OnLeavePatrol + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for RTB. + -- @function [parent=#AI_PATROLZONE] OnEnterRTB + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for RTB. + -- @function [parent=#AI_PATROLZONE] OnBeforeRTB + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for RTB. + -- @function [parent=#AI_PATROLZONE] OnAfterRTB + -- @param #AI_PATROLZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for RTB. + -- @function [parent=#AI_PATROLZONE] RTB + -- @param #AI_PATROLZONE self + + --- Delayed Event Trigger for RTB + -- @function [parent=#AI_PATROLZONE] __RTB + -- @param #AI_PATROLZONE self + -- @param #number Delay The delay in seconds. + +end -- AI_PATROLZONE + return self end @@ -25915,6 +26082,501 @@ end -- AI_CARGO_GROUPED +--- SP:Y MP:Y AI:Y HU:N TYP:Air -- This module contains the AI_CAS_ZONE class. +-- +-- === +-- +-- 1) @{#AI_CAS_ZONE} class, extends @{Core.Fsm#FSM_CONTROLLABLE} +-- ================================================================ +-- The @{#AI_CAS_ZONE} class implements the core functions to CAS a @{Zone} by an AIR @{Controllable} @{Group}. +-- +-- 1.1) AI_CAS_ZONE constructor: +-- ---------------------------- +-- +-- * @{#AI_CAS_ZONE.New}(): Creates a new AI_CAS_ZONE object. +-- +-- 1.2) AI_CAS_ZONE state machine: +-- ---------------------------------- +-- The AI_CAS_ZONE is a state machine: it manages the different events and states of the AIControllable it is controlling. +-- +-- ### 1.2.1) AI_CAS_ZONE Events: +-- +-- * @{#AI_CAS_ZONE.TakeOff}( AIControllable ): The AI is taking-off from an airfield. +-- * @{#AI_CAS_ZONE.Hold}( AIControllable ): The AI is holding in airspace at a zone. +-- * @{#AI_CAS_ZONE.Engage}( AIControllable ): The AI is engaging the targets. +-- * @{#AI_CAS_ZONE.WeaponReleased}( AIControllable ): The AI has released a weapon to the target. +-- * @{#AI_CAS_ZONE.Destroy}( AIControllable ): The AI has destroyed a target. +-- * @{#AI_CAS_ZONE.Complete}( AIControllable ): The AI has destroyed all defined targets. +-- * @{#AI_CAS_ZONE.RTB}( AIControllable ): The AI is returning to the home base. +-- +-- ### 1.2.2) AI_CAS_ZONE States: +-- +-- +-- ### 1.2.3) AI_CAS_ZONE state transition methods: +-- +-- +-- 1.3) Manage the AI_CAS_ZONE parameters: +-- ------------------------------------------ +-- The following methods are available to modify the parameters of an AI_CAS_ZONE object: +-- +-- * @{#AI_CAS_ZONE.SetControllable}(): Set the AIControllable. +-- * @{#AI_CAS_ZONE.GetControllable}(): Get the AIControllable. +-- +-- ==== +-- +-- **API CHANGE HISTORY** +-- ====================== +-- +-- The underlying change log documents the API changes. Please read this carefully. The following notation is used: +-- +-- * **Added** parts are expressed in bold type face. +-- * _Removed_ parts are expressed in italic type face. +-- +-- Hereby the change log: +-- +-- 2017-01-12: Initial class and API. +-- +-- === +-- +-- AUTHORS and CONTRIBUTIONS +-- ========================= +-- +-- ### Contributions: +-- +-- * **Quax**: Concept & Testing. +-- * **Pikey**: Concept & Testing. +-- +-- ### Authors: +-- +-- * **FlightControl**: Concept, Design & Programming. +-- +-- +-- @module Cas + + +--- AI_CAS_ZONE class +-- @type AI_CAS_ZONE +-- @field Wrapper.Controllable#CONTROLLABLE AIControllable The @{Controllable} patrolling. +-- @field Core.Zone#ZONE_BASE TargetZone The @{Zone} where the patrol needs to be executed. +-- @extends AI.AI_Patrol#AI_PATROLZONE +AI_CAS_ZONE = { + ClassName = "AI_CAS_ZONE", +} + + + +--- Creates a new AI_CAS_ZONE object +-- @param #AI_CAS_ZONE self +-- @param Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed. +-- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. +-- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. +-- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h. +-- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h. +-- @param Core.Zone#ZONE EngageZone +-- @return #AI_CAS_ZONE self +function AI_CAS_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, EngageZone ) + + -- Inherits from BASE + local self = BASE:Inherit( self, AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed ) ) -- #AI_CAS_ZONE + + self.PatrolZone = PatrolZone + self.PatrolFloorAltitude = PatrolFloorAltitude + self.PatrolCeilingAltitude = PatrolCeilingAltitude + self.PatrolMinSpeed = PatrolMinSpeed + self.PatrolMaxSpeed = PatrolMaxSpeed + + self.EngageZone = EngageZone + + do self:AddTransition( { "Patrol", "Route", "Engaging" }, "Engage", "Engaging" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. + + --- OnLeave State Transition for Holding. + -- @function [parent=#AI_CAS_ZONE] OnLeaveHolding + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Engaging. + -- @function [parent=#AI_CAS_ZONE] OnEnterEngaging + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Engage. + -- @function [parent=#AI_CAS_ZONE] OnBeforeEngage + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Engage. + -- @function [parent=#AI_CAS_ZONE] OnAfterEngage + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for Engage. + -- @function [parent=#AI_CAS_ZONE] Engage + -- @param #AI_CAS_ZONE self + + --- Delayed Event Trigger for Engage + -- @function [parent=#AI_CAS_ZONE] __Engage + -- @param #AI_CAS_ZONE self + -- @param #number Delay The delay in seconds. + + end -- AI_CAS_ZONE + + + do self:AddTransition( "Engaging", "Fired", "Engaging" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. + + --- OnLeave State Transition for Engaging. + -- @function [parent=#AI_CAS_ZONE] OnLeaveEngaging + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Engaging. + -- @function [parent=#AI_CAS_ZONE] OnEnterEngaging + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Fired. + -- @function [parent=#AI_CAS_ZONE] OnBeforeFired + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Fired. + -- @function [parent=#AI_CAS_ZONE] OnAfterFired + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean + + --- Embedded Event Trigger for Fired. + -- @function [parent=#AI_CAS_ZONE] Fired + -- @param #AI_CAS_ZONE self + + --- Delayed Event Trigger for Fired + -- @function [parent=#AI_CAS_ZONE] __Fired + -- @param #AI_CAS_ZONE self + -- @param #number Delay The delay in seconds. + + end -- AI_CAS_ZONE + + do self:AddTransition( "Engaging", "Destroy", "Engaging" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. + + --- OnLeave State Transition for Engaging. + -- @function [parent=#AI_CAS_ZONE] OnLeaveEngaging + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Engaging. + -- @function [parent=#AI_CAS_ZONE] OnEnterEngaging + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Destroy. + -- @function [parent=#AI_CAS_ZONE] OnBeforeDestroy + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Destroy. + -- @function [parent=#AI_CAS_ZONE] OnAfterDestroy + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for Destroy. + -- @function [parent=#AI_CAS_ZONE] Destroy + -- @param #AI_CAS_ZONE self + + --- Delayed Event Trigger for Destroy + -- @function [parent=#AI_CAS_ZONE] __Destroy + -- @param #AI_CAS_ZONE self + -- @param #number Delay The delay in seconds. + + end -- AI_CAS_ZONE + +do self:AddTransition( "Engaging", "Abort", "Patrol" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. + + --- OnLeave State Transition for Engaging. + -- @function [parent=#AI_CAS_ZONE] OnLeaveEngaging + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Patrol. + -- @function [parent=#AI_CAS_ZONE] OnEnterPatrol + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Abort. + -- @function [parent=#AI_CAS_ZONE] OnBeforeAbort + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Abort. + -- @function [parent=#AI_CAS_ZONE] OnAfterAbort + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for Abort. + -- @function [parent=#AI_CAS_ZONE] Abort + -- @param #AI_CAS_ZONE self + + --- Delayed Event Trigger for Abort + -- @function [parent=#AI_CAS_ZONE] __Abort + -- @param #AI_CAS_ZONE self + -- @param #number Delay The delay in seconds. + +end -- AI_CAS_ZONE + + + do self:AddTransition( "Engaging", "Completed", "Patrol" ) -- FSM_CONTROLLABLE Transition for type #AI_CAS_ZONE. + + --- OnLeave State Transition for Engaging. + -- @function [parent=#AI_CAS_ZONE] OnLeaveEngaging + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter State Transition for Patrol. + -- @function [parent=#AI_CAS_ZONE] OnEnterPatrol + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore State Transition for Completed. + -- @function [parent=#AI_CAS_ZONE] OnBeforeCompleted + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter State Transition for Completed. + -- @function [parent=#AI_CAS_ZONE] OnAfterCompleted + -- @param #AI_CAS_ZONE self + -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Embedded Event Trigger for Completed. + -- @function [parent=#AI_CAS_ZONE] Completed + -- @param #AI_CAS_ZONE self + + --- Delayed Event Trigger for Completed + -- @function [parent=#AI_CAS_ZONE] __Completed + -- @param #AI_CAS_ZONE self + -- @param #number Delay The delay in seconds. + + end -- AI_CAS_ZONE + + return self +end + + +--- onafter State Transition for Event Start. +-- @param #AI_CAS_ZONE self +-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +function AI_CAS_ZONE:onafterStart( Controllable, From, Event, To ) + + + if Controllable:IsAlive() then + self:__Route( 1 ) + end + + self:EventOnDead( self.OnDead ) + + Controllable:OptionROEHoldFire() + Controllable:OptionROTVertical() + +end + +--- @param Wrapper.Controllable#CONTROLLABLE AIControllable +function _NewEngageRoute( AIControllable ) + + AIControllable:T( "NewEngageRoute" ) + local EngageZone = AIControllable:GetState( AIControllable, "EngageZone" ) -- AI.AI_Patrol#AI_PATROLZONE + EngageZone:__Engage( 1 ) +end + + +--- @param #AI_CAS_ZONE self +-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +function AI_CAS_ZONE:onafterEngage( Controllable, From, Event, To ) + + if Controllable:IsAlive() then + + local EngageRoute = {} + + if self.Controllable:IsNotInZone( self.EngageZone ) then + + -- Find a random 2D point in EngageZone. + local ToEngageZoneVec2 = self.EngageZone:GetRandomVec2() + self:T2( ToEngageZoneVec2 ) + + -- Define Speed and Altitude. + local ToEngageZoneAltitude = math.random( self.EngageFloorAltitude, self.EngageCeilingAltitude ) + local ToEngageZoneSpeed = self.PatrolMaxSpeed + self:T2( ToEngageZoneSpeed ) + + -- Obtain a 3D @{Point} from the 2D point + altitude. + local ToEngageZonePointVec3 = POINT_VEC3:New( ToEngageZoneVec2.x, ToEngageZoneAltitude, ToEngageZoneVec2.y ) + + -- Create a route point of type air. + local ToEngageZoneRoutePoint = ToEngageZonePointVec3:RoutePointAir( + POINT_VEC3.RoutePointAltType.BARO, + POINT_VEC3.RoutePointType.TurningPoint, + POINT_VEC3.RoutePointAction.TurningPoint, + ToEngageZoneSpeed, + true + ) + + EngageRoute[#EngageRoute+1] = ToEngageZoneRoutePoint + + end + + --- Define a random point in the @{Zone}. The AI will fly to that point within the zone. + + --- Find a random 2D point in EngageZone. + local ToTargetVec2 = self.EngageZone:GetRandomVec2() + self:T2( ToTargetVec2 ) + + --- Define Speed and Altitude. + local ToTargetAltitude = math.random( self.EngageFloorAltitude, self.EngageCeilingAltitude ) + local ToTargetSpeed = math.random( self.PatrolMinSpeed, self.PatrolMaxSpeed ) + self:T2( { self.PatrolMinSpeed, self.PatrolMaxSpeed, ToTargetSpeed } ) + + --- Obtain a 3D @{Point} from the 2D point + altitude. + local ToTargetPointVec3 = POINT_VEC3:New( ToTargetVec2.x, ToTargetAltitude, ToTargetVec2.y ) + + --- Create a route point of type air. + local ToTargetRoutePoint = ToTargetPointVec3:RoutePointAir( + POINT_VEC3.RoutePointAltType.BARO, + POINT_VEC3.RoutePointType.TurningPoint, + POINT_VEC3.RoutePointAction.TurningPoint, + ToTargetSpeed, + true + ) + + ToTargetPointVec3:SmokeRed() + + EngageRoute[#EngageRoute+1] = ToTargetRoutePoint + + --- Now we're going to do something special, we're going to call a function from a waypoint action at the AIControllable... + self.Controllable:WayPointInitialize( EngageRoute ) + + --- Do a trick, link the NewEngageRoute function of the PATROLGROUP object to the AIControllable in a temporary variable ... + self.Controllable:SetState( self.Controllable, "EngageZone", self ) + self.Controllable:WayPointFunction( #EngageRoute, 1, "_NewEngageRoute" ) + + --- NOW ROUTE THE GROUP! + self.Controllable:WayPointExecute( 1, 5 ) + + local DetectedTargets = Controllable:GetDetectedTargets() + for TargetID, Target in pairs( DetectedTargets ) do + local TargetObject = Target.object + self:T( TargetObject ) + if TargetObject and TargetObject:isExist() and TargetObject.id_ < 50000000 then + + local TargetUnit = UNIT:Find( TargetObject ) + local TargetUnitName = TargetUnit:GetName() + + if TargetUnit:IsInZone( self.EngageZone ) then + --local EngageTask = Controllable:EnRouteTaskEngageUnit( TargetUnit, 1 ) + local EngageTask = Controllable:TaskAttackUnit( TargetUnit ) + Controllable:PushTask( EngageTask, 1 ) + end + end + end + + Controllable:OptionROEWeaponFree() + Controllable:OptionROTPassiveDefense() + + end +end + +--- @param #AI_CAS_ZONE self +-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +function AI_CAS_ZONE:onafterDestroy( Controllable, From, Event, To ) + + Controllable:MessageToAll( "Destroyed a target", 15 , "Destroyed!" ) +end + +--- @param #AI_CAS_ZONE self +-- @param Core.Event#EVENTDATA EventData +function AI_CAS_ZONE:OnDead( EventData ) + self:T( { "EventDead", EventData } ) + + if EventData.IniDCSUnit then + self:__Destroy( 1, EventData ) + end +end + + --- (SP) (MP) (FSM) Accept or reject process for player (task) assignments. -- -- === @@ -29882,6 +30544,7 @@ Include.File( "Functional/Detection" ) Include.File( "AI/AI_Balancer" ) Include.File( "AI/AI_Patrol" ) Include.File( "AI/AI_Cargo" ) +Include.File( "AI/AI_Cas" ) --- Actions Include.File( "Actions/Act_Assign" ) diff --git a/Moose Mission Setup/Moose_Create.bat b/Moose Mission Setup/Moose_Create.bat index 151558dbe..9ef11dac0 100644 --- a/Moose Mission Setup/Moose_Create.bat +++ b/Moose Mission Setup/Moose_Create.bat @@ -81,6 +81,7 @@ rem AI Classes COPY /b Moose.lua + %1\AI\AI_Balancer.lua Moose.lua COPY /b Moose.lua + %1\AI\AI_Patrol.lua Moose.lua COPY /b Moose.lua + %1\AI\AI_Cargo.lua Moose.lua +COPY /b Moose.lua + %1\AI\AI_CAS.lua Moose.lua rem Actions diff --git a/Moose Test Missions/CAS - Close Air Support/CAS-001 - CAS in a ZONE/CAS-001 - CAS in a ZONE.lua b/Moose Test Missions/CAS - Close Air Support/CAS-001 - CAS in a ZONE/CAS-001 - CAS in a ZONE.lua new file mode 100644 index 000000000..30c25eb7e --- /dev/null +++ b/Moose Test Missions/CAS - Close Air Support/CAS-001 - CAS in a ZONE/CAS-001 - CAS in a ZONE.lua @@ -0,0 +1,37 @@ +-- Name: CAS in a ZONE +-- Author: FlightControl +-- Date Created: 13 January 2017 +-- +-- # Situation: +-- +-- # Test cases: +-- + +local CASEngagementZone = ZONE:New( "Engagement Zone" ) + +local CASPlane = GROUP:FindByName( "Plane" ) + +local PatrolZone = ZONE:New( "Patrol Zone" ) + +local AICasZone = AI_CAS_ZONE:New( PatrolZone, 500, 1000, 350, 600, CASEngagementZone ) +local Targets = GROUP:FindByName("Targets") + +AICasZone:SetControllable(CASPlane) +AICasZone:__Start(1) +AICasZone:__Engage(10) + +-- Check every 60 seconds whether the Targets have been eliminated. +-- When the trigger completed has been fired, the Plane will go back to the Patrol Zone. +Check = SCHEDULER:New(nil, + function() + BASE:E( { "In Scheduler: ", Targets:GetSize() } ) + if Targets:IsAlive() and Targets:GetSize() ~= 0 then + BASE:E("Still alive") + else + BASE:E("Destroyed") + AICasZone:__Completed(1) + end + end, {}, 20, 60, 0.2 ) + + + diff --git a/Moose Test Missions/CAS - Close Air Support/CAS-001 - CAS in a ZONE/CAS-001 - CAS in a ZONE.miz b/Moose Test Missions/CAS - Close Air Support/CAS-001 - CAS in a ZONE/CAS-001 - CAS in a ZONE.miz new file mode 100644 index 0000000000000000000000000000000000000000..cf78acaadfa8fc675b677cde6b8b82ef85266450 GIT binary patch literal 219524 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 z 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�x;jI?8bUi!Rkc(BDQI<)G@+CJ=< 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