From 25bd0f804968596467a1b96cffc2b3b2104c76a0 Mon Sep 17 00:00:00 2001 From: FlightControl Date: Mon, 6 Mar 2017 13:56:34 +0100 Subject: [PATCH] Fixed DETECTION_AREAS, working again and complete with test missions. --- Moose Development/Moose/Core/Zone.lua | 18 +++++-- .../Moose/Functional/Detection.lua | 24 ++++++--- .../l10n/DEFAULT/Moose.lua | 2 +- Moose Mission Setup/Moose.lua | 2 +- ...DET-255 - Detection AEAS with Destroys.lua | 46 ++++++++++++++++++ ...DET-255 - Detection AEAS with Destroys.miz | Bin 0 -> 26307 bytes ... A2G Task Dispatching DETECTION_AREAS.lua} | 18 ++++++- ... A2G Task Dispatching DETECTION_AREAS.miz} | Bin 8 files changed, 94 insertions(+), 16 deletions(-) create mode 100644 Moose Test Missions/DET - Detection/DET-255 - Detection AEAS with Destroys/DET-255 - Detection AEAS with Destroys.lua create mode 100644 Moose Test Missions/DET - Detection/DET-255 - Detection AEAS with Destroys/DET-255 - Detection AEAS with Destroys.miz rename Moose Test Missions/TAD - Task Dispatching/{TAD-010 - Task Dispatching Demo/TAD-010 - Task Dispatching Demo.lua => TAD-100 - A2G Task Dispatching DETECTION_AREAS/TAD-100 - A2G Task Dispatching DETECTION_AREAS.lua} (50%) rename Moose Test Missions/TAD - Task Dispatching/{TAD-010 - Task Dispatching Demo/TAD-010 - Task Dispatching Demo.miz => TAD-100 - A2G Task Dispatching DETECTION_AREAS/TAD-100 - A2G Task Dispatching DETECTION_AREAS.miz} (100%) diff --git a/Moose Development/Moose/Core/Zone.lua b/Moose Development/Moose/Core/Zone.lua index c326ca938..4d6692341 100644 --- a/Moose Development/Moose/Core/Zone.lua +++ b/Moose Development/Moose/Core/Zone.lua @@ -404,8 +404,9 @@ end --- Bounds the zone with tires. -- @param #ZONE_RADIUS self -- @param #number Points (optional) The amount of points in the circle. +-- @param #boolean UnBound If true the tyres will be destroyed. -- @return #ZONE_RADIUS self -function ZONE_RADIUS:BoundZone( Points ) +function ZONE_RADIUS:BoundZone( Points, UnBound ) local Point = {} local Vec2 = self:GetVec2() @@ -434,7 +435,10 @@ function ZONE_RADIUS:BoundZone( Points ) ["heading"] = 0, } -- end of ["group"] - coalition.addStaticObject( country.id.USA, Tire ) + local Group = coalition.addStaticObject( country.id.USA, Tire ) + if UnBound and UnBound == true then + Group:destroy() + end end return self @@ -867,8 +871,9 @@ end --- Smokes the zone boundaries in a color. -- @param #ZONE_POLYGON_BASE self +-- @param #boolean UnBound If true, the tyres will be destroyed. -- @return #ZONE_POLYGON_BASE self -function ZONE_POLYGON_BASE:BoundZone( ) +function ZONE_POLYGON_BASE:BoundZone( UnBound ) local i local j @@ -897,8 +902,11 @@ function ZONE_POLYGON_BASE:BoundZone( ) ["name"] = string.format( "%s-Tire #%0d", self:GetName(), ((i - 1) * Segments) + Segment ), ["heading"] = 0, } -- end of ["group"] - - coalition.addStaticObject( country.id.USA, Tire ) + + local Group = coalition.addStaticObject( country.id.USA, Tire ) + if UnBound and UnBound == true then + Group:destroy() + end end j = i diff --git a/Moose Development/Moose/Functional/Detection.lua b/Moose Development/Moose/Functional/Detection.lua index 34e909740..d1b9d443a 100644 --- a/Moose Development/Moose/Functional/Detection.lua +++ b/Moose Development/Moose/Functional/Detection.lua @@ -934,8 +934,8 @@ do -- DETECTION_BASE -- @param #number DetectedItemIndex The index or position in the DetectedItems list where the item needs to be removed. function DETECTION_BASE:RemoveDetectedItem( DetectedItemIndex ) - self.DetectedItemCount = self.DetectedItemCount + 1 - self.DetectedItems[self.DetectedItemIndex] = nil + self.DetectedItemCount = self.DetectedItemCount - 1 + self.DetectedItems[DetectedItemIndex] = nil end @@ -1734,21 +1734,26 @@ do -- DETECTION_AREAS function DETECTION_AREAS:CreateDetectionSets() self:F2() + + self:T( "Checking Detected Items for new Detected Units ..." ) -- First go through all detected sets, and check if there are new detected units, match all existing detected units and identify undetected units. -- Regroup when needed, split groups when needed. - for DetectedAreaID, DetectedAreaData in ipairs( self.DetectedItems ) do + for DetectedAreaID, DetectedAreaData in pairs( self.DetectedItems ) do local DetectedArea = DetectedAreaData -- #DETECTION_AREAS.DetectedArea if DetectedArea then + self:T( { "Detected Area ID:", DetectedAreaID } ) + + local DetectedSet = DetectedArea.Set local AreaExists = false -- This flag will determine of the detected area is still existing. -- First test if the center unit is detected in the detection area. - self:T3( DetectedArea.Zone.ZoneUNIT.UnitName ) + self:T3( { "Zone Center Unit:", DetectedArea.Zone.ZoneUNIT.UnitName } ) local DetectedZoneObject = self:GetDetectedObject( DetectedArea.Zone.ZoneUNIT.UnitName ) - self:T3( { "Detecting Zone Object", DetectedArea.AreaID, DetectedArea.Zone, DetectedZoneObject } ) + self:T3( { "Detected Zone Object:", DetectedArea.Zone:GetName(), DetectedZoneObject } ) if DetectedZoneObject then @@ -1776,6 +1781,8 @@ do -- DETECTION_AREAS self:IdentifyDetectedObject( DetectedObject ) AreaExists = true + DetectedArea.Zone:BoundZone( 30, true) + -- Assign the Unit as the new center unit of the detected area. DetectedArea.Zone = ZONE_UNIT:New( DetectedUnit:GetName(), DetectedUnit, self.DetectionZoneRange ) @@ -1827,7 +1834,8 @@ do -- DETECTION_AREAS end end else - self:RemoveDetectedArea( DetectedAreaID ) + DetectedArea.Zone:BoundZone( 30, true) + self:RemoveDetectedItem( DetectedAreaID ) self:AddChangeArea( DetectedArea, "RA" ) end end @@ -1851,7 +1859,7 @@ do -- DETECTION_AREAS local AddedToDetectionArea = false - for DetectedAreaID, DetectedAreaData in ipairs( self.DetectedItems ) do + for DetectedAreaID, DetectedAreaData in pairs( self.DetectedItems ) do local DetectedArea = DetectedAreaData -- #DETECTION_AREAS.DetectedArea if DetectedArea then @@ -1883,7 +1891,7 @@ do -- DETECTION_AREAS -- Now all the tests should have been build, now make some smoke and flares... -- We also report here the friendlies within the detected areas. - for DetectedAreaID, DetectedAreaData in ipairs( self.DetectedItems ) do + for DetectedAreaID, DetectedAreaData in pairs( self.DetectedItems ) do local DetectedArea = DetectedAreaData -- #DETECTION_AREAS.DetectedArea local DetectedSet = DetectedArea.Set 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 83141d02b..7c70471f7 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 DYNAMIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20170305_1029' ) +env.info( 'Moose Generation Timestamp: 20170306_1309' ) local base = _G diff --git a/Moose Mission Setup/Moose.lua b/Moose Mission Setup/Moose.lua index 83141d02b..7c70471f7 100644 --- a/Moose Mission Setup/Moose.lua +++ b/Moose Mission Setup/Moose.lua @@ -1,5 +1,5 @@ env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20170305_1029' ) +env.info( 'Moose Generation Timestamp: 20170306_1309' ) local base = _G diff --git a/Moose Test Missions/DET - Detection/DET-255 - Detection AEAS with Destroys/DET-255 - Detection AEAS with Destroys.lua b/Moose Test Missions/DET - Detection/DET-255 - Detection AEAS with Destroys/DET-255 - Detection AEAS with Destroys.lua new file mode 100644 index 000000000..81a0b4930 --- /dev/null +++ b/Moose Test Missions/DET - Detection/DET-255 - Detection AEAS with Destroys/DET-255 - Detection AEAS with Destroys.lua @@ -0,0 +1,46 @@ +--- +-- Name: DET-255 - Detection AEAS with Destroys +-- Author: FlightControl +-- Date Created: 06 Mar 2017 +-- +-- # Situation: +-- +-- A small blue vehicle with laser detection methods is detecting targets. +-- Targets are grouped within areas. A detection range and zone range is given to group the detected units. +-- This demo will group red vehicles in areas. One vehicle is diving from one group to the other. +-- After 30 seconds, one vehicle is destroyed in a zone. +-- After 60 seconds, a vehicle is destroyed that is a leader of a zone. +-- After 90 seconds, all vehicles are destroyed in a zone. +-- +-- # Test cases: +-- +-- 1. Observe the flaring of the areas formed +-- 2. Observe the smoking of the units detected +-- 3. Observe the areas being flexibly changed very detection run. +-- 4. The truck driving from the one group to the other, will leave the first area, and will join the second. +-- 5. While driving in between the areas, it will have a separate area. +-- 6. Observe the correct removal or relocation of the ZONEs. + +local FACSetGroup = SET_GROUP:New():FilterPrefixes( "FAC Group" ):FilterStart() + +local FACDetection = DETECTION_AREAS:New( FACSetGroup, 150, 250 ):BoundDetectedZones():SmokeDetectedUnits() + +FACDetection:__Start( 5 ) + +SCHEDULER:New( nil,function() + local Target = UNIT:FindByName( "Target #004") + Target:Destroy() + end, {}, 30 + ) + +SCHEDULER:New( nil,function() + local Target = UNIT:FindByName( "Target #006") + Target:Destroy() + end, {}, 60 + ) + +SCHEDULER:New( nil,function() + local Target = UNIT:FindByName( "Target #007") + Target:Destroy() + end, {}, 90 + ) \ No newline at end of file diff --git a/Moose Test Missions/DET - Detection/DET-255 - Detection AEAS with Destroys/DET-255 - Detection AEAS with Destroys.miz b/Moose Test Missions/DET - Detection/DET-255 - Detection AEAS with Destroys/DET-255 - Detection AEAS with Destroys.miz new file mode 100644 index 0000000000000000000000000000000000000000..728ae7ba4f2d2d7f26dda4ad34a0952e318e8f88 GIT binary patch literal 26307 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 literal 0 HcmV?d00001 diff --git a/Moose Test Missions/TAD - Task Dispatching/TAD-010 - Task Dispatching Demo/TAD-010 - Task Dispatching Demo.lua b/Moose Test Missions/TAD - Task Dispatching/TAD-100 - A2G Task Dispatching DETECTION_AREAS/TAD-100 - A2G Task Dispatching DETECTION_AREAS.lua similarity index 50% rename from Moose Test Missions/TAD - Task Dispatching/TAD-010 - Task Dispatching Demo/TAD-010 - Task Dispatching Demo.lua rename to Moose Test Missions/TAD - Task Dispatching/TAD-100 - A2G Task Dispatching DETECTION_AREAS/TAD-100 - A2G Task Dispatching DETECTION_AREAS.lua index 7421bc158..0b2db4599 100644 --- a/Moose Test Missions/TAD - Task Dispatching/TAD-010 - Task Dispatching Demo/TAD-010 - Task Dispatching Demo.lua +++ b/Moose Test Missions/TAD - Task Dispatching/TAD-100 - A2G Task Dispatching DETECTION_AREAS/TAD-100 - A2G Task Dispatching DETECTION_AREAS.lua @@ -1,4 +1,20 @@ - +--- +-- Name: TAD-100 - A2G Task Dispatching DETECTION_AREAS +-- Author: FlightControl +-- Date Created: 06 Mar 2017 +-- +-- # Situation: +-- +-- This mission demonstrates the dynamic task dispatching for Air to Ground operations. +-- FACA's and FAC's are patrolling around the battle zone, while detecting targets. +-- The detection method used is the DETECTION_AREAS method, which groups detected targets into zones. +-- +-- # Test cases: +-- +-- 1. Observe the FAC(A)'s detecting targets and grouping them. +-- For test, each zone will have a circle of tyres, that are visible on the map too. +-- 2. Check that the HQ provides menus to engage on a task set by the FACs. +-- local HQ = GROUP:FindByName( "HQ", "Bravo HQ" ) local CommandCenter = COMMANDCENTER:New( HQ, "Lima" ) diff --git a/Moose Test Missions/TAD - Task Dispatching/TAD-010 - Task Dispatching Demo/TAD-010 - Task Dispatching Demo.miz b/Moose Test Missions/TAD - Task Dispatching/TAD-100 - A2G Task Dispatching DETECTION_AREAS/TAD-100 - A2G Task Dispatching DETECTION_AREAS.miz similarity index 100% rename from Moose Test Missions/TAD - Task Dispatching/TAD-010 - Task Dispatching Demo/TAD-010 - Task Dispatching Demo.miz rename to Moose Test Missions/TAD - Task Dispatching/TAD-100 - A2G Task Dispatching DETECTION_AREAS/TAD-100 - A2G Task Dispatching DETECTION_AREAS.miz