From c97d060f96b1a67d107cf62f35ae5039bd82fbb0 Mon Sep 17 00:00:00 2001 From: FlightControl Date: Sun, 3 Apr 2016 09:18:42 +0200 Subject: [PATCH] Added Smoke, flares + support for ground, naval groups --- Moose/Escort.lua | 230 ++++++++++-------- Moose/Group.lua | 223 +++++++++++++++-- Moose/Unit.lua | 110 ++++++++- .../lua/MOOSE_Escort_Test_Follow.lua | 8 + .../miz/MOOSE_Escort_Test_Follow.miz | Bin 40198 -> 44669 bytes 5 files changed, 445 insertions(+), 126 deletions(-) diff --git a/Moose/Escort.lua b/Moose/Escort.lua index a97ceffce..c8af4b1c7 100644 --- a/Moose/Escort.lua +++ b/Moose/Escort.lua @@ -1,7 +1,7 @@ --- Taking the lead of AI escorting your flight. --- The ESCORT class allows you to interact with escoring AI on your flight and take the lead. +-- The ESCORT class allows you to interact with escorting AI on your flight and take the lead. -- @module Escort --- @author Flightcontrol +-- @author FlightControl Include.File( "Routines" ) Include.File( "Base" ) @@ -35,6 +35,8 @@ ESCORT = { -- @type MENUPARAM -- @field #ESCORT ParamSelf -- @field #Distance ParamDistance +-- @field #function ParamFunction +-- @field #string ParamMessage --- ESCORT class constructor for an AI group -- @param self @@ -51,26 +53,45 @@ function ESCORT:New( EscortClient, EscortGroup, EscortName ) self.EscortName = EscortName self.EscortMenu = MENU_CLIENT:New( self.EscortClient, self.EscortName ) - - -- Escort Navigation + self.EscortMenuReportNavigation = MENU_CLIENT:New( self.EscortClient, "Navigation", self.EscortMenu ) - self.EscortMenuHoldPosition = MENU_CLIENT_COMMAND:New( self.EscortClient, "Hold Position and Stay Low", self.EscortMenuReportNavigation, ESCORT._HoldPosition, { ParamSelf = self } ) - self.EscortMenuJoinUpAndHoldPosition = MENU_CLIENT_COMMAND:New( self.EscortClient, "Join-Up and Hold Position NearBy", self.EscortMenuReportNavigation, ESCORT._HoldPositionNearBy, { ParamSelf = self } ) - self.EscortMenuJoinUpAndFollow50Meters = MENU_CLIENT_COMMAND:New( self.EscortClient, "Join-Up and Follow at 100", self.EscortMenuReportNavigation, ESCORT._JoinUpAndFollow, { ParamSelf = self, ParamDistance = 100 } ) - self.EscortMenuJoinUpAndFollow100Meters = MENU_CLIENT_COMMAND:New( self.EscortClient, "Join-Up and Follow at 200", self.EscortMenuReportNavigation, ESCORT._JoinUpAndFollow, { ParamSelf = self, ParamDistance = 200 } ) - self.EscortMenuJoinUpAndFollow150Meters = MENU_CLIENT_COMMAND:New( self.EscortClient, "Join-Up and Follow at 400", self.EscortMenuReportNavigation, ESCORT._JoinUpAndFollow, { ParamSelf = self, ParamDistance = 400 } ) - self.EscortMenuJoinUpAndFollow200Meters = MENU_CLIENT_COMMAND:New( self.EscortClient, "Join-Up and Follow at 800", self.EscortMenuReportNavigation, ESCORT._JoinUpAndFollow, { ParamSelf = self, ParamDistance = 800 } ) + if EscortGroup:IsHelicopter() or EscortGroup:IsAirPlane() then + -- Escort Navigation + self.EscortMenuHoldPosition = MENU_CLIENT_COMMAND:New( self.EscortClient, "Hold Position and Stay Low", self.EscortMenuReportNavigation, ESCORT._HoldPosition, { ParamSelf = self } ) + self.EscortMenuJoinUpAndHoldPosition = MENU_CLIENT_COMMAND:New( self.EscortClient, "Join-Up and Hold Position NearBy", self.EscortMenuReportNavigation, ESCORT._HoldPositionNearBy, { ParamSelf = self } ) + self.EscortMenuJoinUpAndFollow50Meters = MENU_CLIENT_COMMAND:New( self.EscortClient, "Join-Up and Follow at 100", self.EscortMenuReportNavigation, ESCORT._JoinUpAndFollow, { ParamSelf = self, ParamDistance = 100 } ) + self.EscortMenuJoinUpAndFollow100Meters = MENU_CLIENT_COMMAND:New( self.EscortClient, "Join-Up and Follow at 200", self.EscortMenuReportNavigation, ESCORT._JoinUpAndFollow, { ParamSelf = self, ParamDistance = 200 } ) + self.EscortMenuJoinUpAndFollow150Meters = MENU_CLIENT_COMMAND:New( self.EscortClient, "Join-Up and Follow at 400", self.EscortMenuReportNavigation, ESCORT._JoinUpAndFollow, { ParamSelf = self, ParamDistance = 400 } ) + self.EscortMenuJoinUpAndFollow200Meters = MENU_CLIENT_COMMAND:New( self.EscortClient, "Join-Up and Follow at 800", self.EscortMenuReportNavigation, ESCORT._JoinUpAndFollow, { ParamSelf = self, ParamDistance = 800 } ) + end + self.EscortMenuFlare = MENU_CLIENT:New( self.EscortClient, "Flare", self.EscortMenuReportNavigation, ESCORT._Flare, { ParamSelf = self } ) + self.EscortMenuFlareGreen = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release green flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.Green, ParamMessage = "Released a green flare!" } ) + self.EscortMenuFlareRed = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release red flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.Red, ParamMessage = "Released a red flare!" } ) + self.EscortMenuFlareWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.White, ParamMessage = "Released a white flare!" } ) + self.EscortMenuFlareYellow = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release yellow flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.Yellow, ParamMessage = "Released a yellow flare!" } ) - -- Report Targets - self.EscortMenuReportNearbyTargets = MENU_CLIENT:New( self.EscortClient, "Report targets", self.EscortMenu ) - self.EscortMenuReportNearbyTargetsOn = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets on", self.EscortMenuReportNearbyTargets, ESCORT._ReportNearbyTargets, { ParamSelf = self, ParamReportTargets = true } ) - self.EscortMenuReportNearbyTargetsOff = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets off", self.EscortMenuReportNearbyTargets, ESCORT._ReportNearbyTargets, { ParamSelf = self, ParamReportTargets = false, } ) - - -- Scanning Targets - self.EscortMenuScanForTargets = MENU_CLIENT:New( self.EscortClient, "Scan targets", self.EscortMenu ) - self.EscortMenuReportNearbyTargetsOn = MENU_CLIENT_COMMAND:New( self.EscortClient, "Scan targets 30 seconds", self.EscortMenuScanForTargets, ESCORT._ScanTargets30Seconds, { ParamSelf = self, ParamScanDuration = 30 } ) - self.EscortMenuReportNearbyTargetsOn = MENU_CLIENT_COMMAND:New( self.EscortClient, "Scan targets 60 seconds", self.EscortMenuScanForTargets, ESCORT._ScanTargets60Seconds, { ParamSelf = self, ParamScanDuration = 30 } ) + self.EscortMenuSmoke = MENU_CLIENT:New( self.EscortClient, "Smoke", self.EscortMenuReportNavigation, ESCORT._Smoke, { ParamSelf = self } ) + self.EscortMenuSmokeGreen = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release green smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Green, ParamMessage = "Releasing green smoke!" } ) + self.EscortMenuSmokeRed = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release red smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Red, ParamMessage = "Releasing red smoke!" } ) + self.EscortMenuSmokeWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.White, ParamMessage = "Releasing white smoke!" } ) + self.EscortMenuSmokeOrange = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release orange smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Orange, ParamMessage = "Releasing orange smoke!" } ) + self.EscortMenuSmokeBlue = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release blue smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Blue, ParamMessage = "Releasing blue smoke!" } ) + + if EscortGroup:IsHelicopter() or EscortGroup:IsAirPlane() or EscortGroup:IsGround() or EscortGroup:IsShip() then + -- Report Targets + self.EscortMenuReportNearbyTargets = MENU_CLIENT:New( self.EscortClient, "Report targets", self.EscortMenu ) + self.EscortMenuReportNearbyTargetsOn = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets on", self.EscortMenuReportNearbyTargets, ESCORT._SwitchReportNearbyTargets, { ParamSelf = self, ParamReportTargets = true } ) + self.EscortMenuReportNearbyTargetsOff = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets off", self.EscortMenuReportNearbyTargets, ESCORT._SwitchReportNearbyTargets, { ParamSelf = self, ParamReportTargets = false, } ) + self.EscortMenuReportNearbyTargetsNow = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets now", self.EscortMenuReportNearbyTargets, ESCORT._ReportNearbyTargetsNow, { ParamSelf = self } ) + end + if EscortGroup:IsHelicopter() then + -- Scanning Targets + self.EscortMenuScanForTargets = MENU_CLIENT:New( self.EscortClient, "Scan targets", self.EscortMenu ) + self.EscortMenuReportNearbyTargetsOn = MENU_CLIENT_COMMAND:New( self.EscortClient, "Scan targets 30 seconds", self.EscortMenuScanForTargets, ESCORT._ScanTargets30Seconds, { ParamSelf = self, ParamScanDuration = 30 } ) + self.EscortMenuReportNearbyTargetsOn = MENU_CLIENT_COMMAND:New( self.EscortClient, "Scan targets 60 seconds", self.EscortMenuScanForTargets, ESCORT._ScanTargets60Seconds, { ParamSelf = self, ParamScanDuration = 60 } ) + end + -- Attack Targets self.EscortMenuAttackNearbyTargets = MENU_CLIENT:New( self.EscortClient, "Attack nearby targets", self.EscortMenu ) self.EscortMenuAttackTargets = {} @@ -78,17 +99,33 @@ function ESCORT:New( EscortClient, EscortGroup, EscortName ) -- Rules of Engagement self.EscortMenuROE = MENU_CLIENT:New( self.EscortClient, "ROE", self.EscortMenu ) - self.EscortMenuROEHoldFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Hold Fire", self.EscortMenuROE, ESCORT._ROEHoldFire, { ParamSelf = self, } ) - self.EscortMenuROEReturnFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Return Fire", self.EscortMenuROE, ESCORT._ROEReturnFire, { ParamSelf = self, } ) - self.EscortMenuROEOpenFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Open Fire", self.EscortMenuROE, ESCORT._ROEOpenFire, { ParamSelf = self, } ) - self.EscortMenuROEWeaponFree = MENU_CLIENT_COMMAND:New( self.EscortClient, "Weapon Free", self.EscortMenuROE, ESCORT._ROEWeaponFree, { ParamSelf = self, } ) - + if EscortGroup:OptionROEHoldFirePossible() then + self.EscortMenuROEHoldFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Hold Fire", self.EscortMenuROE, ESCORT._ROE, { ParamSelf = self, ParamFunction = EscortGroup:OptionROEHoldFire(), ParamMessage = "Holding weapons!" } ) + end + if EscortGroup:OptionROEReturnFirePossible() then + self.EscortMenuROEReturnFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Return Fire", self.EscortMenuROE, ESCORT._ROE, { ParamSelf = self, ParamFunction = EscortGroup:OptionROEReturnFire(), ParamMessage = "Returning fire!" } ) + end + if EscortGroup:OptionROEOpenFirePossible() then + self.EscortMenuROEOpenFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Open Fire", self.EscortMenuROE, ESCORT._ROE, { ParamSelf = self, ParamFunction = EscortGroup:OptionROEOpenFire(), ParamMessage = "Opening fire on designated targets!!" } ) + end + if EscortGroup:OptionROEWeaponFreePossible() then + self.EscortMenuROEWeaponFree = MENU_CLIENT_COMMAND:New( self.EscortClient, "Weapon Free", self.EscortMenuROE, ESCORT._ROE, { ParamSelf = self, ParamFunction = EscortGroup:OptionROEWeaponFree(), ParamMessage = "Opening fire on targets of opportunity!" } ) + end + -- Reaction to Threats self.EscortMenuEvasion = MENU_CLIENT:New( self.EscortClient, "Evasion", self.EscortMenu ) - self.EscortMenuEvasionNoReaction = MENU_CLIENT_COMMAND:New( self.EscortClient, "Fight until death", self.EscortMenuEvasion, ESCORT._OptionROTNoReaction, { ParamSelf = self, } ) - self.EscortMenuEvasionPassiveDefense = MENU_CLIENT_COMMAND:New( self.EscortClient, "Use flares, chaff and jammers", self.EscortMenuEvasion, ESCORT._OptionROTPassiveDefense, { ParamSelf = self, } ) - self.EscortMenuEvasionEvadeFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Evade enemy fire", self.EscortMenuEvasion, ESCORT._OptionROTEvadeFire, { ParamSelf = self, } ) - self.EscortMenuOptionEvasionVertical = MENU_CLIENT_COMMAND:New( self.EscortClient, "Go below radar and evade fire", self.EscortMenuEvasion, ESCORT._OptionROTVertical, { ParamSelf = self, } ) + if EscortGroup:OptionROTNoReactionPossible() then + self.EscortMenuEvasionNoReaction = MENU_CLIENT_COMMAND:New( self.EscortClient, "Fight until death", self.EscortMenuEvasion, ESCORT._ROT, { ParamSelf = self, ParamFunction = EscortGroup:OptionROTNoReaction(), ParamMessage = "Fighting until death!" } ) + end + if EscortGroup:OptionROTPassiveDefensePossible() then + self.EscortMenuEvasionPassiveDefense = MENU_CLIENT_COMMAND:New( self.EscortClient, "Use flares, chaff and jammers", self.EscortMenuEvasion, ESCORT._ROT, { ParamSelf = self, ParamFunction = EscortGroup:OptionROTPassiveDefense(), ParamMessage = "Defending using jammers, chaff and flares!" } ) + end + if EscortGroup:OptionROTEvadeFirePossible() then + self.EscortMenuEvasionEvadeFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Evade enemy fire", self.EscortMenuEvasion, ESCORT._ROT, { ParamSelf = self, ParamFunction = EscortGroup:OptionROTEvadeFire(), ParamMessage = "Evading on enemy fire!" } ) + end + if EscortGroup:OptionROTVerticalPossible() then + self.EscortMenuOptionEvasionVertical = MENU_CLIENT_COMMAND:New( self.EscortClient, "Go below radar and evade fire", self.EscortMenuEvasion, ESCORT._ROT, { ParamSelf = self, ParamFunction = EscortGroup:OptionROTVertical(), ParamMessage = "Evading on enemy fire with vertical manoeuvres!" } ) + end -- Cancel current Task self.EscortMenuResumeMission = MENU_CLIENT:New( self.EscortClient, "Resume Mission", self.EscortMenu ) @@ -100,10 +137,10 @@ function ESCORT:New( EscortClient, EscortGroup, EscortName ) -- Initialize the EscortGroup - self.EscortGroup:OptionROTVertical() - self.EscortGroup:OptionROEOpenFire() + EscortGroup:OptionROTVertical() + EscortGroup:OptionROEOpenFire() - self.EscortGroup:PushTask( EscortGroup:TaskRoute( TaskPoints ) ) + EscortGroup:SetTask( EscortGroup:TaskRoute( TaskPoints ) ) self.ReportTargetsScheduler = routines.scheduleFunction( self._ReportTargetsScheduler, { self }, timer.getTime() + 1, 30 ) end @@ -178,8 +215,47 @@ function ESCORT._JoinUpAndFollow( MenuParam ) EscortGroup:MessageToClient( "Rejoining and Following at " .. Distance .. "!", 30, EscortClient ) end +--- @param #MENUPARAM MenuParam +function ESCORT._Flare( MenuParam ) -function ESCORT._ReportNearbyTargets( MenuParam ) + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + local Color = MenuParam.ParamColor + local Message = MenuParam.ParamMessage + + EscortGroup:GetUnit(1):Flare( Color ) + EscortGroup:MessageToClient( Message, 10, EscortClient ) +end + +--- @param #MENUPARAM MenuParam +function ESCORT._Smoke( MenuParam ) + + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + local Color = MenuParam.ParamColor + local Message = MenuParam.ParamMessage + + EscortGroup:GetUnit(1):Smoke( Color ) + EscortGroup:MessageToClient( Message, 10, EscortClient ) +end + + +--- @param #MENUPARAM MenuParam +function ESCORT._ReportNearbyTargetsNow( MenuParam ) + + local self = MenuParam.ParamSelf + local EscortGroup = self.EscortGroup + local EscortClient = self.EscortClient + + self:_ReportTargetsScheduler() + +end + +function ESCORT._SwitchReportNearbyTargets( MenuParam ) local self = MenuParam.ParamSelf local EscortGroup = self.EscortGroup @@ -256,91 +332,31 @@ function ESCORT._AttackTarget( MenuParam ) end --- @param #MENUPARAM MenuParam -function ESCORT._ROEHoldFire( MenuParam ) +function ESCORT._ROE( MenuParam ) local self = MenuParam.ParamSelf local EscortGroup = self.EscortGroup local EscortClient = self.EscortClient - - EscortGroup:OptionROEHoldFire() - EscortGroup:MessageToClient( "Holding weapons.", 10, EscortClient ) + + local EscortROEFunction = MenuParam.ParamFunction + local EscortROEMessage = MenuParam.ParamMessage + + EscortROEFunction() + EscortGroup:MessageToClient( EscortROEMessage, 10, EscortClient ) end --- @param #MENUPARAM MenuParam -function ESCORT._ROEReturnFire( MenuParam ) +function ESCORT._ROT( MenuParam ) local self = MenuParam.ParamSelf local EscortGroup = self.EscortGroup local EscortClient = self.EscortClient - EscortGroup:OptionROEReturnFire() - EscortGroup:MessageToClient( "Returning enemy fire.", 10, EscortClient ) -end + local EscortROTFunction = MenuParam.ParamFunction + local EscortROTMessage = MenuParam.ParamMessage ---- @param #MENUPARAM MenuParam -function ESCORT._ROEOpenFire( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - EscortGroup:OptionROEOpenFire() - EscortGroup:MessageToClient( "Open fire on ordered targets.", 10, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT._ROEWeaponFree( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - EscortGroup:OptionROEWeaponFree() - EscortGroup:MessageToClient( "Engaging nearby targets.", 10, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT._OptionROTNoReaction( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - EscortGroup:OptionROTNoReaction() - EscortGroup:MessageToClient( "We'll fight until death.", 10, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT._OptionROTPassiveDefense( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - EscortGroup:OptionROTPassiveDefense() - EscortGroup:MessageToClient( "We will use flares, chaff and jammers.", 10, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT._OptionROTEvadeFire( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - EscortGroup:OptionROTEvadeFire() - EscortGroup:MessageToClient( "We'll evade enemy fire.", 10, EscortClient ) -end - ---- @param #MENUPARAM MenuParam -function ESCORT._OptionROTVertical( MenuParam ) - - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup - local EscortClient = self.EscortClient - - EscortGroup:OptionROTVertical() - EscortGroup:MessageToClient( "We'll perform vertical evasive manoeuvres.", 10, EscortClient ) + EscortROTFunction() + EscortGroup:MessageToClient( EscortROTMessage, 10, EscortClient ) end --- @param #MENUPARAM MenuParam @@ -482,6 +498,8 @@ function ESCORT:_FollowScheduler( FollowDistance ) end +--- Report Targets Scheduler. +-- @param #ESCORT self function ESCORT:_ReportTargetsScheduler() self:F() @@ -555,7 +573,9 @@ function ESCORT:_ReportTargetsScheduler() end if EscortTargetMessages ~= "" and self.ReportTargets == true then - self.EscortClient:Message( EscortTargetMessages:gsub("\n$",""), 20, "/ESCORT.DetectedTargets", self.EscortName .. " reporting detected targets within 8 km range:", 0 ) + self.EscortGroup:MessageToClient( EscortTargetMessages:gsub("\n$",""), 20, self.EscortClient ) + else + self.EscortGroup:MessageToClient( "No targets detected!", 20, self.EscortClient ) end self:T() diff --git a/Moose/Group.lua b/Moose/Group.lua index 4624765b7..391c1bd6a 100644 --- a/Moose/Group.lua +++ b/Moose/Group.lua @@ -51,7 +51,6 @@ function GROUP:New( DCSGroup ) return self end - --- Create a new GROUP from an existing group name. -- @param self -- @param GroupName The name of the DCS Group. @@ -101,8 +100,6 @@ function GROUP:GetDCSGroup() return self.DCSGroup end - - --- Gets the DCS Unit of the GROUP. -- @param self -- @param #number UnitNumber The unit index to be returned from the GROUP. @@ -157,8 +154,6 @@ function GROUP:GetCallsign() return self.DCSGroup:getUnit(1):getCallsign() end - - --- Gets the current Point of the GROUP in VEC3 format. -- @return #Vec3 Current x,y and z position of the group. function GROUP:GetPointVec2() @@ -203,8 +198,6 @@ function GROUP:Destroy() self.DCSGroup:destroy() end - - --- Gets the DCS Unit. -- @param #GROUP self -- @param #number UnitNumber The number of the Unit to be returned. @@ -214,6 +207,8 @@ function GROUP:GetUnit( UnitNumber ) return UNIT:New( self.DCSGroup:getUnit( UnitNumber ) ) end +-- Is Functions + --- Returns if the group is of an air category. -- If the group is a helicopter or a plane, then this method will return true, otherwise false. -- @param self @@ -240,6 +235,54 @@ function GROUP:IsAlive() return IsAliveResult end +--- Returns if the GROUP is a Helicopter. +-- @param #GROUP self +-- @return #boolean true if GROUP are Helicopters. +function GROUP:IsHelicopter() + self:F2() + + local GroupCategory = self.DCSGroup:getCategory() + self:T2( GroupCategory ) + + return GroupCategory == Group.Category.HELICOPTER +end + +--- Returns if the GROUP are AirPlanes. +-- @param #GROUP self +-- @return #boolean true if GROUP are AirPlanes. +function GROUP:IsAirPlane() + self:F2() + + local GroupCategory = self.DCSGroup:getCategory() + self:T2( GroupCategory ) + + return GroupCategory == Group.Category.AIRPLANE +end + +--- Returns if the GROUP are Ground troops. +-- @param #GROUP self +-- @return #boolean true if GROUP are Ground troops. +function GROUP:IsGround() + self:F2() + + local GroupCategory = self.DCSGroup:getCategory() + self:T2( GroupCategory ) + + return GroupCategory == Group.Category.GROUND +end + +--- Returns if the GROUP are Ships. +-- @param #GROUP self +-- @return #boolean true if GROUP are Ships. +function GROUP:IsShip() + self:F2() + + local GroupCategory = self.DCSGroup:getCategory() + self:T2( GroupCategory ) + + return GroupCategory == Group.Category.SHIP +end + --- Returns if all units of the group are on the ground or landed. -- If all units of this group are on the ground, this function will return true, otherwise false. -- @param self @@ -281,7 +324,6 @@ function GROUP:GetMaxVelocity() return MaxVelocity end - --- Returns the current minimum height of the group. -- Each unit within the group gets evaluated, and the minimum height (= the unit which is the lowest elevated) is returned. -- @param self @@ -291,7 +333,6 @@ function GROUP:GetMinHeight() end - --- Returns the current maximum height of the group. -- Each unit within the group gets evaluated, and the maximum height (= the unit which is the highest elevated) is returned. -- @param self @@ -316,7 +357,6 @@ function GROUP:PopCurrentTask() return self end - --- Pushing Task on the queue from the group. -- @param #GROUP self -- @return Group#GROUP self @@ -834,6 +874,19 @@ end -- Options +--- Can the GROUP hold their weapons? +-- @param #GROUP self +-- @return #boolean +function GROUP:OptionROEHoldFirePossible() + self:F( { self.GroupName } ) + + if self:IsAir() or self:IsGround() or self:IsShip() then + return true + end + + return false +end + --- Holding weapons. -- @param #GROUP self -- @return #GROUP self @@ -842,10 +895,30 @@ function GROUP:OptionROEHoldFire() local Controller = self:_GetController() - Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_HOLD ) + elseif self:IsGround() then + Controller:setOption( AI.Option.Ground.id.ROE, AI.Option.Ground.val.ROE.WEAPON_HOLD ) + elseif self:IsShip() then + Controller:setOption( AI.Option.Naval.id.ROE, AI.Option.Naval.val.ROE.WEAPON_HOLD ) + end + return self end +--- Can the GROUP attack returning on enemy fire? +-- @param #GROUP self +-- @return #boolean +function GROUP:OptionROEReturnFirePossible() + self:F( { self.GroupName } ) + + if self:IsAir() or self:IsGround() or self:IsShip() then + return true + end + + return false +end + --- Return fire. -- @param #GROUP self -- @return #GROUP self @@ -854,10 +927,30 @@ function GROUP:OptionROEReturnFire() local Controller = self:_GetController() - Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.RETURN_FIRE ) + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.RETURN_FIRE ) + elseif self:IsGround() then + Controller:setOption( AI.Option.Ground.id.ROE, AI.Option.Ground.val.ROE.RETURN_FIRE ) + elseif self:IsShip() then + Controller:setOption( AI.Option.Naval.id.ROE, AI.Option.Naval.val.ROE.RETURN_FIRE ) + end + return self end +--- Can the GROUP attack designated targets? +-- @param #GROUP self +-- @return #boolean +function GROUP:OptionROEOpenFirePossible() + self:F( { self.GroupName } ) + + if self:IsAir() or self:IsGround() or self:IsShip() then + return true + end + + return false +end + --- Openfire. -- @param #GROUP self -- @return #GROUP self @@ -866,10 +959,30 @@ function GROUP:OptionROEOpenFire() local Controller = self:_GetController() - Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.OPEN_FIRE ) + elseif self:IsGround() then + Controller:setOption( AI.Option.Ground.id.ROE, AI.Option.Ground.val.ROE.OPEN_FIRE ) + elseif self:IsShip() then + Controller:setOption( AI.Option.Naval.id.ROE, AI.Option.Naval.val.ROE.OPEN_FIRE ) + end + return self end +--- Can the GROUP attack targets of opportunity? +-- @param #GROUP self +-- @return #boolean +function GROUP:OptionROEWeaponFreePossible() + self:F( { self.GroupName } ) + + if self:IsAir() then + return true + end + + return false +end + --- Weapon free. -- @param #GROUP self -- @return #GROUP self @@ -878,10 +991,27 @@ function GROUP:OptionROEWeaponFree() local Controller = self:_GetController() - Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_FREE ) + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.ROE, AI.Option.Air.val.ROE.WEAPON_FREE ) + end + return self end +--- Can the GROUP ignore enemy fire? +-- @param #GROUP self +-- @return #boolean +function GROUP:OptionROTNoReactionPossible() + self:F( { self.GroupName } ) + + if self:IsAir() then + return true + end + + return false +end + + --- No evasion on enemy threats. -- @param #GROUP self -- @return #GROUP self @@ -890,10 +1020,26 @@ function GROUP:OptionROTNoReaction() local Controller = self:_GetController() - Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.NO_REACTION ) + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.NO_REACTION ) + end + return self end +--- Can the GROUP evade using passive defenses? +-- @param #GROUP self +-- @return #boolean +function GROUP:OptionROTPassiveDefensePossible() + self:F( { self.GroupName } ) + + if self:IsAir() then + return true + end + + return false +end + --- Evasion passive defense. -- @param #GROUP self -- @return #GROUP self @@ -902,11 +1048,28 @@ function GROUP:OptionROTPassiveDefense() local Controller = self:_GetController() - Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.PASSIVE_DEFENCE ) + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.PASSIVE_DEFENCE ) + end + return self end ---- Evade fire. +--- Can the GROUP evade on enemy fire? +-- @param #GROUP self +-- @return #boolean +function GROUP:OptionROTEvadeFirePossible() + self:F( { self.GroupName } ) + + if self:IsAir() then + return true + end + + return false +end + + +--- Evade on fire. -- @param #GROUP self -- @return #GROUP self function GROUP:OptionROTEvadeFire() @@ -914,11 +1077,28 @@ function GROUP:OptionROTEvadeFire() local Controller = self:_GetController() - Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.EVADE_FIRE ) + end + return self end ---- Vertical manoeuvres. +--- Can the GROUP evade on fire using vertical manoeuvres? +-- @param #GROUP self +-- @return #boolean +function GROUP:OptionROTVerticalPossible() + self:F( { self.GroupName } ) + + if self:IsAir() then + return true + end + + return false +end + + +--- Evade on fire using vertical manoeuvres. -- @param #GROUP self -- @return #GROUP self function GROUP:OptionROTVertical() @@ -926,7 +1106,10 @@ function GROUP:OptionROTVertical() local Controller = self:_GetController() - Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.BYPASS_AND_ESCAPE ) + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.BYPASS_AND_ESCAPE ) + end + return self end diff --git a/Moose/Unit.lua b/Moose/Unit.lua index 67089077a..4de97bb7f 100644 --- a/Moose/Unit.lua +++ b/Moose/Unit.lua @@ -8,6 +8,8 @@ Include.File( "Message" ) --- The UNIT class -- @type UNIT -- @Extends Base#BASE +-- @field #UNIT.FlareColor FlareColor +-- @field #UNIT.SmokeColor SmokeColor UNIT = { ClassName="UNIT", CategoryName = { @@ -16,8 +18,36 @@ UNIT = { [Unit.Category.GROUND_UNIT] = "Ground Unit", [Unit.Category.SHIP] = "Ship", [Unit.Category.STRUCTURE] = "Structure", - } + }, + FlareColor = { + Green = trigger.flareColor.Green, + Red = trigger.flareColor.Red, + White = trigger.flareColor.White, + Yellow = trigger.flareColor.Yellow + }, + SmokeColor = { + Green = trigger.smokeColor.Green, + Red = trigger.smokeColor.Red, + White = trigger.smokeColor.White, + Orange = trigger.smokeColor.Orange, + Blue = trigger.smokeColor.Blue + }, } + +--- FlareColor +-- @type UNIT.FlareColor +-- @field Green +-- @field Red +-- @field White +-- @field Yellow + +--- SmokeColor +-- @type UNIT.SmokeColor +-- @field Green +-- @field Red +-- @field White +-- @field Orange +-- @field Blue function UNIT:New( DCSUnit ) local self = BASE:Inherit( self, BASE:New() ) @@ -124,3 +154,81 @@ function UNIT:GetCategoryName() return self.CategoryName[ self.DCSUnit:getDesc().category ] end +--- Signal a flare at the position of the UNIT. +-- @param #UNIT self +function UNIT:Flare( FlareColor ) + self:F() + trigger.action.signalFlare( self:GetPositionVec3(), FlareColor , 0 ) +end + +--- Signal a white flare at the position of the UNIT. +-- @param #UNIT self +function UNIT:FlareWhite() + self:F() + trigger.action.signalFlare( self:GetPositionVec3(), trigger.flareColor.White , 0 ) +end + +--- Signal a yellow flare at the position of the UNIT. +-- @param #UNIT self +function UNIT:FlareYellow() + self:F() + trigger.action.signalFlare( self:GetPositionVec3(), trigger.flareColor.Yellow , 0 ) +end + +--- Signal a green flare at the position of the UNIT. +-- @param #UNIT self +function UNIT:FlareGreen() + self:F() + trigger.action.signalFlare( self:GetPositionVec3(), trigger.flareColor.Green , 0 ) +end + +--- Signal a red flare at the position of the UNIT. +-- @param #UNIT self +function UNIT:FlareRed() + self:F() + trigger.action.signalFlare( self:GetPositionVec3(), trigger.flareColor.Red, 0 ) +end + +--- Smoke the UNIT. +-- @param #UNIT self +function UNIT:Smoke( SmokeColor ) + self:F() + trigger.action.smoke( self:GetPositionVec3(), SmokeColor ) +end + +--- Smoke the UNIT Green. +-- @param #UNIT self +function UNIT:SmokeGreen() + self:F() + trigger.action.smoke( self:GetPositionVec3(), trigger.smokeColor.Green ) +end + +--- Smoke the UNIT Red. +-- @param #UNIT self +function UNIT:SmokeRed() + self:F() + trigger.action.smoke( self:GetPositionVec3(), trigger.smokeColor.Red ) +end + +--- Smoke the UNIT White. +-- @param #UNIT self +function UNIT:SmokeWhite() + self:F() + trigger.action.smoke( self:GetPositionVec3(), trigger.smokeColor.White ) +end + +--- Smoke the UNIT Orange. +-- @param #UNIT self +function UNIT:SmokeOrange() + self:F() + trigger.action.smoke( self:GetPositionVec3(), trigger.smokeColor.Orange ) +end + +--- Smoke the UNIT Blue. +-- @param #UNIT self +function UNIT:SmokeBlue() + self:F() + trigger.action.smoke( self:GetPositionVec3(), trigger.smokeColor.Blue ) +end + + diff --git a/Test Missions/lua/MOOSE_Escort_Test_Follow.lua b/Test Missions/lua/MOOSE_Escort_Test_Follow.lua index 5bcce439c..fec7080f7 100644 --- a/Test Missions/lua/MOOSE_Escort_Test_Follow.lua +++ b/Test Missions/lua/MOOSE_Escort_Test_Follow.lua @@ -22,6 +22,14 @@ do local SpawnEscortPlane = SPAWN:New( "Escort Plane" ) local EscortGroupPlane = SpawnEscortPlane:Spawn() local EscortPlane = ESCORT:New( Client, EscortGroupPlane, "Escort Test Plane" ) + + local SpawnEscortGround = SPAWN:New( "Escort Ground" ) + local EscortGroupGround = SpawnEscortGround:Spawn() + local EscortGround = ESCORT:New( Client, EscortGroupGround, "Test Ground" ) + + local SpawnEscortShip = SPAWN:New( "Escort Ship" ) + local EscortGroupShip = SpawnEscortShip:Spawn() + local EscortShip = ESCORT:New( Client, EscortGroupShip, "Test Ship" ) end local EscortClientHeli = CLIENT:New( "Lead Helicopter", "Fly around and observe the behaviour of the escort helicopter" ):Alive( EventAliveHelicopter ) diff --git a/Test Missions/miz/MOOSE_Escort_Test_Follow.miz b/Test Missions/miz/MOOSE_Escort_Test_Follow.miz index 9c73feb6297b46e5cc3729416100f9c18d24e758..2114498ac97b904740ae7f607b676ae10d53ce3c 100644 GIT binary patch delta 41383 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 P06zf`5|W*=-*^8HOOUS^ delta 36857 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