From 32c5227d7147146afb4ef10d80f0cddc1c2a15a3 Mon Sep 17 00:00:00 2001 From: FlightControl Date: Mon, 20 Mar 2017 12:53:36 +0100 Subject: [PATCH] Updated stuff in tasking -- SET improved -- Resolved bug with destroy scoring not granted. -- Implemented LL for all detection reports -- Testing -- Added test mission TAD-220 for DETECTION_TYPES testing. --- Moose Development/Moose/Core/Fsm.lua | 12 +- Moose Development/Moose/Core/Set.lua | 469 ++++++++------- .../Moose/Functional/Detection.lua | 41 +- .../Moose/Tasking/CommandCenter.lua | 10 +- Moose Development/Moose/Tasking/Task.lua | 3 +- Moose Development/Moose/Tasking/Task_A2G.lua | 3 + .../Moose/Tasking/Task_A2G_Dispatcher.lua | 8 +- .../l10n/DEFAULT/Moose.lua | 548 +++++++++-------- Moose Mission Setup/Moose.lua | 548 +++++++++-------- Moose Presentations/SET.pptx | Bin 0 -> 5106622 bytes Moose Presentations/TASK_DISPATCHER.pptx | Bin 10047754 -> 10049766 bytes ...10 - A2G Task Dispatching Destroy Test.miz | Bin 258720 -> 259106 bytes ...- A2G Task Dispatching DETECTION_AREAS.miz | Bin 252733 -> 253119 bytes ...- A2G Task Dispatching DETECTION_AREAS.miz | Bin 259782 -> 260168 bytes ...- A2G Task Dispatching DETECTION_TYPES.miz | Bin 254743 -> 255129 bytes ...- A2G Task Dispatching DETECTION_UNITS.miz | Bin 270964 -> 271350 bytes ...00 - A2G Task Dispatching with SCORING.miz | Bin 260697 -> 261083 bytes ...k Dispatching #1 for AREAS and SCORING.miz | Bin 262812 -> 0 bytes ...ask Dispatching per AREAS and SCORING.lua} | 2 +- ...Task Dispatching per AREAS and SCORING.miz | Bin 0 -> 264616 bytes ... Task Dispatching per TYPE and SCORING.lua | 64 ++ ... Task Dispatching per TYPE and SCORING.miz | Bin 0 -> 261266 bytes docs/Documentation/AI_Patrol.html | 3 + docs/Documentation/Cargo.html | 1 + docs/Documentation/CommandCenter.html | 20 +- docs/Documentation/Detection.html | 4 +- docs/Documentation/Fsm.html | 12 +- docs/Documentation/Point.html | 1 - docs/Documentation/Set.html | 552 ++++++++++-------- docs/Documentation/Spawn.html | 12 +- docs/Documentation/index.html | 2 +- docs/Presentations/SET/Dia1.JPG | Bin 0 -> 214968 bytes 32 files changed, 1344 insertions(+), 971 deletions(-) create mode 100644 Moose Presentations/SET.pptx delete mode 100644 Moose Test Missions/TAD - Task Dispatching/TAD-210 - A2G Task Dispatching #1 for AREAS and SCORING/TAD-210 - A2G Task Dispatching #1 for AREAS and SCORING.miz rename Moose Test Missions/TAD - Task Dispatching/{TAD-210 - A2G Task Dispatching #1 for AREAS and SCORING/TAD-210 - A2G Task Dispatching #1 for AREAS and SCORING.lua => TAD-210 - A2G Task Dispatching per AREAS and SCORING/TAD-210 - A2G Task Dispatching per AREAS and SCORING.lua} (97%) create mode 100644 Moose Test Missions/TAD - Task Dispatching/TAD-210 - A2G Task Dispatching per AREAS and SCORING/TAD-210 - A2G Task Dispatching per AREAS and SCORING.miz create mode 100644 Moose Test Missions/TAD - Task Dispatching/TAD-220 - A2G Task Dispatching per TYPE and SCORING/TAD-220 - A2G Task Dispatching per TYPE and SCORING.lua create mode 100644 Moose Test Missions/TAD - Task Dispatching/TAD-220 - A2G Task Dispatching per TYPE and SCORING/TAD-220 - A2G Task Dispatching per TYPE and SCORING.miz create mode 100644 docs/Presentations/SET/Dia1.JPG diff --git a/Moose Development/Moose/Core/Fsm.lua b/Moose Development/Moose/Core/Fsm.lua index eb3cfe937..ac2aebe86 100644 --- a/Moose Development/Moose/Core/Fsm.lua +++ b/Moose Development/Moose/Core/Fsm.lua @@ -420,7 +420,6 @@ do -- FSM for ProcessID, Process in pairs( self:GetProcesses() ) do if Process.From == From and Process.Event == Event then - self:T( Process ) return Process.fsm end end @@ -449,7 +448,7 @@ do -- FSM -- @param #number Score is a number providing the score of the status. -- @return #FSM self function FSM:AddScore( State, ScoreText, Score ) - self:F2( { State, ScoreText, Score } ) + self:F( { State, ScoreText, Score } ) self._Scores[State] = self._Scores[State] or {} self._Scores[State].ScoreText = ScoreText @@ -467,14 +466,15 @@ do -- FSM -- @param #number Score is a number providing the score of the status. -- @return #FSM self function FSM:AddScoreProcess( From, Event, State, ScoreText, Score ) - self:F2( { Event, State, ScoreText, Score } ) + self:F( { From, Event, State, ScoreText, Score } ) local Process = self:GetProcess( From, Event ) - self:T( { Process = Process._Name, Scores = Process._Scores, State = State, ScoreText = ScoreText, Score = Score } ) Process._Scores[State] = Process._Scores[State] or {} Process._Scores[State].ScoreText = ScoreText Process._Scores[State].Score = Score + + self:T( Process._Scores ) return Process end @@ -1047,14 +1047,14 @@ end -- @param #string Event -- @param #string From -- @param #string To - function FSM_PROCESS:onstatechange( ProcessUnit, From, Event, To, Dummy ) + function FSM_PROCESS:onstatechange( ProcessUnit, Task, From, Event, To, Dummy ) self:T( { ProcessUnit, From, Event, To, Dummy, self:IsTrace() } ) if self:IsTrace() then MESSAGE:New( "@ Process " .. self:GetClassNameAndID() .. " : " .. Event .. " changed to state " .. To, 2 ):ToAll() end - self:T( self._Scores[To] ) + self:T( { Scores = self._Scores, To = To } ) -- TODO: This needs to be reworked with a callback functions allocated within Task, and set within the mission script from the Task Objects... if self._Scores[To] then diff --git a/Moose Development/Moose/Core/Set.lua b/Moose Development/Moose/Core/Set.lua index 936a9c373..81783a8a7 100644 --- a/Moose Development/Moose/Core/Set.lua +++ b/Moose Development/Moose/Core/Set.lua @@ -1,222 +1,27 @@ ---- **Core** - SET classes define **collections** of objects to perform **bulk actions** and logically **group** objects. +--- **Core** - SET_ classes define **collections** of objects to perform **bulk actions** and logically **group** objects. +-- +-- ![Banner Image](..\Presentations\SET\Dia1.JPG) -- -- === -- --- 1) @{Set#SET_BASE} class, extends @{Base#BASE} --- ============================================== --- The @{Set#SET_BASE} class defines the core functions that define a collection of objects. --- A SET provides iterators to iterate the SET, but will **temporarily** yield the ForEach interator loop at defined **"intervals"** to the mail simulator loop. --- In this way, large loops can be done while not blocking the simulator main processing loop. --- The default **"yield interval"** is after 10 objects processed. --- The default **"time interval"** is after 0.001 seconds. +-- SET_ classes group objects of the same type into a collection, which is either: -- --- 1.1) Add or remove objects from the SET --- --------------------------------------- --- Some key core functions are @{Set#SET_BASE.Add} and @{Set#SET_BASE.Remove} to add or remove objects from the SET in your logic. --- --- 1.2) Define the SET iterator **"yield interval"** and the **"time interval"** --- ----------------------------------------------------------------------------- --- Modify the iterator intervals with the @{Set#SET_BASE.SetInteratorIntervals} method. --- You can set the **"yield interval"**, and the **"time interval"**. (See above). --- --- === --- --- 2) @{Set#SET_GROUP} class, extends @{Set#SET_BASE} --- ================================================== --- Mission designers can use the @{Set#SET_GROUP} class to build sets of groups belonging to certain: --- --- * Coalitions --- * Categories --- * Countries --- * Starting with certain prefix strings. --- --- 2.1) SET_GROUP construction method: --- ----------------------------------- --- Create a new SET_GROUP object with the @{#SET_GROUP.New} method: --- --- * @{#SET_GROUP.New}: Creates a new SET_GROUP object. --- --- 2.2) Add or Remove GROUP(s) from SET_GROUP: --- ------------------------------------------- --- GROUPS can be added and removed using the @{Set#SET_GROUP.AddGroupsByName} and @{Set#SET_GROUP.RemoveGroupsByName} respectively. --- These methods take a single GROUP name or an array of GROUP names to be added or removed from SET_GROUP. --- --- 2.3) SET_GROUP filter criteria: --- ------------------------------- --- You can set filter criteria to define the set of groups within the SET_GROUP. --- Filter criteria are defined by: --- --- * @{#SET_GROUP.FilterCoalitions}: Builds the SET_GROUP with the groups belonging to the coalition(s). --- * @{#SET_GROUP.FilterCategories}: Builds the SET_GROUP with the groups belonging to the category(ies). --- * @{#SET_GROUP.FilterCountries}: Builds the SET_GROUP with the gruops belonging to the country(ies). --- * @{#SET_GROUP.FilterPrefixes}: Builds the SET_GROUP with the groups starting with the same prefix string(s). +-- * Manually managed using the **:Add...()** or **:Remove...()** methods. The initial SET can be filtered with the **@{#SET_BASE.FilterOnce}()** method +-- * Dynamically updated when new objects are created or objects are destroyed using the **@{#SET_BASE.FilterStart}()** method. -- --- Once the filter criteria have been set for the SET_GROUP, you can start filtering using: +-- Various types of SET_ classes are available: -- --- * @{#SET_GROUP.FilterStart}: Starts the filtering of the groups within the SET_GROUP and add or remove GROUP objects **dynamically**. +-- * @{#SET_UNIT}: Defines a colleciton of @{Unit}s filtered by filter criteria. +-- * @{#SET_GROUP}: Defines a collection of @{Group}s filtered by filter criteria. +-- * @{#SET_CLIENT}: Defines a collection of @{Client}s filterd by filter criteria. +-- * @{#SET_AIRBASE}: Defines a collection of @{Airbase}s filtered by filter criteria. -- --- Planned filter criteria within development are (so these are not yet available): +-- These classes are derived from @{#SET_BASE}, which contains the main methods to manage SETs. -- --- * @{#SET_GROUP.FilterZones}: Builds the SET_GROUP with the groups within a @{Zone#ZONE}. +-- A multitude of other methods are available in SET_ classes that allow to: -- --- 2.4) SET_GROUP iterators: --- ------------------------- --- Once the filters have been defined and the SET_GROUP has been built, you can iterate the SET_GROUP with the available iterator methods. --- The iterator methods will walk the SET_GROUP set, and call for each element within the set a function that you provide. --- The following iterator methods are currently available within the SET_GROUP: --- --- * @{#SET_GROUP.ForEachGroup}: Calls a function for each alive group it finds within the SET_GROUP. --- * @{#SET_GROUP.ForEachGroupCompletelyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. --- * @{#SET_GROUP.ForEachGroupPartlyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence partly in a @{Zone}, providing the GROUP and optional parameters to the called function. --- * @{#SET_GROUP.ForEachGroupNotInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. --- --- ==== --- --- 3) @{Set#SET_UNIT} class, extends @{Set#SET_BASE} --- =================================================== --- Mission designers can use the @{Set#SET_UNIT} class to build sets of units belonging to certain: --- --- * Coalitions --- * Categories --- * Countries --- * Unit types --- * Starting with certain prefix strings. --- --- 3.1) SET_UNIT construction method: --- ---------------------------------- --- Create a new SET_UNIT object with the @{#SET_UNIT.New} method: --- --- * @{#SET_UNIT.New}: Creates a new SET_UNIT object. --- --- 3.2) Add or Remove UNIT(s) from SET_UNIT: --- ----------------------------------------- --- UNITs can be added and removed using the @{Set#SET_UNIT.AddUnitsByName} and @{Set#SET_UNIT.RemoveUnitsByName} respectively. --- These methods take a single UNIT name or an array of UNIT names to be added or removed from SET_UNIT. --- --- 3.3) SET_UNIT filter criteria: --- ------------------------------ --- You can set filter criteria to define the set of units within the SET_UNIT. --- Filter criteria are defined by: --- --- * @{#SET_UNIT.FilterCoalitions}: Builds the SET_UNIT with the units belonging to the coalition(s). --- * @{#SET_UNIT.FilterCategories}: Builds the SET_UNIT with the units belonging to the category(ies). --- * @{#SET_UNIT.FilterTypes}: Builds the SET_UNIT with the units belonging to the unit type(s). --- * @{#SET_UNIT.FilterCountries}: Builds the SET_UNIT with the units belonging to the country(ies). --- * @{#SET_UNIT.FilterPrefixes}: Builds the SET_UNIT with the units starting with the same prefix string(s). --- --- Once the filter criteria have been set for the SET_UNIT, you can start filtering using: --- --- * @{#SET_UNIT.FilterStart}: Starts the filtering of the units within the SET_UNIT. --- --- Planned filter criteria within development are (so these are not yet available): --- --- * @{#SET_UNIT.FilterZones}: Builds the SET_UNIT with the units within a @{Zone#ZONE}. --- --- 3.4) SET_UNIT iterators: --- ------------------------ --- Once the filters have been defined and the SET_UNIT has been built, you can iterate the SET_UNIT with the available iterator methods. --- The iterator methods will walk the SET_UNIT set, and call for each element within the set a function that you provide. --- The following iterator methods are currently available within the SET_UNIT: --- --- * @{#SET_UNIT.ForEachUnit}: Calls a function for each alive unit it finds within the SET_UNIT. --- * @{#SET_GROUP.ForEachGroupCompletelyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. --- * @{#SET_GROUP.ForEachGroupNotInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. --- --- Planned iterators methods in development are (so these are not yet available): --- --- * @{#SET_UNIT.ForEachUnitInUnit}: Calls a function for each unit contained within the SET_UNIT. --- * @{#SET_UNIT.ForEachUnitCompletelyInZone}: Iterate and call an iterator function for each **alive** UNIT presence completely in a @{Zone}, providing the UNIT and optional parameters to the called function. --- * @{#SET_UNIT.ForEachUnitNotInZone}: Iterate and call an iterator function for each **alive** UNIT presence not in a @{Zone}, providing the UNIT and optional parameters to the called function. --- --- === --- --- 4) @{Set#SET_CLIENT} class, extends @{Set#SET_BASE} --- =================================================== --- Mission designers can use the @{Set#SET_CLIENT} class to build sets of units belonging to certain: --- --- * Coalitions --- * Categories --- * Countries --- * Client types --- * Starting with certain prefix strings. --- --- 4.1) SET_CLIENT construction method: --- ---------------------------------- --- Create a new SET_CLIENT object with the @{#SET_CLIENT.New} method: --- --- * @{#SET_CLIENT.New}: Creates a new SET_CLIENT object. --- --- 4.2) Add or Remove CLIENT(s) from SET_CLIENT: --- ----------------------------------------- --- CLIENTs can be added and removed using the @{Set#SET_CLIENT.AddClientsByName} and @{Set#SET_CLIENT.RemoveClientsByName} respectively. --- These methods take a single CLIENT name or an array of CLIENT names to be added or removed from SET_CLIENT. --- --- 4.3) SET_CLIENT filter criteria: --- ------------------------------ --- You can set filter criteria to define the set of clients within the SET_CLIENT. --- Filter criteria are defined by: --- --- * @{#SET_CLIENT.FilterCoalitions}: Builds the SET_CLIENT with the clients belonging to the coalition(s). --- * @{#SET_CLIENT.FilterCategories}: Builds the SET_CLIENT with the clients belonging to the category(ies). --- * @{#SET_CLIENT.FilterTypes}: Builds the SET_CLIENT with the clients belonging to the client type(s). --- * @{#SET_CLIENT.FilterCountries}: Builds the SET_CLIENT with the clients belonging to the country(ies). --- * @{#SET_CLIENT.FilterPrefixes}: Builds the SET_CLIENT with the clients starting with the same prefix string(s). --- --- Once the filter criteria have been set for the SET_CLIENT, you can start filtering using: --- --- * @{#SET_CLIENT.FilterStart}: Starts the filtering of the clients within the SET_CLIENT. --- --- Planned filter criteria within development are (so these are not yet available): --- --- * @{#SET_CLIENT.FilterZones}: Builds the SET_CLIENT with the clients within a @{Zone#ZONE}. --- --- 4.4) SET_CLIENT iterators: --- ------------------------ --- Once the filters have been defined and the SET_CLIENT has been built, you can iterate the SET_CLIENT with the available iterator methods. --- The iterator methods will walk the SET_CLIENT set, and call for each element within the set a function that you provide. --- The following iterator methods are currently available within the SET_CLIENT: --- --- * @{#SET_CLIENT.ForEachClient}: Calls a function for each alive client it finds within the SET_CLIENT. --- --- ==== --- --- 5) @{Set#SET_AIRBASE} class, extends @{Set#SET_BASE} --- ==================================================== --- Mission designers can use the @{Set#SET_AIRBASE} class to build sets of airbases optionally belonging to certain: --- --- * Coalitions --- --- 5.1) SET_AIRBASE construction --- ----------------------------- --- Create a new SET_AIRBASE object with the @{#SET_AIRBASE.New} method: --- --- * @{#SET_AIRBASE.New}: Creates a new SET_AIRBASE object. --- --- 5.2) Add or Remove AIRBASEs from SET_AIRBASE --- -------------------------------------------- --- AIRBASEs can be added and removed using the @{Set#SET_AIRBASE.AddAirbasesByName} and @{Set#SET_AIRBASE.RemoveAirbasesByName} respectively. --- These methods take a single AIRBASE name or an array of AIRBASE names to be added or removed from SET_AIRBASE. --- --- 5.3) SET_AIRBASE filter criteria --- -------------------------------- --- You can set filter criteria to define the set of clients within the SET_AIRBASE. --- Filter criteria are defined by: --- --- * @{#SET_AIRBASE.FilterCoalitions}: Builds the SET_AIRBASE with the airbases belonging to the coalition(s). --- --- Once the filter criteria have been set for the SET_AIRBASE, you can start filtering using: --- --- * @{#SET_AIRBASE.FilterStart}: Starts the filtering of the airbases within the SET_AIRBASE. --- --- 5.4) SET_AIRBASE iterators: --- --------------------------- --- Once the filters have been defined and the SET_AIRBASE has been built, you can iterate the SET_AIRBASE with the available iterator methods. --- The iterator methods will walk the SET_AIRBASE set, and call for each airbase within the set a function that you provide. --- The following iterator methods are currently available within the SET_AIRBASE: --- --- * @{#SET_AIRBASE.ForEachAirbase}: Calls a function for each airbase it finds within the SET_AIRBASE. --- --- ==== +-- * Validate the presence of objects in the SET. +-- * Trigger events when objects in the SET change a zone presence. -- -- ### Authors: -- @@ -228,7 +33,22 @@ -- @module Set ---- SET_BASE class +--- # 1) SET_BASE class, extends @{Base#BASE} +-- The @{Set#SET_BASE} class defines the core functions that define a collection of objects. +-- A SET provides iterators to iterate the SET, but will **temporarily** yield the ForEach interator loop at defined **"intervals"** to the mail simulator loop. +-- In this way, large loops can be done while not blocking the simulator main processing loop. +-- The default **"yield interval"** is after 10 objects processed. +-- The default **"time interval"** is after 0.001 seconds. +-- +-- ## 1.1) Add or remove objects from the SET +-- +-- Some key core functions are @{Set#SET_BASE.Add} and @{Set#SET_BASE.Remove} to add or remove objects from the SET in your logic. +-- +-- ## 1.2) Define the SET iterator **"yield interval"** and the **"time interval"** +-- +-- Modify the iterator intervals with the @{Set#SET_BASE.SetInteratorIntervals} method. +-- You can set the **"yield interval"**, and the **"time interval"**. (See above). +-- -- @type SET_BASE -- @field #table Filter -- @field #table Set @@ -442,7 +262,7 @@ end -- @return #number Count function SET_BASE:Count() - return #self.Index + return #self.Index or 0 end @@ -777,7 +597,55 @@ end -- SET_GROUP ---- SET_GROUP class +--- # 2) SET_GROUP class, extends @{Set#SET_BASE} +-- +-- Mission designers can use the @{Set#SET_GROUP} class to build sets of groups belonging to certain: +-- +-- * Coalitions +-- * Categories +-- * Countries +-- * Starting with certain prefix strings. +-- +-- ## 2.1) SET_GROUP constructor +-- +-- Create a new SET_GROUP object with the @{#SET_GROUP.New} method: +-- +-- * @{#SET_GROUP.New}: Creates a new SET_GROUP object. +-- +-- ## 2.2) Add or Remove GROUP(s) from SET_GROUP +-- +-- GROUPS can be added and removed using the @{Set#SET_GROUP.AddGroupsByName} and @{Set#SET_GROUP.RemoveGroupsByName} respectively. +-- These methods take a single GROUP name or an array of GROUP names to be added or removed from SET_GROUP. +-- +-- ## 2.3) SET_GROUP filter criteria +-- +-- You can set filter criteria to define the set of groups within the SET_GROUP. +-- Filter criteria are defined by: +-- +-- * @{#SET_GROUP.FilterCoalitions}: Builds the SET_GROUP with the groups belonging to the coalition(s). +-- * @{#SET_GROUP.FilterCategories}: Builds the SET_GROUP with the groups belonging to the category(ies). +-- * @{#SET_GROUP.FilterCountries}: Builds the SET_GROUP with the gruops belonging to the country(ies). +-- * @{#SET_GROUP.FilterPrefixes}: Builds the SET_GROUP with the groups starting with the same prefix string(s). +-- +-- Once the filter criteria have been set for the SET_GROUP, you can start filtering using: +-- +-- * @{#SET_GROUP.FilterStart}: Starts the filtering of the groups within the SET_GROUP and add or remove GROUP objects **dynamically**. +-- +-- Planned filter criteria within development are (so these are not yet available): +-- +-- * @{#SET_GROUP.FilterZones}: Builds the SET_GROUP with the groups within a @{Zone#ZONE}. +-- +-- ## 2.4) SET_GROUP iterators +-- +-- Once the filters have been defined and the SET_GROUP has been built, you can iterate the SET_GROUP with the available iterator methods. +-- The iterator methods will walk the SET_GROUP set, and call for each element within the set a function that you provide. +-- The following iterator methods are currently available within the SET_GROUP: +-- +-- * @{#SET_GROUP.ForEachGroup}: Calls a function for each alive group it finds within the SET_GROUP. +-- * @{#SET_GROUP.ForEachGroupCompletelyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- * @{#SET_GROUP.ForEachGroupPartlyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence partly in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- * @{#SET_GROUP.ForEachGroupNotInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- -- @type SET_GROUP -- @extends Core.Set#SET_BASE SET_GROUP = { @@ -1145,7 +1013,69 @@ function SET_GROUP:IsIncludeObject( MooseGroup ) return MooseGroupInclude end ---- SET_UNIT class +--- # 3) SET_UNIT class, extends @{Set#SET_BASE} +-- +-- Mission designers can use the SET_UNIT class to build sets of units belonging to certain: +-- +-- * Coalitions +-- * Categories +-- * Countries +-- * Unit types +-- * Starting with certain prefix strings. +-- +-- ## 3.1) SET_UNIT constructor +-- +-- Create a new SET_UNIT object with the @{#SET_UNIT.New} method: +-- +-- * @{#SET_UNIT.New}: Creates a new SET_UNIT object. +-- +-- ## 3.2) Add or Remove UNIT(s) from SET_UNIT +-- +-- UNITs can be added and removed using the @{Set#SET_UNIT.AddUnitsByName} and @{Set#SET_UNIT.RemoveUnitsByName} respectively. +-- These methods take a single UNIT name or an array of UNIT names to be added or removed from SET_UNIT. +-- +-- ## 3.3) SET_UNIT filter criteria +-- +-- You can set filter criteria to define the set of units within the SET_UNIT. +-- Filter criteria are defined by: +-- +-- * @{#SET_UNIT.FilterCoalitions}: Builds the SET_UNIT with the units belonging to the coalition(s). +-- * @{#SET_UNIT.FilterCategories}: Builds the SET_UNIT with the units belonging to the category(ies). +-- * @{#SET_UNIT.FilterTypes}: Builds the SET_UNIT with the units belonging to the unit type(s). +-- * @{#SET_UNIT.FilterCountries}: Builds the SET_UNIT with the units belonging to the country(ies). +-- * @{#SET_UNIT.FilterPrefixes}: Builds the SET_UNIT with the units starting with the same prefix string(s). +-- +-- Once the filter criteria have been set for the SET_UNIT, you can start filtering using: +-- +-- * @{#SET_UNIT.FilterStart}: Starts the filtering of the units within the SET_UNIT. +-- +-- Planned filter criteria within development are (so these are not yet available): +-- +-- * @{#SET_UNIT.FilterZones}: Builds the SET_UNIT with the units within a @{Zone#ZONE}. +-- +-- ## 3.4) SET_UNIT iterators +-- +-- Once the filters have been defined and the SET_UNIT has been built, you can iterate the SET_UNIT with the available iterator methods. +-- The iterator methods will walk the SET_UNIT set, and call for each element within the set a function that you provide. +-- The following iterator methods are currently available within the SET_UNIT: +-- +-- * @{#SET_UNIT.ForEachUnit}: Calls a function for each alive unit it finds within the SET_UNIT. +-- * @{#SET_GROUP.ForEachGroupCompletelyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- * @{#SET_GROUP.ForEachGroupNotInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- +-- Planned iterators methods in development are (so these are not yet available): +-- +-- * @{#SET_UNIT.ForEachUnitInUnit}: Calls a function for each unit contained within the SET_UNIT. +-- * @{#SET_UNIT.ForEachUnitCompletelyInZone}: Iterate and call an iterator function for each **alive** UNIT presence completely in a @{Zone}, providing the UNIT and optional parameters to the called function. +-- * @{#SET_UNIT.ForEachUnitNotInZone}: Iterate and call an iterator function for each **alive** UNIT presence not in a @{Zone}, providing the UNIT and optional parameters to the called function. +-- +-- ## 3.5 ) SET_UNIT atomic methods +-- +-- Various methods exist for a SET_UNIT to perform actions or calculations and retrieve results from the SET_UNIT: +-- +-- * @{#SET_UNIT.GetTypeNames}(): Retrieve the type names of the @{Unit}s in the SET, delimited by a comma. +-- +-- -- @type SET_UNIT -- @extends Core.Set#SET_BASE SET_UNIT = { @@ -1759,9 +1689,81 @@ function SET_UNIT:IsIncludeObject( MUnit ) end +--- Retrieve the type names of the @{Unit}s in the SET, delimited by an optional delimiter. +-- @param #SET_UNIT self +-- @param #string Delimiter (optional) The delimiter, which is default a comma. +-- @return #string The types of the @{Unit}s delimited. +function SET_UNIT:GetTypeNames( Delimiter ) + + Delimiter = Delimiter or ", " + local TypeReport = REPORT:New() + local Types = {} + + for UnitName, UnitData in pairs( self:GetSet() ) do + + local Unit = UnitData -- Wrapper.Unit#UNIT + local UnitTypeName = Unit:GetTypeName() + + if not Types[UnitTypeName] then + Types[UnitTypeName] = UnitTypeName + TypeReport:Add( UnitTypeName ) + end + end + + return TypeReport:Text( Delimiter ) +end + + --- SET_CLIENT ---- SET_CLIENT class +--- # 4) SET_CLIENT class, extends @{Set#SET_BASE} +-- +-- Mission designers can use the @{Set#SET_CLIENT} class to build sets of units belonging to certain: +-- +-- * Coalitions +-- * Categories +-- * Countries +-- * Client types +-- * Starting with certain prefix strings. +-- +-- ## 4.1) SET_CLIENT constructor +-- +-- Create a new SET_CLIENT object with the @{#SET_CLIENT.New} method: +-- +-- * @{#SET_CLIENT.New}: Creates a new SET_CLIENT object. +-- +-- ## 4.2) Add or Remove CLIENT(s) from SET_CLIENT +-- +-- CLIENTs can be added and removed using the @{Set#SET_CLIENT.AddClientsByName} and @{Set#SET_CLIENT.RemoveClientsByName} respectively. +-- These methods take a single CLIENT name or an array of CLIENT names to be added or removed from SET_CLIENT. +-- +-- ## 4.3) SET_CLIENT filter criteria +-- +-- You can set filter criteria to define the set of clients within the SET_CLIENT. +-- Filter criteria are defined by: +-- +-- * @{#SET_CLIENT.FilterCoalitions}: Builds the SET_CLIENT with the clients belonging to the coalition(s). +-- * @{#SET_CLIENT.FilterCategories}: Builds the SET_CLIENT with the clients belonging to the category(ies). +-- * @{#SET_CLIENT.FilterTypes}: Builds the SET_CLIENT with the clients belonging to the client type(s). +-- * @{#SET_CLIENT.FilterCountries}: Builds the SET_CLIENT with the clients belonging to the country(ies). +-- * @{#SET_CLIENT.FilterPrefixes}: Builds the SET_CLIENT with the clients starting with the same prefix string(s). +-- +-- Once the filter criteria have been set for the SET_CLIENT, you can start filtering using: +-- +-- * @{#SET_CLIENT.FilterStart}: Starts the filtering of the clients within the SET_CLIENT. +-- +-- Planned filter criteria within development are (so these are not yet available): +-- +-- * @{#SET_CLIENT.FilterZones}: Builds the SET_CLIENT with the clients within a @{Zone#ZONE}. +-- +-- ## 4.4) SET_CLIENT iterators +-- +-- Once the filters have been defined and the SET_CLIENT has been built, you can iterate the SET_CLIENT with the available iterator methods. +-- The iterator methods will walk the SET_CLIENT set, and call for each element within the set a function that you provide. +-- The following iterator methods are currently available within the SET_CLIENT: +-- +-- * @{#SET_CLIENT.ForEachClient}: Calls a function for each alive client it finds within the SET_CLIENT. +-- -- @type SET_CLIENT -- @extends Core.Set#SET_BASE SET_CLIENT = { @@ -2118,7 +2120,42 @@ end --- SET_AIRBASE ---- SET_AIRBASE class +--- # 5) SET_AIRBASE class, extends @{Set#SET_BASE} +-- +-- Mission designers can use the @{Set#SET_AIRBASE} class to build sets of airbases optionally belonging to certain: +-- +-- * Coalitions +-- +-- ## 5.1) SET_AIRBASE constructor +-- +-- Create a new SET_AIRBASE object with the @{#SET_AIRBASE.New} method: +-- +-- * @{#SET_AIRBASE.New}: Creates a new SET_AIRBASE object. +-- +-- ## 5.2) Add or Remove AIRBASEs from SET_AIRBASE +-- +-- AIRBASEs can be added and removed using the @{Set#SET_AIRBASE.AddAirbasesByName} and @{Set#SET_AIRBASE.RemoveAirbasesByName} respectively. +-- These methods take a single AIRBASE name or an array of AIRBASE names to be added or removed from SET_AIRBASE. +-- +-- ## 5.3) SET_AIRBASE filter criteria +-- +-- You can set filter criteria to define the set of clients within the SET_AIRBASE. +-- Filter criteria are defined by: +-- +-- * @{#SET_AIRBASE.FilterCoalitions}: Builds the SET_AIRBASE with the airbases belonging to the coalition(s). +-- +-- Once the filter criteria have been set for the SET_AIRBASE, you can start filtering using: +-- +-- * @{#SET_AIRBASE.FilterStart}: Starts the filtering of the airbases within the SET_AIRBASE. +-- +-- ## 5.4) SET_AIRBASE iterators +-- +-- Once the filters have been defined and the SET_AIRBASE has been built, you can iterate the SET_AIRBASE with the available iterator methods. +-- The iterator methods will walk the SET_AIRBASE set, and call for each airbase within the set a function that you provide. +-- The following iterator methods are currently available within the SET_AIRBASE: +-- +-- * @{#SET_AIRBASE.ForEachAirbase}: Calls a function for each airbase it finds within the SET_AIRBASE. +-- -- @type SET_AIRBASE -- @extends Core.Set#SET_BASE SET_AIRBASE = { diff --git a/Moose Development/Moose/Functional/Detection.lua b/Moose Development/Moose/Functional/Detection.lua index 43196e575..7f91b1d9f 100644 --- a/Moose Development/Moose/Functional/Detection.lua +++ b/Moose Development/Moose/Functional/Detection.lua @@ -1073,7 +1073,7 @@ do -- DETECTION_BASE --- Get a detected item using a given numeric index. -- @param #DETECTION_BASE self -- @param #number Index - -- @return DETECTION_BASE.DetectedItem + -- @return #DETECTION_BASE.DetectedItem function DETECTION_BASE:GetDetectedItem( Index ) local DetectedItem = self.DetectedItems[Index] @@ -1336,7 +1336,7 @@ do -- DETECTION_UNITS local DetectedItemUnit = DetectedSet:GetFirst() -- Wrapper.Unit#UNIT - if DetectedItemUnit then + if DetectedItemUnit and DetectedItemUnit:IsAlive() then self:T(DetectedItemUnit) local UnitCategoryName = DetectedItemUnit:GetCategoryName() or "" @@ -1354,8 +1354,16 @@ do -- DETECTION_UNITS UnitDistanceText = string.format( "%.2f", DetectedItem.Distance ) .. " km, visual contact" end + local DetectedItemPointVec3 = DetectedItemUnit:GetPointVec3() + local DetectedItemPointLL = DetectedItemPointVec3:ToStringLL( 3, true ) + + local ThreatLevelA2G = DetectedItemUnit:GetThreatLevel( DetectedItem ) + ReportSummary = string.format( - "%s%s", + "%s - Threat [%s] (%2d) - %s%s", + DetectedItemPointLL, + string.rep( "■", ThreatLevelA2G ), + ThreatLevelA2G, UnitCategoryText, UnitDistanceText ) @@ -1470,10 +1478,10 @@ do -- DETECTION_TYPES for DetectedItemID, DetectedItem in pairs( self.DetectedItems ) do - local DetectedItemSet = DetectedItem:GetSet() -- Core.Set#SET_UNIT + local DetectedItemSet = DetectedItem.Set -- Core.Set#SET_UNIT local DetectedTypeName = DetectedItem.Type - for DetectedUnitName, DetectedUnitData in pairs( DetectedItemSet ) do + for DetectedUnitName, DetectedUnitData in pairs( DetectedItemSet:GetSet() ) do local DetectedUnit = DetectedUnitData -- Wrapper.Unit#UNIT local DetectedObject = nil @@ -1541,13 +1549,16 @@ do -- DETECTION_TYPES self:T( DetectedItem ) if DetectedItem then - local ThreatLevelA2G = DetectedSet:CalculateThreatLevelA2G() + local ThreatLevelA2G = DetectedSet:CalculateThreatLevelA2G() + local DetectedItemsCount = DetectedSet:Count() + local DetectedItemType = DetectedItem.Type local ReportSummary = string.format( - "Type #%s - Threat Level [%s] (%2d)", - DetectedItem.Type, + "Threat [%s] (%2d) - %2d of %s", string.rep( "■", ThreatLevelA2G ), - ThreatLevelA2G + ThreatLevelA2G, + DetectedItemsCount, + DetectedItemType ) self:T( ReportSummary ) @@ -1651,17 +1662,23 @@ do -- DETECTION_AREAS local DetectedItem = self:GetDetectedItem( Index ) if DetectedItem then local DetectedSet = self:GetDetectedSet( Index ) - local ThreatLevelA2G = self:GetTreatLevelA2G( DetectedItem ) local ReportSummaryItem local DetectedZone = self:GetDetectedZone( Index ) local DetectedItemPointVec3 = DetectedZone:GetPointVec3() local DetectedItemPointLL = DetectedItemPointVec3:ToStringLL( 3, true ) + + local ThreatLevelA2G = self:GetTreatLevelA2G( DetectedItem ) + local DetectedItemsCount = DetectedSet:Count() + local DetectedItemsTypes = DetectedSet:GetTypeNames() + local ReportSummary = string.format( - "%s - Threat Level [%s] (%2d)", + "%s - Threat [%s] (%2d) - %2d of %s", DetectedItemPointLL, string.rep( "■", ThreatLevelA2G ), - ThreatLevelA2G + ThreatLevelA2G, + DetectedItemsCount, + DetectedItemsTypes ) return ReportSummary diff --git a/Moose Development/Moose/Tasking/CommandCenter.lua b/Moose Development/Moose/Tasking/CommandCenter.lua index 705c9b7ab..09ad2ab23 100644 --- a/Moose Development/Moose/Tasking/CommandCenter.lua +++ b/Moose Development/Moose/Tasking/CommandCenter.lua @@ -36,8 +36,14 @@ function REPORT:Add( Text ) return self.Report[#self.Report] end -function REPORT:Text() - return table.concat( self.Report, "\n" ) +--- Produces the text of the report, taking into account an optional delimeter, which is \n by default. +-- @param #REPORT self +-- @param #string Delimiter (optional) A delimiter text. +-- @return #string The report text. +function REPORT:Text( Delimiter ) + Delimiter = Delimiter or "\n" + local ReportText = table.concat( self.Report, Delimiter ) or "" + return ReportText end --- The COMMANDCENTER class diff --git a/Moose Development/Moose/Tasking/Task.lua b/Moose Development/Moose/Tasking/Task.lua index befa29682..0f3931b1c 100644 --- a/Moose Development/Moose/Tasking/Task.lua +++ b/Moose Development/Moose/Tasking/Task.lua @@ -983,11 +983,12 @@ end -- @param #string To function TASK:onenterAssigned( From, Event, To, PlayerUnit, PlayerName ) - self:E("Task Assigned") + self:E( { "Task Assigned", self.Dispatcher } ) self:MessageToGroups( "Task " .. self:GetName() .. " has been assigned to your group." ) if self.Dispatcher then + self:E( "Firing Assign event " ) self.Dispatcher:Assign( self, PlayerUnit, PlayerName ) end diff --git a/Moose Development/Moose/Tasking/Task_A2G.lua b/Moose Development/Moose/Tasking/Task_A2G.lua index fde116f2c..662ab0d2b 100644 --- a/Moose Development/Moose/Tasking/Task_A2G.lua +++ b/Moose Development/Moose/Tasking/Task_A2G.lua @@ -308,6 +308,7 @@ do -- TASK_A2G -- @param Wrapper.Unit#UNIT TaskUnit -- @return #TASK_A2G function TASK_A2G:SetScoreOnDestroy( Text, Score, TaskUnit ) + self:F( { Text, Score, TaskUnit } ) local ProcessUnit = self:GetUnitProcess( TaskUnit ) @@ -323,6 +324,7 @@ do -- TASK_A2G -- @param Wrapper.Unit#UNIT TaskUnit -- @return #TASK_A2G function TASK_A2G:SetScoreOnSuccess( Text, Score, TaskUnit ) + self:F( { Text, Score, TaskUnit } ) local ProcessUnit = self:GetUnitProcess( TaskUnit ) @@ -338,6 +340,7 @@ do -- TASK_A2G -- @param Wrapper.Unit#UNIT TaskUnit -- @return #TASK_A2G function TASK_A2G:SetPenaltyOnFailed( Text, Penalty, TaskUnit ) + self:F( { Text, Score, TaskUnit } ) local ProcessUnit = self:GetUnitProcess( TaskUnit ) diff --git a/Moose Development/Moose/Tasking/Task_A2G_Dispatcher.lua b/Moose Development/Moose/Tasking/Task_A2G_Dispatcher.lua index 474b30833..9f16f6342 100644 --- a/Moose Development/Moose/Tasking/Task_A2G_Dispatcher.lua +++ b/Moose Development/Moose/Tasking/Task_A2G_Dispatcher.lua @@ -206,9 +206,9 @@ do -- TASK_A2G_DISPATCHER local ChangeMsg = {} local Mission = self.Mission - local ReportSEAD = REPORT:New( " - SEAD Tasks:") - local ReportCAS = REPORT:New( " - CAS Tasks:") - local ReportBAI = REPORT:New( " - BAI Tasks:") + local ReportSEAD = REPORT:New( "- SEAD Tasks:") + local ReportCAS = REPORT:New( "- CAS Tasks:") + local ReportBAI = REPORT:New( "- BAI Tasks:") local ReportChanges = REPORT:New( " - Changes:" ) --- First we need to the detected targets. @@ -289,7 +289,7 @@ do -- TASK_A2G_DISPATCHER Mission:GetCommandCenter():MessageToGroup( string.format( "HQ Reporting - Planned tasks for mission '%s':\n%s\n", self.Mission:GetName(), - string.format( "%s\n%s\n%s\n%s", ReportSEAD:Text(), ReportCAS:Text(), ReportBAI:Text(), ReportChanges:Text() + string.format( "%s\n\n%s\n\n%s\n\n%s", ReportSEAD:Text(), ReportCAS:Text(), ReportBAI:Text(), ReportChanges:Text() ) ), TaskGroup ) 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 0d3429f64..ed2803d46 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: 20170319_1459' ) +env.info( 'Moose Generation Timestamp: 20170320_1252' ) local base = _G Include = {} @@ -7971,225 +7971,30 @@ end ---- **Core** - SET classes define **collections** of objects to perform **bulk actions** and logically **group** objects. +--- **Core** - SET_ classes define **collections** of objects to perform **bulk actions** and logically **group** objects. +-- +-- ![Banner Image](..\Presentations\SET\Dia1.JPG) -- -- === -- --- 1) @{Set#SET_BASE} class, extends @{Base#BASE} --- ============================================== --- The @{Set#SET_BASE} class defines the core functions that define a collection of objects. --- A SET provides iterators to iterate the SET, but will **temporarily** yield the ForEach interator loop at defined **"intervals"** to the mail simulator loop. --- In this way, large loops can be done while not blocking the simulator main processing loop. --- The default **"yield interval"** is after 10 objects processed. --- The default **"time interval"** is after 0.001 seconds. +-- SET_ classes group objects of the same type into a collection, which is either: -- --- 1.1) Add or remove objects from the SET --- --------------------------------------- --- Some key core functions are @{Set#SET_BASE.Add} and @{Set#SET_BASE.Remove} to add or remove objects from the SET in your logic. --- --- 1.2) Define the SET iterator **"yield interval"** and the **"time interval"** --- ----------------------------------------------------------------------------- --- Modify the iterator intervals with the @{Set#SET_BASE.SetInteratorIntervals} method. --- You can set the **"yield interval"**, and the **"time interval"**. (See above). --- --- === --- --- 2) @{Set#SET_GROUP} class, extends @{Set#SET_BASE} --- ================================================== --- Mission designers can use the @{Set#SET_GROUP} class to build sets of groups belonging to certain: --- --- * Coalitions --- * Categories --- * Countries --- * Starting with certain prefix strings. --- --- 2.1) SET_GROUP construction method: --- ----------------------------------- --- Create a new SET_GROUP object with the @{#SET_GROUP.New} method: --- --- * @{#SET_GROUP.New}: Creates a new SET_GROUP object. --- --- 2.2) Add or Remove GROUP(s) from SET_GROUP: --- ------------------------------------------- --- GROUPS can be added and removed using the @{Set#SET_GROUP.AddGroupsByName} and @{Set#SET_GROUP.RemoveGroupsByName} respectively. --- These methods take a single GROUP name or an array of GROUP names to be added or removed from SET_GROUP. --- --- 2.3) SET_GROUP filter criteria: --- ------------------------------- --- You can set filter criteria to define the set of groups within the SET_GROUP. --- Filter criteria are defined by: --- --- * @{#SET_GROUP.FilterCoalitions}: Builds the SET_GROUP with the groups belonging to the coalition(s). --- * @{#SET_GROUP.FilterCategories}: Builds the SET_GROUP with the groups belonging to the category(ies). --- * @{#SET_GROUP.FilterCountries}: Builds the SET_GROUP with the gruops belonging to the country(ies). --- * @{#SET_GROUP.FilterPrefixes}: Builds the SET_GROUP with the groups starting with the same prefix string(s). +-- * Manually managed using the **:Add...()** or **:Remove...()** methods. The initial SET can be filtered with the **@{#SET_BASE.FilterOnce}()** method +-- * Dynamically updated when new objects are created or objects are destroyed using the **@{#SET_BASE.FilterStart}()** method. -- --- Once the filter criteria have been set for the SET_GROUP, you can start filtering using: +-- Various types of SET_ classes are available: -- --- * @{#SET_GROUP.FilterStart}: Starts the filtering of the groups within the SET_GROUP and add or remove GROUP objects **dynamically**. +-- * @{#SET_UNIT}: Defines a colleciton of @{Unit}s filtered by filter criteria. +-- * @{#SET_GROUP}: Defines a collection of @{Group}s filtered by filter criteria. +-- * @{#SET_CLIENT}: Defines a collection of @{Client}s filterd by filter criteria. +-- * @{#SET_AIRBASE}: Defines a collection of @{Airbase}s filtered by filter criteria. -- --- Planned filter criteria within development are (so these are not yet available): +-- These classes are derived from @{#SET_BASE}, which contains the main methods to manage SETs. -- --- * @{#SET_GROUP.FilterZones}: Builds the SET_GROUP with the groups within a @{Zone#ZONE}. +-- A multitude of other methods are available in SET_ classes that allow to: -- --- 2.4) SET_GROUP iterators: --- ------------------------- --- Once the filters have been defined and the SET_GROUP has been built, you can iterate the SET_GROUP with the available iterator methods. --- The iterator methods will walk the SET_GROUP set, and call for each element within the set a function that you provide. --- The following iterator methods are currently available within the SET_GROUP: --- --- * @{#SET_GROUP.ForEachGroup}: Calls a function for each alive group it finds within the SET_GROUP. --- * @{#SET_GROUP.ForEachGroupCompletelyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. --- * @{#SET_GROUP.ForEachGroupPartlyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence partly in a @{Zone}, providing the GROUP and optional parameters to the called function. --- * @{#SET_GROUP.ForEachGroupNotInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. --- --- ==== --- --- 3) @{Set#SET_UNIT} class, extends @{Set#SET_BASE} --- =================================================== --- Mission designers can use the @{Set#SET_UNIT} class to build sets of units belonging to certain: --- --- * Coalitions --- * Categories --- * Countries --- * Unit types --- * Starting with certain prefix strings. --- --- 3.1) SET_UNIT construction method: --- ---------------------------------- --- Create a new SET_UNIT object with the @{#SET_UNIT.New} method: --- --- * @{#SET_UNIT.New}: Creates a new SET_UNIT object. --- --- 3.2) Add or Remove UNIT(s) from SET_UNIT: --- ----------------------------------------- --- UNITs can be added and removed using the @{Set#SET_UNIT.AddUnitsByName} and @{Set#SET_UNIT.RemoveUnitsByName} respectively. --- These methods take a single UNIT name or an array of UNIT names to be added or removed from SET_UNIT. --- --- 3.3) SET_UNIT filter criteria: --- ------------------------------ --- You can set filter criteria to define the set of units within the SET_UNIT. --- Filter criteria are defined by: --- --- * @{#SET_UNIT.FilterCoalitions}: Builds the SET_UNIT with the units belonging to the coalition(s). --- * @{#SET_UNIT.FilterCategories}: Builds the SET_UNIT with the units belonging to the category(ies). --- * @{#SET_UNIT.FilterTypes}: Builds the SET_UNIT with the units belonging to the unit type(s). --- * @{#SET_UNIT.FilterCountries}: Builds the SET_UNIT with the units belonging to the country(ies). --- * @{#SET_UNIT.FilterPrefixes}: Builds the SET_UNIT with the units starting with the same prefix string(s). --- --- Once the filter criteria have been set for the SET_UNIT, you can start filtering using: --- --- * @{#SET_UNIT.FilterStart}: Starts the filtering of the units within the SET_UNIT. --- --- Planned filter criteria within development are (so these are not yet available): --- --- * @{#SET_UNIT.FilterZones}: Builds the SET_UNIT with the units within a @{Zone#ZONE}. --- --- 3.4) SET_UNIT iterators: --- ------------------------ --- Once the filters have been defined and the SET_UNIT has been built, you can iterate the SET_UNIT with the available iterator methods. --- The iterator methods will walk the SET_UNIT set, and call for each element within the set a function that you provide. --- The following iterator methods are currently available within the SET_UNIT: --- --- * @{#SET_UNIT.ForEachUnit}: Calls a function for each alive unit it finds within the SET_UNIT. --- * @{#SET_GROUP.ForEachGroupCompletelyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. --- * @{#SET_GROUP.ForEachGroupNotInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. --- --- Planned iterators methods in development are (so these are not yet available): --- --- * @{#SET_UNIT.ForEachUnitInUnit}: Calls a function for each unit contained within the SET_UNIT. --- * @{#SET_UNIT.ForEachUnitCompletelyInZone}: Iterate and call an iterator function for each **alive** UNIT presence completely in a @{Zone}, providing the UNIT and optional parameters to the called function. --- * @{#SET_UNIT.ForEachUnitNotInZone}: Iterate and call an iterator function for each **alive** UNIT presence not in a @{Zone}, providing the UNIT and optional parameters to the called function. --- --- === --- --- 4) @{Set#SET_CLIENT} class, extends @{Set#SET_BASE} --- =================================================== --- Mission designers can use the @{Set#SET_CLIENT} class to build sets of units belonging to certain: --- --- * Coalitions --- * Categories --- * Countries --- * Client types --- * Starting with certain prefix strings. --- --- 4.1) SET_CLIENT construction method: --- ---------------------------------- --- Create a new SET_CLIENT object with the @{#SET_CLIENT.New} method: --- --- * @{#SET_CLIENT.New}: Creates a new SET_CLIENT object. --- --- 4.2) Add or Remove CLIENT(s) from SET_CLIENT: --- ----------------------------------------- --- CLIENTs can be added and removed using the @{Set#SET_CLIENT.AddClientsByName} and @{Set#SET_CLIENT.RemoveClientsByName} respectively. --- These methods take a single CLIENT name or an array of CLIENT names to be added or removed from SET_CLIENT. --- --- 4.3) SET_CLIENT filter criteria: --- ------------------------------ --- You can set filter criteria to define the set of clients within the SET_CLIENT. --- Filter criteria are defined by: --- --- * @{#SET_CLIENT.FilterCoalitions}: Builds the SET_CLIENT with the clients belonging to the coalition(s). --- * @{#SET_CLIENT.FilterCategories}: Builds the SET_CLIENT with the clients belonging to the category(ies). --- * @{#SET_CLIENT.FilterTypes}: Builds the SET_CLIENT with the clients belonging to the client type(s). --- * @{#SET_CLIENT.FilterCountries}: Builds the SET_CLIENT with the clients belonging to the country(ies). --- * @{#SET_CLIENT.FilterPrefixes}: Builds the SET_CLIENT with the clients starting with the same prefix string(s). --- --- Once the filter criteria have been set for the SET_CLIENT, you can start filtering using: --- --- * @{#SET_CLIENT.FilterStart}: Starts the filtering of the clients within the SET_CLIENT. --- --- Planned filter criteria within development are (so these are not yet available): --- --- * @{#SET_CLIENT.FilterZones}: Builds the SET_CLIENT with the clients within a @{Zone#ZONE}. --- --- 4.4) SET_CLIENT iterators: --- ------------------------ --- Once the filters have been defined and the SET_CLIENT has been built, you can iterate the SET_CLIENT with the available iterator methods. --- The iterator methods will walk the SET_CLIENT set, and call for each element within the set a function that you provide. --- The following iterator methods are currently available within the SET_CLIENT: --- --- * @{#SET_CLIENT.ForEachClient}: Calls a function for each alive client it finds within the SET_CLIENT. --- --- ==== --- --- 5) @{Set#SET_AIRBASE} class, extends @{Set#SET_BASE} --- ==================================================== --- Mission designers can use the @{Set#SET_AIRBASE} class to build sets of airbases optionally belonging to certain: --- --- * Coalitions --- --- 5.1) SET_AIRBASE construction --- ----------------------------- --- Create a new SET_AIRBASE object with the @{#SET_AIRBASE.New} method: --- --- * @{#SET_AIRBASE.New}: Creates a new SET_AIRBASE object. --- --- 5.2) Add or Remove AIRBASEs from SET_AIRBASE --- -------------------------------------------- --- AIRBASEs can be added and removed using the @{Set#SET_AIRBASE.AddAirbasesByName} and @{Set#SET_AIRBASE.RemoveAirbasesByName} respectively. --- These methods take a single AIRBASE name or an array of AIRBASE names to be added or removed from SET_AIRBASE. --- --- 5.3) SET_AIRBASE filter criteria --- -------------------------------- --- You can set filter criteria to define the set of clients within the SET_AIRBASE. --- Filter criteria are defined by: --- --- * @{#SET_AIRBASE.FilterCoalitions}: Builds the SET_AIRBASE with the airbases belonging to the coalition(s). --- --- Once the filter criteria have been set for the SET_AIRBASE, you can start filtering using: --- --- * @{#SET_AIRBASE.FilterStart}: Starts the filtering of the airbases within the SET_AIRBASE. --- --- 5.4) SET_AIRBASE iterators: --- --------------------------- --- Once the filters have been defined and the SET_AIRBASE has been built, you can iterate the SET_AIRBASE with the available iterator methods. --- The iterator methods will walk the SET_AIRBASE set, and call for each airbase within the set a function that you provide. --- The following iterator methods are currently available within the SET_AIRBASE: --- --- * @{#SET_AIRBASE.ForEachAirbase}: Calls a function for each airbase it finds within the SET_AIRBASE. --- --- ==== +-- * Validate the presence of objects in the SET. +-- * Trigger events when objects in the SET change a zone presence. -- -- ### Authors: -- @@ -8201,7 +8006,22 @@ end -- @module Set ---- SET_BASE class +--- # 1) SET_BASE class, extends @{Base#BASE} +-- The @{Set#SET_BASE} class defines the core functions that define a collection of objects. +-- A SET provides iterators to iterate the SET, but will **temporarily** yield the ForEach interator loop at defined **"intervals"** to the mail simulator loop. +-- In this way, large loops can be done while not blocking the simulator main processing loop. +-- The default **"yield interval"** is after 10 objects processed. +-- The default **"time interval"** is after 0.001 seconds. +-- +-- ## 1.1) Add or remove objects from the SET +-- +-- Some key core functions are @{Set#SET_BASE.Add} and @{Set#SET_BASE.Remove} to add or remove objects from the SET in your logic. +-- +-- ## 1.2) Define the SET iterator **"yield interval"** and the **"time interval"** +-- +-- Modify the iterator intervals with the @{Set#SET_BASE.SetInteratorIntervals} method. +-- You can set the **"yield interval"**, and the **"time interval"**. (See above). +-- -- @type SET_BASE -- @field #table Filter -- @field #table Set @@ -8415,7 +8235,7 @@ end -- @return #number Count function SET_BASE:Count() - return #self.Index + return #self.Index or 0 end @@ -8750,7 +8570,55 @@ end -- SET_GROUP ---- SET_GROUP class +--- # 2) SET_GROUP class, extends @{Set#SET_BASE} +-- +-- Mission designers can use the @{Set#SET_GROUP} class to build sets of groups belonging to certain: +-- +-- * Coalitions +-- * Categories +-- * Countries +-- * Starting with certain prefix strings. +-- +-- ## 2.1) SET_GROUP constructor +-- +-- Create a new SET_GROUP object with the @{#SET_GROUP.New} method: +-- +-- * @{#SET_GROUP.New}: Creates a new SET_GROUP object. +-- +-- ## 2.2) Add or Remove GROUP(s) from SET_GROUP +-- +-- GROUPS can be added and removed using the @{Set#SET_GROUP.AddGroupsByName} and @{Set#SET_GROUP.RemoveGroupsByName} respectively. +-- These methods take a single GROUP name or an array of GROUP names to be added or removed from SET_GROUP. +-- +-- ## 2.3) SET_GROUP filter criteria +-- +-- You can set filter criteria to define the set of groups within the SET_GROUP. +-- Filter criteria are defined by: +-- +-- * @{#SET_GROUP.FilterCoalitions}: Builds the SET_GROUP with the groups belonging to the coalition(s). +-- * @{#SET_GROUP.FilterCategories}: Builds the SET_GROUP with the groups belonging to the category(ies). +-- * @{#SET_GROUP.FilterCountries}: Builds the SET_GROUP with the gruops belonging to the country(ies). +-- * @{#SET_GROUP.FilterPrefixes}: Builds the SET_GROUP with the groups starting with the same prefix string(s). +-- +-- Once the filter criteria have been set for the SET_GROUP, you can start filtering using: +-- +-- * @{#SET_GROUP.FilterStart}: Starts the filtering of the groups within the SET_GROUP and add or remove GROUP objects **dynamically**. +-- +-- Planned filter criteria within development are (so these are not yet available): +-- +-- * @{#SET_GROUP.FilterZones}: Builds the SET_GROUP with the groups within a @{Zone#ZONE}. +-- +-- ## 2.4) SET_GROUP iterators +-- +-- Once the filters have been defined and the SET_GROUP has been built, you can iterate the SET_GROUP with the available iterator methods. +-- The iterator methods will walk the SET_GROUP set, and call for each element within the set a function that you provide. +-- The following iterator methods are currently available within the SET_GROUP: +-- +-- * @{#SET_GROUP.ForEachGroup}: Calls a function for each alive group it finds within the SET_GROUP. +-- * @{#SET_GROUP.ForEachGroupCompletelyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- * @{#SET_GROUP.ForEachGroupPartlyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence partly in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- * @{#SET_GROUP.ForEachGroupNotInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- -- @type SET_GROUP -- @extends Core.Set#SET_BASE SET_GROUP = { @@ -9118,7 +8986,69 @@ function SET_GROUP:IsIncludeObject( MooseGroup ) return MooseGroupInclude end ---- SET_UNIT class +--- # 3) SET_UNIT class, extends @{Set#SET_BASE} +-- +-- Mission designers can use the SET_UNIT class to build sets of units belonging to certain: +-- +-- * Coalitions +-- * Categories +-- * Countries +-- * Unit types +-- * Starting with certain prefix strings. +-- +-- ## 3.1) SET_UNIT constructor +-- +-- Create a new SET_UNIT object with the @{#SET_UNIT.New} method: +-- +-- * @{#SET_UNIT.New}: Creates a new SET_UNIT object. +-- +-- ## 3.2) Add or Remove UNIT(s) from SET_UNIT +-- +-- UNITs can be added and removed using the @{Set#SET_UNIT.AddUnitsByName} and @{Set#SET_UNIT.RemoveUnitsByName} respectively. +-- These methods take a single UNIT name or an array of UNIT names to be added or removed from SET_UNIT. +-- +-- ## 3.3) SET_UNIT filter criteria +-- +-- You can set filter criteria to define the set of units within the SET_UNIT. +-- Filter criteria are defined by: +-- +-- * @{#SET_UNIT.FilterCoalitions}: Builds the SET_UNIT with the units belonging to the coalition(s). +-- * @{#SET_UNIT.FilterCategories}: Builds the SET_UNIT with the units belonging to the category(ies). +-- * @{#SET_UNIT.FilterTypes}: Builds the SET_UNIT with the units belonging to the unit type(s). +-- * @{#SET_UNIT.FilterCountries}: Builds the SET_UNIT with the units belonging to the country(ies). +-- * @{#SET_UNIT.FilterPrefixes}: Builds the SET_UNIT with the units starting with the same prefix string(s). +-- +-- Once the filter criteria have been set for the SET_UNIT, you can start filtering using: +-- +-- * @{#SET_UNIT.FilterStart}: Starts the filtering of the units within the SET_UNIT. +-- +-- Planned filter criteria within development are (so these are not yet available): +-- +-- * @{#SET_UNIT.FilterZones}: Builds the SET_UNIT with the units within a @{Zone#ZONE}. +-- +-- ## 3.4) SET_UNIT iterators +-- +-- Once the filters have been defined and the SET_UNIT has been built, you can iterate the SET_UNIT with the available iterator methods. +-- The iterator methods will walk the SET_UNIT set, and call for each element within the set a function that you provide. +-- The following iterator methods are currently available within the SET_UNIT: +-- +-- * @{#SET_UNIT.ForEachUnit}: Calls a function for each alive unit it finds within the SET_UNIT. +-- * @{#SET_GROUP.ForEachGroupCompletelyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- * @{#SET_GROUP.ForEachGroupNotInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- +-- Planned iterators methods in development are (so these are not yet available): +-- +-- * @{#SET_UNIT.ForEachUnitInUnit}: Calls a function for each unit contained within the SET_UNIT. +-- * @{#SET_UNIT.ForEachUnitCompletelyInZone}: Iterate and call an iterator function for each **alive** UNIT presence completely in a @{Zone}, providing the UNIT and optional parameters to the called function. +-- * @{#SET_UNIT.ForEachUnitNotInZone}: Iterate and call an iterator function for each **alive** UNIT presence not in a @{Zone}, providing the UNIT and optional parameters to the called function. +-- +-- ## 3.5 ) SET_UNIT atomic methods +-- +-- Various methods exist for a SET_UNIT to perform actions or calculations and retrieve results from the SET_UNIT: +-- +-- * @{#SET_UNIT.GetTypeNames}(): Retrieve the type names of the @{Unit}s in the SET, delimited by a comma. +-- +-- -- @type SET_UNIT -- @extends Core.Set#SET_BASE SET_UNIT = { @@ -9732,9 +9662,81 @@ function SET_UNIT:IsIncludeObject( MUnit ) end +--- Retrieve the type names of the @{Unit}s in the SET, delimited by an optional delimiter. +-- @param #SET_UNIT self +-- @param #string Delimiter (optional) The delimiter, which is default a comma. +-- @return #string The types of the @{Unit}s delimited. +function SET_UNIT:GetTypeNames( Delimiter ) + + Delimiter = Delimiter or ", " + local TypeReport = REPORT:New() + local Types = {} + + for UnitName, UnitData in pairs( self:GetSet() ) do + + local Unit = UnitData -- Wrapper.Unit#UNIT + local UnitTypeName = Unit:GetTypeName() + + if not Types[UnitTypeName] then + Types[UnitTypeName] = UnitTypeName + TypeReport:Add( UnitTypeName ) + end + end + + return TypeReport:Text( Delimiter ) +end + + --- SET_CLIENT ---- SET_CLIENT class +--- # 4) SET_CLIENT class, extends @{Set#SET_BASE} +-- +-- Mission designers can use the @{Set#SET_CLIENT} class to build sets of units belonging to certain: +-- +-- * Coalitions +-- * Categories +-- * Countries +-- * Client types +-- * Starting with certain prefix strings. +-- +-- ## 4.1) SET_CLIENT constructor +-- +-- Create a new SET_CLIENT object with the @{#SET_CLIENT.New} method: +-- +-- * @{#SET_CLIENT.New}: Creates a new SET_CLIENT object. +-- +-- ## 4.2) Add or Remove CLIENT(s) from SET_CLIENT +-- +-- CLIENTs can be added and removed using the @{Set#SET_CLIENT.AddClientsByName} and @{Set#SET_CLIENT.RemoveClientsByName} respectively. +-- These methods take a single CLIENT name or an array of CLIENT names to be added or removed from SET_CLIENT. +-- +-- ## 4.3) SET_CLIENT filter criteria +-- +-- You can set filter criteria to define the set of clients within the SET_CLIENT. +-- Filter criteria are defined by: +-- +-- * @{#SET_CLIENT.FilterCoalitions}: Builds the SET_CLIENT with the clients belonging to the coalition(s). +-- * @{#SET_CLIENT.FilterCategories}: Builds the SET_CLIENT with the clients belonging to the category(ies). +-- * @{#SET_CLIENT.FilterTypes}: Builds the SET_CLIENT with the clients belonging to the client type(s). +-- * @{#SET_CLIENT.FilterCountries}: Builds the SET_CLIENT with the clients belonging to the country(ies). +-- * @{#SET_CLIENT.FilterPrefixes}: Builds the SET_CLIENT with the clients starting with the same prefix string(s). +-- +-- Once the filter criteria have been set for the SET_CLIENT, you can start filtering using: +-- +-- * @{#SET_CLIENT.FilterStart}: Starts the filtering of the clients within the SET_CLIENT. +-- +-- Planned filter criteria within development are (so these are not yet available): +-- +-- * @{#SET_CLIENT.FilterZones}: Builds the SET_CLIENT with the clients within a @{Zone#ZONE}. +-- +-- ## 4.4) SET_CLIENT iterators +-- +-- Once the filters have been defined and the SET_CLIENT has been built, you can iterate the SET_CLIENT with the available iterator methods. +-- The iterator methods will walk the SET_CLIENT set, and call for each element within the set a function that you provide. +-- The following iterator methods are currently available within the SET_CLIENT: +-- +-- * @{#SET_CLIENT.ForEachClient}: Calls a function for each alive client it finds within the SET_CLIENT. +-- -- @type SET_CLIENT -- @extends Core.Set#SET_BASE SET_CLIENT = { @@ -10091,7 +10093,42 @@ end --- SET_AIRBASE ---- SET_AIRBASE class +--- # 5) SET_AIRBASE class, extends @{Set#SET_BASE} +-- +-- Mission designers can use the @{Set#SET_AIRBASE} class to build sets of airbases optionally belonging to certain: +-- +-- * Coalitions +-- +-- ## 5.1) SET_AIRBASE constructor +-- +-- Create a new SET_AIRBASE object with the @{#SET_AIRBASE.New} method: +-- +-- * @{#SET_AIRBASE.New}: Creates a new SET_AIRBASE object. +-- +-- ## 5.2) Add or Remove AIRBASEs from SET_AIRBASE +-- +-- AIRBASEs can be added and removed using the @{Set#SET_AIRBASE.AddAirbasesByName} and @{Set#SET_AIRBASE.RemoveAirbasesByName} respectively. +-- These methods take a single AIRBASE name or an array of AIRBASE names to be added or removed from SET_AIRBASE. +-- +-- ## 5.3) SET_AIRBASE filter criteria +-- +-- You can set filter criteria to define the set of clients within the SET_AIRBASE. +-- Filter criteria are defined by: +-- +-- * @{#SET_AIRBASE.FilterCoalitions}: Builds the SET_AIRBASE with the airbases belonging to the coalition(s). +-- +-- Once the filter criteria have been set for the SET_AIRBASE, you can start filtering using: +-- +-- * @{#SET_AIRBASE.FilterStart}: Starts the filtering of the airbases within the SET_AIRBASE. +-- +-- ## 5.4) SET_AIRBASE iterators +-- +-- Once the filters have been defined and the SET_AIRBASE has been built, you can iterate the SET_AIRBASE with the available iterator methods. +-- The iterator methods will walk the SET_AIRBASE set, and call for each airbase within the set a function that you provide. +-- The following iterator methods are currently available within the SET_AIRBASE: +-- +-- * @{#SET_AIRBASE.ForEachAirbase}: Calls a function for each airbase it finds within the SET_AIRBASE. +-- -- @type SET_AIRBASE -- @extends Core.Set#SET_BASE SET_AIRBASE = { @@ -11901,7 +11938,6 @@ do -- FSM for ProcessID, Process in pairs( self:GetProcesses() ) do if Process.From == From and Process.Event == Event then - self:T( Process ) return Process.fsm end end @@ -11930,7 +11966,7 @@ do -- FSM -- @param #number Score is a number providing the score of the status. -- @return #FSM self function FSM:AddScore( State, ScoreText, Score ) - self:F2( { State, ScoreText, Score } ) + self:F( { State, ScoreText, Score } ) self._Scores[State] = self._Scores[State] or {} self._Scores[State].ScoreText = ScoreText @@ -11948,14 +11984,15 @@ do -- FSM -- @param #number Score is a number providing the score of the status. -- @return #FSM self function FSM:AddScoreProcess( From, Event, State, ScoreText, Score ) - self:F2( { Event, State, ScoreText, Score } ) + self:F( { From, Event, State, ScoreText, Score } ) local Process = self:GetProcess( From, Event ) - self:T( { Process = Process._Name, Scores = Process._Scores, State = State, ScoreText = ScoreText, Score = Score } ) Process._Scores[State] = Process._Scores[State] or {} Process._Scores[State].ScoreText = ScoreText Process._Scores[State].Score = Score + + self:T( Process._Scores ) return Process end @@ -12528,14 +12565,14 @@ end -- @param #string Event -- @param #string From -- @param #string To - function FSM_PROCESS:onstatechange( ProcessUnit, From, Event, To, Dummy ) + function FSM_PROCESS:onstatechange( ProcessUnit, Task, From, Event, To, Dummy ) self:T( { ProcessUnit, From, Event, To, Dummy, self:IsTrace() } ) if self:IsTrace() then MESSAGE:New( "@ Process " .. self:GetClassNameAndID() .. " : " .. Event .. " changed to state " .. To, 2 ):ToAll() end - self:T( self._Scores[To] ) + self:T( { Scores = self._Scores, To = To } ) -- TODO: This needs to be reworked with a callback functions allocated within Task, and set within the mission script from the Task Objects... if self._Scores[To] then @@ -26574,7 +26611,7 @@ do -- DETECTION_BASE --- Get a detected item using a given numeric index. -- @param #DETECTION_BASE self -- @param #number Index - -- @return DETECTION_BASE.DetectedItem + -- @return #DETECTION_BASE.DetectedItem function DETECTION_BASE:GetDetectedItem( Index ) local DetectedItem = self.DetectedItems[Index] @@ -26837,7 +26874,7 @@ do -- DETECTION_UNITS local DetectedItemUnit = DetectedSet:GetFirst() -- Wrapper.Unit#UNIT - if DetectedItemUnit then + if DetectedItemUnit and DetectedItemUnit:IsAlive() then self:T(DetectedItemUnit) local UnitCategoryName = DetectedItemUnit:GetCategoryName() or "" @@ -26855,8 +26892,16 @@ do -- DETECTION_UNITS UnitDistanceText = string.format( "%.2f", DetectedItem.Distance ) .. " km, visual contact" end + local DetectedItemPointVec3 = DetectedItemUnit:GetPointVec3() + local DetectedItemPointLL = DetectedItemPointVec3:ToStringLL( 3, true ) + + local ThreatLevelA2G = DetectedItemUnit:GetThreatLevel( DetectedItem ) + ReportSummary = string.format( - "%s%s", + "%s - Threat [%s] (%2d) - %s%s", + DetectedItemPointLL, + string.rep( "■", ThreatLevelA2G ), + ThreatLevelA2G, UnitCategoryText, UnitDistanceText ) @@ -26971,10 +27016,10 @@ do -- DETECTION_TYPES for DetectedItemID, DetectedItem in pairs( self.DetectedItems ) do - local DetectedItemSet = DetectedItem:GetSet() -- Core.Set#SET_UNIT + local DetectedItemSet = DetectedItem.Set -- Core.Set#SET_UNIT local DetectedTypeName = DetectedItem.Type - for DetectedUnitName, DetectedUnitData in pairs( DetectedItemSet ) do + for DetectedUnitName, DetectedUnitData in pairs( DetectedItemSet:GetSet() ) do local DetectedUnit = DetectedUnitData -- Wrapper.Unit#UNIT local DetectedObject = nil @@ -27042,13 +27087,16 @@ do -- DETECTION_TYPES self:T( DetectedItem ) if DetectedItem then - local ThreatLevelA2G = DetectedSet:CalculateThreatLevelA2G() + local ThreatLevelA2G = DetectedSet:CalculateThreatLevelA2G() + local DetectedItemsCount = DetectedSet:Count() + local DetectedItemType = DetectedItem.Type local ReportSummary = string.format( - "Type #%s - Threat Level [%s] (%2d)", - DetectedItem.Type, + "Threat [%s] (%2d) - %2d of %s", string.rep( "■", ThreatLevelA2G ), - ThreatLevelA2G + ThreatLevelA2G, + DetectedItemsCount, + DetectedItemType ) self:T( ReportSummary ) @@ -27152,17 +27200,23 @@ do -- DETECTION_AREAS local DetectedItem = self:GetDetectedItem( Index ) if DetectedItem then local DetectedSet = self:GetDetectedSet( Index ) - local ThreatLevelA2G = self:GetTreatLevelA2G( DetectedItem ) local ReportSummaryItem local DetectedZone = self:GetDetectedZone( Index ) local DetectedItemPointVec3 = DetectedZone:GetPointVec3() local DetectedItemPointLL = DetectedItemPointVec3:ToStringLL( 3, true ) + + local ThreatLevelA2G = self:GetTreatLevelA2G( DetectedItem ) + local DetectedItemsCount = DetectedSet:Count() + local DetectedItemsTypes = DetectedSet:GetTypeNames() + local ReportSummary = string.format( - "%s - Threat Level [%s] (%2d)", + "%s - Threat [%s] (%2d) - %2d of %s", DetectedItemPointLL, string.rep( "■", ThreatLevelA2G ), - ThreatLevelA2G + ThreatLevelA2G, + DetectedItemsCount, + DetectedItemsTypes ) return ReportSummary @@ -32121,8 +32175,14 @@ function REPORT:Add( Text ) return self.Report[#self.Report] end -function REPORT:Text() - return table.concat( self.Report, "\n" ) +--- Produces the text of the report, taking into account an optional delimeter, which is \n by default. +-- @param #REPORT self +-- @param #string Delimiter (optional) A delimiter text. +-- @return #string The report text. +function REPORT:Text( Delimiter ) + Delimiter = Delimiter or "\n" + local ReportText = table.concat( self.Report, Delimiter ) or "" + return ReportText end --- The COMMANDCENTER class @@ -34007,11 +34067,12 @@ end -- @param #string To function TASK:onenterAssigned( From, Event, To, PlayerUnit, PlayerName ) - self:E("Task Assigned") + self:E( { "Task Assigned", self.Dispatcher } ) self:MessageToGroups( "Task " .. self:GetName() .. " has been assigned to your group." ) if self.Dispatcher then + self:E( "Firing Assign event " ) self.Dispatcher:Assign( self, PlayerUnit, PlayerName ) end @@ -34618,9 +34679,9 @@ do -- TASK_A2G_DISPATCHER local ChangeMsg = {} local Mission = self.Mission - local ReportSEAD = REPORT:New( " - SEAD Tasks:") - local ReportCAS = REPORT:New( " - CAS Tasks:") - local ReportBAI = REPORT:New( " - BAI Tasks:") + local ReportSEAD = REPORT:New( "- SEAD Tasks:") + local ReportCAS = REPORT:New( "- CAS Tasks:") + local ReportBAI = REPORT:New( "- BAI Tasks:") local ReportChanges = REPORT:New( " - Changes:" ) --- First we need to the detected targets. @@ -34701,7 +34762,7 @@ do -- TASK_A2G_DISPATCHER Mission:GetCommandCenter():MessageToGroup( string.format( "HQ Reporting - Planned tasks for mission '%s':\n%s\n", self.Mission:GetName(), - string.format( "%s\n%s\n%s\n%s", ReportSEAD:Text(), ReportCAS:Text(), ReportBAI:Text(), ReportChanges:Text() + string.format( "%s\n\n%s\n\n%s\n\n%s", ReportSEAD:Text(), ReportCAS:Text(), ReportBAI:Text(), ReportChanges:Text() ) ), TaskGroup ) @@ -35021,6 +35082,7 @@ do -- TASK_A2G -- @param Wrapper.Unit#UNIT TaskUnit -- @return #TASK_A2G function TASK_A2G:SetScoreOnDestroy( Text, Score, TaskUnit ) + self:F( { Text, Score, TaskUnit } ) local ProcessUnit = self:GetUnitProcess( TaskUnit ) @@ -35036,6 +35098,7 @@ do -- TASK_A2G -- @param Wrapper.Unit#UNIT TaskUnit -- @return #TASK_A2G function TASK_A2G:SetScoreOnSuccess( Text, Score, TaskUnit ) + self:F( { Text, Score, TaskUnit } ) local ProcessUnit = self:GetUnitProcess( TaskUnit ) @@ -35051,6 +35114,7 @@ do -- TASK_A2G -- @param Wrapper.Unit#UNIT TaskUnit -- @return #TASK_A2G function TASK_A2G:SetPenaltyOnFailed( Text, Penalty, TaskUnit ) + self:F( { Text, Score, TaskUnit } ) local ProcessUnit = self:GetUnitProcess( TaskUnit ) diff --git a/Moose Mission Setup/Moose.lua b/Moose Mission Setup/Moose.lua index 0d3429f64..ed2803d46 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: 20170319_1459' ) +env.info( 'Moose Generation Timestamp: 20170320_1252' ) local base = _G Include = {} @@ -7971,225 +7971,30 @@ end ---- **Core** - SET classes define **collections** of objects to perform **bulk actions** and logically **group** objects. +--- **Core** - SET_ classes define **collections** of objects to perform **bulk actions** and logically **group** objects. +-- +-- ![Banner Image](..\Presentations\SET\Dia1.JPG) -- -- === -- --- 1) @{Set#SET_BASE} class, extends @{Base#BASE} --- ============================================== --- The @{Set#SET_BASE} class defines the core functions that define a collection of objects. --- A SET provides iterators to iterate the SET, but will **temporarily** yield the ForEach interator loop at defined **"intervals"** to the mail simulator loop. --- In this way, large loops can be done while not blocking the simulator main processing loop. --- The default **"yield interval"** is after 10 objects processed. --- The default **"time interval"** is after 0.001 seconds. +-- SET_ classes group objects of the same type into a collection, which is either: -- --- 1.1) Add or remove objects from the SET --- --------------------------------------- --- Some key core functions are @{Set#SET_BASE.Add} and @{Set#SET_BASE.Remove} to add or remove objects from the SET in your logic. --- --- 1.2) Define the SET iterator **"yield interval"** and the **"time interval"** --- ----------------------------------------------------------------------------- --- Modify the iterator intervals with the @{Set#SET_BASE.SetInteratorIntervals} method. --- You can set the **"yield interval"**, and the **"time interval"**. (See above). --- --- === --- --- 2) @{Set#SET_GROUP} class, extends @{Set#SET_BASE} --- ================================================== --- Mission designers can use the @{Set#SET_GROUP} class to build sets of groups belonging to certain: --- --- * Coalitions --- * Categories --- * Countries --- * Starting with certain prefix strings. --- --- 2.1) SET_GROUP construction method: --- ----------------------------------- --- Create a new SET_GROUP object with the @{#SET_GROUP.New} method: --- --- * @{#SET_GROUP.New}: Creates a new SET_GROUP object. --- --- 2.2) Add or Remove GROUP(s) from SET_GROUP: --- ------------------------------------------- --- GROUPS can be added and removed using the @{Set#SET_GROUP.AddGroupsByName} and @{Set#SET_GROUP.RemoveGroupsByName} respectively. --- These methods take a single GROUP name or an array of GROUP names to be added or removed from SET_GROUP. --- --- 2.3) SET_GROUP filter criteria: --- ------------------------------- --- You can set filter criteria to define the set of groups within the SET_GROUP. --- Filter criteria are defined by: --- --- * @{#SET_GROUP.FilterCoalitions}: Builds the SET_GROUP with the groups belonging to the coalition(s). --- * @{#SET_GROUP.FilterCategories}: Builds the SET_GROUP with the groups belonging to the category(ies). --- * @{#SET_GROUP.FilterCountries}: Builds the SET_GROUP with the gruops belonging to the country(ies). --- * @{#SET_GROUP.FilterPrefixes}: Builds the SET_GROUP with the groups starting with the same prefix string(s). +-- * Manually managed using the **:Add...()** or **:Remove...()** methods. The initial SET can be filtered with the **@{#SET_BASE.FilterOnce}()** method +-- * Dynamically updated when new objects are created or objects are destroyed using the **@{#SET_BASE.FilterStart}()** method. -- --- Once the filter criteria have been set for the SET_GROUP, you can start filtering using: +-- Various types of SET_ classes are available: -- --- * @{#SET_GROUP.FilterStart}: Starts the filtering of the groups within the SET_GROUP and add or remove GROUP objects **dynamically**. +-- * @{#SET_UNIT}: Defines a colleciton of @{Unit}s filtered by filter criteria. +-- * @{#SET_GROUP}: Defines a collection of @{Group}s filtered by filter criteria. +-- * @{#SET_CLIENT}: Defines a collection of @{Client}s filterd by filter criteria. +-- * @{#SET_AIRBASE}: Defines a collection of @{Airbase}s filtered by filter criteria. -- --- Planned filter criteria within development are (so these are not yet available): +-- These classes are derived from @{#SET_BASE}, which contains the main methods to manage SETs. -- --- * @{#SET_GROUP.FilterZones}: Builds the SET_GROUP with the groups within a @{Zone#ZONE}. +-- A multitude of other methods are available in SET_ classes that allow to: -- --- 2.4) SET_GROUP iterators: --- ------------------------- --- Once the filters have been defined and the SET_GROUP has been built, you can iterate the SET_GROUP with the available iterator methods. --- The iterator methods will walk the SET_GROUP set, and call for each element within the set a function that you provide. --- The following iterator methods are currently available within the SET_GROUP: --- --- * @{#SET_GROUP.ForEachGroup}: Calls a function for each alive group it finds within the SET_GROUP. --- * @{#SET_GROUP.ForEachGroupCompletelyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. --- * @{#SET_GROUP.ForEachGroupPartlyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence partly in a @{Zone}, providing the GROUP and optional parameters to the called function. --- * @{#SET_GROUP.ForEachGroupNotInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. --- --- ==== --- --- 3) @{Set#SET_UNIT} class, extends @{Set#SET_BASE} --- =================================================== --- Mission designers can use the @{Set#SET_UNIT} class to build sets of units belonging to certain: --- --- * Coalitions --- * Categories --- * Countries --- * Unit types --- * Starting with certain prefix strings. --- --- 3.1) SET_UNIT construction method: --- ---------------------------------- --- Create a new SET_UNIT object with the @{#SET_UNIT.New} method: --- --- * @{#SET_UNIT.New}: Creates a new SET_UNIT object. --- --- 3.2) Add or Remove UNIT(s) from SET_UNIT: --- ----------------------------------------- --- UNITs can be added and removed using the @{Set#SET_UNIT.AddUnitsByName} and @{Set#SET_UNIT.RemoveUnitsByName} respectively. --- These methods take a single UNIT name or an array of UNIT names to be added or removed from SET_UNIT. --- --- 3.3) SET_UNIT filter criteria: --- ------------------------------ --- You can set filter criteria to define the set of units within the SET_UNIT. --- Filter criteria are defined by: --- --- * @{#SET_UNIT.FilterCoalitions}: Builds the SET_UNIT with the units belonging to the coalition(s). --- * @{#SET_UNIT.FilterCategories}: Builds the SET_UNIT with the units belonging to the category(ies). --- * @{#SET_UNIT.FilterTypes}: Builds the SET_UNIT with the units belonging to the unit type(s). --- * @{#SET_UNIT.FilterCountries}: Builds the SET_UNIT with the units belonging to the country(ies). --- * @{#SET_UNIT.FilterPrefixes}: Builds the SET_UNIT with the units starting with the same prefix string(s). --- --- Once the filter criteria have been set for the SET_UNIT, you can start filtering using: --- --- * @{#SET_UNIT.FilterStart}: Starts the filtering of the units within the SET_UNIT. --- --- Planned filter criteria within development are (so these are not yet available): --- --- * @{#SET_UNIT.FilterZones}: Builds the SET_UNIT with the units within a @{Zone#ZONE}. --- --- 3.4) SET_UNIT iterators: --- ------------------------ --- Once the filters have been defined and the SET_UNIT has been built, you can iterate the SET_UNIT with the available iterator methods. --- The iterator methods will walk the SET_UNIT set, and call for each element within the set a function that you provide. --- The following iterator methods are currently available within the SET_UNIT: --- --- * @{#SET_UNIT.ForEachUnit}: Calls a function for each alive unit it finds within the SET_UNIT. --- * @{#SET_GROUP.ForEachGroupCompletelyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. --- * @{#SET_GROUP.ForEachGroupNotInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. --- --- Planned iterators methods in development are (so these are not yet available): --- --- * @{#SET_UNIT.ForEachUnitInUnit}: Calls a function for each unit contained within the SET_UNIT. --- * @{#SET_UNIT.ForEachUnitCompletelyInZone}: Iterate and call an iterator function for each **alive** UNIT presence completely in a @{Zone}, providing the UNIT and optional parameters to the called function. --- * @{#SET_UNIT.ForEachUnitNotInZone}: Iterate and call an iterator function for each **alive** UNIT presence not in a @{Zone}, providing the UNIT and optional parameters to the called function. --- --- === --- --- 4) @{Set#SET_CLIENT} class, extends @{Set#SET_BASE} --- =================================================== --- Mission designers can use the @{Set#SET_CLIENT} class to build sets of units belonging to certain: --- --- * Coalitions --- * Categories --- * Countries --- * Client types --- * Starting with certain prefix strings. --- --- 4.1) SET_CLIENT construction method: --- ---------------------------------- --- Create a new SET_CLIENT object with the @{#SET_CLIENT.New} method: --- --- * @{#SET_CLIENT.New}: Creates a new SET_CLIENT object. --- --- 4.2) Add or Remove CLIENT(s) from SET_CLIENT: --- ----------------------------------------- --- CLIENTs can be added and removed using the @{Set#SET_CLIENT.AddClientsByName} and @{Set#SET_CLIENT.RemoveClientsByName} respectively. --- These methods take a single CLIENT name or an array of CLIENT names to be added or removed from SET_CLIENT. --- --- 4.3) SET_CLIENT filter criteria: --- ------------------------------ --- You can set filter criteria to define the set of clients within the SET_CLIENT. --- Filter criteria are defined by: --- --- * @{#SET_CLIENT.FilterCoalitions}: Builds the SET_CLIENT with the clients belonging to the coalition(s). --- * @{#SET_CLIENT.FilterCategories}: Builds the SET_CLIENT with the clients belonging to the category(ies). --- * @{#SET_CLIENT.FilterTypes}: Builds the SET_CLIENT with the clients belonging to the client type(s). --- * @{#SET_CLIENT.FilterCountries}: Builds the SET_CLIENT with the clients belonging to the country(ies). --- * @{#SET_CLIENT.FilterPrefixes}: Builds the SET_CLIENT with the clients starting with the same prefix string(s). --- --- Once the filter criteria have been set for the SET_CLIENT, you can start filtering using: --- --- * @{#SET_CLIENT.FilterStart}: Starts the filtering of the clients within the SET_CLIENT. --- --- Planned filter criteria within development are (so these are not yet available): --- --- * @{#SET_CLIENT.FilterZones}: Builds the SET_CLIENT with the clients within a @{Zone#ZONE}. --- --- 4.4) SET_CLIENT iterators: --- ------------------------ --- Once the filters have been defined and the SET_CLIENT has been built, you can iterate the SET_CLIENT with the available iterator methods. --- The iterator methods will walk the SET_CLIENT set, and call for each element within the set a function that you provide. --- The following iterator methods are currently available within the SET_CLIENT: --- --- * @{#SET_CLIENT.ForEachClient}: Calls a function for each alive client it finds within the SET_CLIENT. --- --- ==== --- --- 5) @{Set#SET_AIRBASE} class, extends @{Set#SET_BASE} --- ==================================================== --- Mission designers can use the @{Set#SET_AIRBASE} class to build sets of airbases optionally belonging to certain: --- --- * Coalitions --- --- 5.1) SET_AIRBASE construction --- ----------------------------- --- Create a new SET_AIRBASE object with the @{#SET_AIRBASE.New} method: --- --- * @{#SET_AIRBASE.New}: Creates a new SET_AIRBASE object. --- --- 5.2) Add or Remove AIRBASEs from SET_AIRBASE --- -------------------------------------------- --- AIRBASEs can be added and removed using the @{Set#SET_AIRBASE.AddAirbasesByName} and @{Set#SET_AIRBASE.RemoveAirbasesByName} respectively. --- These methods take a single AIRBASE name or an array of AIRBASE names to be added or removed from SET_AIRBASE. --- --- 5.3) SET_AIRBASE filter criteria --- -------------------------------- --- You can set filter criteria to define the set of clients within the SET_AIRBASE. --- Filter criteria are defined by: --- --- * @{#SET_AIRBASE.FilterCoalitions}: Builds the SET_AIRBASE with the airbases belonging to the coalition(s). --- --- Once the filter criteria have been set for the SET_AIRBASE, you can start filtering using: --- --- * @{#SET_AIRBASE.FilterStart}: Starts the filtering of the airbases within the SET_AIRBASE. --- --- 5.4) SET_AIRBASE iterators: --- --------------------------- --- Once the filters have been defined and the SET_AIRBASE has been built, you can iterate the SET_AIRBASE with the available iterator methods. --- The iterator methods will walk the SET_AIRBASE set, and call for each airbase within the set a function that you provide. --- The following iterator methods are currently available within the SET_AIRBASE: --- --- * @{#SET_AIRBASE.ForEachAirbase}: Calls a function for each airbase it finds within the SET_AIRBASE. --- --- ==== +-- * Validate the presence of objects in the SET. +-- * Trigger events when objects in the SET change a zone presence. -- -- ### Authors: -- @@ -8201,7 +8006,22 @@ end -- @module Set ---- SET_BASE class +--- # 1) SET_BASE class, extends @{Base#BASE} +-- The @{Set#SET_BASE} class defines the core functions that define a collection of objects. +-- A SET provides iterators to iterate the SET, but will **temporarily** yield the ForEach interator loop at defined **"intervals"** to the mail simulator loop. +-- In this way, large loops can be done while not blocking the simulator main processing loop. +-- The default **"yield interval"** is after 10 objects processed. +-- The default **"time interval"** is after 0.001 seconds. +-- +-- ## 1.1) Add or remove objects from the SET +-- +-- Some key core functions are @{Set#SET_BASE.Add} and @{Set#SET_BASE.Remove} to add or remove objects from the SET in your logic. +-- +-- ## 1.2) Define the SET iterator **"yield interval"** and the **"time interval"** +-- +-- Modify the iterator intervals with the @{Set#SET_BASE.SetInteratorIntervals} method. +-- You can set the **"yield interval"**, and the **"time interval"**. (See above). +-- -- @type SET_BASE -- @field #table Filter -- @field #table Set @@ -8415,7 +8235,7 @@ end -- @return #number Count function SET_BASE:Count() - return #self.Index + return #self.Index or 0 end @@ -8750,7 +8570,55 @@ end -- SET_GROUP ---- SET_GROUP class +--- # 2) SET_GROUP class, extends @{Set#SET_BASE} +-- +-- Mission designers can use the @{Set#SET_GROUP} class to build sets of groups belonging to certain: +-- +-- * Coalitions +-- * Categories +-- * Countries +-- * Starting with certain prefix strings. +-- +-- ## 2.1) SET_GROUP constructor +-- +-- Create a new SET_GROUP object with the @{#SET_GROUP.New} method: +-- +-- * @{#SET_GROUP.New}: Creates a new SET_GROUP object. +-- +-- ## 2.2) Add or Remove GROUP(s) from SET_GROUP +-- +-- GROUPS can be added and removed using the @{Set#SET_GROUP.AddGroupsByName} and @{Set#SET_GROUP.RemoveGroupsByName} respectively. +-- These methods take a single GROUP name or an array of GROUP names to be added or removed from SET_GROUP. +-- +-- ## 2.3) SET_GROUP filter criteria +-- +-- You can set filter criteria to define the set of groups within the SET_GROUP. +-- Filter criteria are defined by: +-- +-- * @{#SET_GROUP.FilterCoalitions}: Builds the SET_GROUP with the groups belonging to the coalition(s). +-- * @{#SET_GROUP.FilterCategories}: Builds the SET_GROUP with the groups belonging to the category(ies). +-- * @{#SET_GROUP.FilterCountries}: Builds the SET_GROUP with the gruops belonging to the country(ies). +-- * @{#SET_GROUP.FilterPrefixes}: Builds the SET_GROUP with the groups starting with the same prefix string(s). +-- +-- Once the filter criteria have been set for the SET_GROUP, you can start filtering using: +-- +-- * @{#SET_GROUP.FilterStart}: Starts the filtering of the groups within the SET_GROUP and add or remove GROUP objects **dynamically**. +-- +-- Planned filter criteria within development are (so these are not yet available): +-- +-- * @{#SET_GROUP.FilterZones}: Builds the SET_GROUP with the groups within a @{Zone#ZONE}. +-- +-- ## 2.4) SET_GROUP iterators +-- +-- Once the filters have been defined and the SET_GROUP has been built, you can iterate the SET_GROUP with the available iterator methods. +-- The iterator methods will walk the SET_GROUP set, and call for each element within the set a function that you provide. +-- The following iterator methods are currently available within the SET_GROUP: +-- +-- * @{#SET_GROUP.ForEachGroup}: Calls a function for each alive group it finds within the SET_GROUP. +-- * @{#SET_GROUP.ForEachGroupCompletelyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- * @{#SET_GROUP.ForEachGroupPartlyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence partly in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- * @{#SET_GROUP.ForEachGroupNotInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- -- @type SET_GROUP -- @extends Core.Set#SET_BASE SET_GROUP = { @@ -9118,7 +8986,69 @@ function SET_GROUP:IsIncludeObject( MooseGroup ) return MooseGroupInclude end ---- SET_UNIT class +--- # 3) SET_UNIT class, extends @{Set#SET_BASE} +-- +-- Mission designers can use the SET_UNIT class to build sets of units belonging to certain: +-- +-- * Coalitions +-- * Categories +-- * Countries +-- * Unit types +-- * Starting with certain prefix strings. +-- +-- ## 3.1) SET_UNIT constructor +-- +-- Create a new SET_UNIT object with the @{#SET_UNIT.New} method: +-- +-- * @{#SET_UNIT.New}: Creates a new SET_UNIT object. +-- +-- ## 3.2) Add or Remove UNIT(s) from SET_UNIT +-- +-- UNITs can be added and removed using the @{Set#SET_UNIT.AddUnitsByName} and @{Set#SET_UNIT.RemoveUnitsByName} respectively. +-- These methods take a single UNIT name or an array of UNIT names to be added or removed from SET_UNIT. +-- +-- ## 3.3) SET_UNIT filter criteria +-- +-- You can set filter criteria to define the set of units within the SET_UNIT. +-- Filter criteria are defined by: +-- +-- * @{#SET_UNIT.FilterCoalitions}: Builds the SET_UNIT with the units belonging to the coalition(s). +-- * @{#SET_UNIT.FilterCategories}: Builds the SET_UNIT with the units belonging to the category(ies). +-- * @{#SET_UNIT.FilterTypes}: Builds the SET_UNIT with the units belonging to the unit type(s). +-- * @{#SET_UNIT.FilterCountries}: Builds the SET_UNIT with the units belonging to the country(ies). +-- * @{#SET_UNIT.FilterPrefixes}: Builds the SET_UNIT with the units starting with the same prefix string(s). +-- +-- Once the filter criteria have been set for the SET_UNIT, you can start filtering using: +-- +-- * @{#SET_UNIT.FilterStart}: Starts the filtering of the units within the SET_UNIT. +-- +-- Planned filter criteria within development are (so these are not yet available): +-- +-- * @{#SET_UNIT.FilterZones}: Builds the SET_UNIT with the units within a @{Zone#ZONE}. +-- +-- ## 3.4) SET_UNIT iterators +-- +-- Once the filters have been defined and the SET_UNIT has been built, you can iterate the SET_UNIT with the available iterator methods. +-- The iterator methods will walk the SET_UNIT set, and call for each element within the set a function that you provide. +-- The following iterator methods are currently available within the SET_UNIT: +-- +-- * @{#SET_UNIT.ForEachUnit}: Calls a function for each alive unit it finds within the SET_UNIT. +-- * @{#SET_GROUP.ForEachGroupCompletelyInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence completely in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- * @{#SET_GROUP.ForEachGroupNotInZone}: Iterate the SET_GROUP and call an iterator function for each **alive** GROUP presence not in a @{Zone}, providing the GROUP and optional parameters to the called function. +-- +-- Planned iterators methods in development are (so these are not yet available): +-- +-- * @{#SET_UNIT.ForEachUnitInUnit}: Calls a function for each unit contained within the SET_UNIT. +-- * @{#SET_UNIT.ForEachUnitCompletelyInZone}: Iterate and call an iterator function for each **alive** UNIT presence completely in a @{Zone}, providing the UNIT and optional parameters to the called function. +-- * @{#SET_UNIT.ForEachUnitNotInZone}: Iterate and call an iterator function for each **alive** UNIT presence not in a @{Zone}, providing the UNIT and optional parameters to the called function. +-- +-- ## 3.5 ) SET_UNIT atomic methods +-- +-- Various methods exist for a SET_UNIT to perform actions or calculations and retrieve results from the SET_UNIT: +-- +-- * @{#SET_UNIT.GetTypeNames}(): Retrieve the type names of the @{Unit}s in the SET, delimited by a comma. +-- +-- -- @type SET_UNIT -- @extends Core.Set#SET_BASE SET_UNIT = { @@ -9732,9 +9662,81 @@ function SET_UNIT:IsIncludeObject( MUnit ) end +--- Retrieve the type names of the @{Unit}s in the SET, delimited by an optional delimiter. +-- @param #SET_UNIT self +-- @param #string Delimiter (optional) The delimiter, which is default a comma. +-- @return #string The types of the @{Unit}s delimited. +function SET_UNIT:GetTypeNames( Delimiter ) + + Delimiter = Delimiter or ", " + local TypeReport = REPORT:New() + local Types = {} + + for UnitName, UnitData in pairs( self:GetSet() ) do + + local Unit = UnitData -- Wrapper.Unit#UNIT + local UnitTypeName = Unit:GetTypeName() + + if not Types[UnitTypeName] then + Types[UnitTypeName] = UnitTypeName + TypeReport:Add( UnitTypeName ) + end + end + + return TypeReport:Text( Delimiter ) +end + + --- SET_CLIENT ---- SET_CLIENT class +--- # 4) SET_CLIENT class, extends @{Set#SET_BASE} +-- +-- Mission designers can use the @{Set#SET_CLIENT} class to build sets of units belonging to certain: +-- +-- * Coalitions +-- * Categories +-- * Countries +-- * Client types +-- * Starting with certain prefix strings. +-- +-- ## 4.1) SET_CLIENT constructor +-- +-- Create a new SET_CLIENT object with the @{#SET_CLIENT.New} method: +-- +-- * @{#SET_CLIENT.New}: Creates a new SET_CLIENT object. +-- +-- ## 4.2) Add or Remove CLIENT(s) from SET_CLIENT +-- +-- CLIENTs can be added and removed using the @{Set#SET_CLIENT.AddClientsByName} and @{Set#SET_CLIENT.RemoveClientsByName} respectively. +-- These methods take a single CLIENT name or an array of CLIENT names to be added or removed from SET_CLIENT. +-- +-- ## 4.3) SET_CLIENT filter criteria +-- +-- You can set filter criteria to define the set of clients within the SET_CLIENT. +-- Filter criteria are defined by: +-- +-- * @{#SET_CLIENT.FilterCoalitions}: Builds the SET_CLIENT with the clients belonging to the coalition(s). +-- * @{#SET_CLIENT.FilterCategories}: Builds the SET_CLIENT with the clients belonging to the category(ies). +-- * @{#SET_CLIENT.FilterTypes}: Builds the SET_CLIENT with the clients belonging to the client type(s). +-- * @{#SET_CLIENT.FilterCountries}: Builds the SET_CLIENT with the clients belonging to the country(ies). +-- * @{#SET_CLIENT.FilterPrefixes}: Builds the SET_CLIENT with the clients starting with the same prefix string(s). +-- +-- Once the filter criteria have been set for the SET_CLIENT, you can start filtering using: +-- +-- * @{#SET_CLIENT.FilterStart}: Starts the filtering of the clients within the SET_CLIENT. +-- +-- Planned filter criteria within development are (so these are not yet available): +-- +-- * @{#SET_CLIENT.FilterZones}: Builds the SET_CLIENT with the clients within a @{Zone#ZONE}. +-- +-- ## 4.4) SET_CLIENT iterators +-- +-- Once the filters have been defined and the SET_CLIENT has been built, you can iterate the SET_CLIENT with the available iterator methods. +-- The iterator methods will walk the SET_CLIENT set, and call for each element within the set a function that you provide. +-- The following iterator methods are currently available within the SET_CLIENT: +-- +-- * @{#SET_CLIENT.ForEachClient}: Calls a function for each alive client it finds within the SET_CLIENT. +-- -- @type SET_CLIENT -- @extends Core.Set#SET_BASE SET_CLIENT = { @@ -10091,7 +10093,42 @@ end --- SET_AIRBASE ---- SET_AIRBASE class +--- # 5) SET_AIRBASE class, extends @{Set#SET_BASE} +-- +-- Mission designers can use the @{Set#SET_AIRBASE} class to build sets of airbases optionally belonging to certain: +-- +-- * Coalitions +-- +-- ## 5.1) SET_AIRBASE constructor +-- +-- Create a new SET_AIRBASE object with the @{#SET_AIRBASE.New} method: +-- +-- * @{#SET_AIRBASE.New}: Creates a new SET_AIRBASE object. +-- +-- ## 5.2) Add or Remove AIRBASEs from SET_AIRBASE +-- +-- AIRBASEs can be added and removed using the @{Set#SET_AIRBASE.AddAirbasesByName} and @{Set#SET_AIRBASE.RemoveAirbasesByName} respectively. +-- These methods take a single AIRBASE name or an array of AIRBASE names to be added or removed from SET_AIRBASE. +-- +-- ## 5.3) SET_AIRBASE filter criteria +-- +-- You can set filter criteria to define the set of clients within the SET_AIRBASE. +-- Filter criteria are defined by: +-- +-- * @{#SET_AIRBASE.FilterCoalitions}: Builds the SET_AIRBASE with the airbases belonging to the coalition(s). +-- +-- Once the filter criteria have been set for the SET_AIRBASE, you can start filtering using: +-- +-- * @{#SET_AIRBASE.FilterStart}: Starts the filtering of the airbases within the SET_AIRBASE. +-- +-- ## 5.4) SET_AIRBASE iterators +-- +-- Once the filters have been defined and the SET_AIRBASE has been built, you can iterate the SET_AIRBASE with the available iterator methods. +-- The iterator methods will walk the SET_AIRBASE set, and call for each airbase within the set a function that you provide. +-- The following iterator methods are currently available within the SET_AIRBASE: +-- +-- * @{#SET_AIRBASE.ForEachAirbase}: Calls a function for each airbase it finds within the SET_AIRBASE. +-- -- @type SET_AIRBASE -- @extends Core.Set#SET_BASE SET_AIRBASE = { @@ -11901,7 +11938,6 @@ do -- FSM for ProcessID, Process in pairs( self:GetProcesses() ) do if Process.From == From and Process.Event == Event then - self:T( Process ) return Process.fsm end end @@ -11930,7 +11966,7 @@ do -- FSM -- @param #number Score is a number providing the score of the status. -- @return #FSM self function FSM:AddScore( State, ScoreText, Score ) - self:F2( { State, ScoreText, Score } ) + self:F( { State, ScoreText, Score } ) self._Scores[State] = self._Scores[State] or {} self._Scores[State].ScoreText = ScoreText @@ -11948,14 +11984,15 @@ do -- FSM -- @param #number Score is a number providing the score of the status. -- @return #FSM self function FSM:AddScoreProcess( From, Event, State, ScoreText, Score ) - self:F2( { Event, State, ScoreText, Score } ) + self:F( { From, Event, State, ScoreText, Score } ) local Process = self:GetProcess( From, Event ) - self:T( { Process = Process._Name, Scores = Process._Scores, State = State, ScoreText = ScoreText, Score = Score } ) Process._Scores[State] = Process._Scores[State] or {} Process._Scores[State].ScoreText = ScoreText Process._Scores[State].Score = Score + + self:T( Process._Scores ) return Process end @@ -12528,14 +12565,14 @@ end -- @param #string Event -- @param #string From -- @param #string To - function FSM_PROCESS:onstatechange( ProcessUnit, From, Event, To, Dummy ) + function FSM_PROCESS:onstatechange( ProcessUnit, Task, From, Event, To, Dummy ) self:T( { ProcessUnit, From, Event, To, Dummy, self:IsTrace() } ) if self:IsTrace() then MESSAGE:New( "@ Process " .. self:GetClassNameAndID() .. " : " .. Event .. " changed to state " .. To, 2 ):ToAll() end - self:T( self._Scores[To] ) + self:T( { Scores = self._Scores, To = To } ) -- TODO: This needs to be reworked with a callback functions allocated within Task, and set within the mission script from the Task Objects... if self._Scores[To] then @@ -26574,7 +26611,7 @@ do -- DETECTION_BASE --- Get a detected item using a given numeric index. -- @param #DETECTION_BASE self -- @param #number Index - -- @return DETECTION_BASE.DetectedItem + -- @return #DETECTION_BASE.DetectedItem function DETECTION_BASE:GetDetectedItem( Index ) local DetectedItem = self.DetectedItems[Index] @@ -26837,7 +26874,7 @@ do -- DETECTION_UNITS local DetectedItemUnit = DetectedSet:GetFirst() -- Wrapper.Unit#UNIT - if DetectedItemUnit then + if DetectedItemUnit and DetectedItemUnit:IsAlive() then self:T(DetectedItemUnit) local UnitCategoryName = DetectedItemUnit:GetCategoryName() or "" @@ -26855,8 +26892,16 @@ do -- DETECTION_UNITS UnitDistanceText = string.format( "%.2f", DetectedItem.Distance ) .. " km, visual contact" end + local DetectedItemPointVec3 = DetectedItemUnit:GetPointVec3() + local DetectedItemPointLL = DetectedItemPointVec3:ToStringLL( 3, true ) + + local ThreatLevelA2G = DetectedItemUnit:GetThreatLevel( DetectedItem ) + ReportSummary = string.format( - "%s%s", + "%s - Threat [%s] (%2d) - %s%s", + DetectedItemPointLL, + string.rep( "■", ThreatLevelA2G ), + ThreatLevelA2G, UnitCategoryText, UnitDistanceText ) @@ -26971,10 +27016,10 @@ do -- DETECTION_TYPES for DetectedItemID, DetectedItem in pairs( self.DetectedItems ) do - local DetectedItemSet = DetectedItem:GetSet() -- Core.Set#SET_UNIT + local DetectedItemSet = DetectedItem.Set -- Core.Set#SET_UNIT local DetectedTypeName = DetectedItem.Type - for DetectedUnitName, DetectedUnitData in pairs( DetectedItemSet ) do + for DetectedUnitName, DetectedUnitData in pairs( DetectedItemSet:GetSet() ) do local DetectedUnit = DetectedUnitData -- Wrapper.Unit#UNIT local DetectedObject = nil @@ -27042,13 +27087,16 @@ do -- DETECTION_TYPES self:T( DetectedItem ) if DetectedItem then - local ThreatLevelA2G = DetectedSet:CalculateThreatLevelA2G() + local ThreatLevelA2G = DetectedSet:CalculateThreatLevelA2G() + local DetectedItemsCount = DetectedSet:Count() + local DetectedItemType = DetectedItem.Type local ReportSummary = string.format( - "Type #%s - Threat Level [%s] (%2d)", - DetectedItem.Type, + "Threat [%s] (%2d) - %2d of %s", string.rep( "■", ThreatLevelA2G ), - ThreatLevelA2G + ThreatLevelA2G, + DetectedItemsCount, + DetectedItemType ) self:T( ReportSummary ) @@ -27152,17 +27200,23 @@ do -- DETECTION_AREAS local DetectedItem = self:GetDetectedItem( Index ) if DetectedItem then local DetectedSet = self:GetDetectedSet( Index ) - local ThreatLevelA2G = self:GetTreatLevelA2G( DetectedItem ) local ReportSummaryItem local DetectedZone = self:GetDetectedZone( Index ) local DetectedItemPointVec3 = DetectedZone:GetPointVec3() local DetectedItemPointLL = DetectedItemPointVec3:ToStringLL( 3, true ) + + local ThreatLevelA2G = self:GetTreatLevelA2G( DetectedItem ) + local DetectedItemsCount = DetectedSet:Count() + local DetectedItemsTypes = DetectedSet:GetTypeNames() + local ReportSummary = string.format( - "%s - Threat Level [%s] (%2d)", + "%s - Threat [%s] (%2d) - %2d of %s", DetectedItemPointLL, string.rep( "■", ThreatLevelA2G ), - ThreatLevelA2G + ThreatLevelA2G, + DetectedItemsCount, + DetectedItemsTypes ) return ReportSummary @@ -32121,8 +32175,14 @@ function REPORT:Add( Text ) return self.Report[#self.Report] end -function REPORT:Text() - return table.concat( self.Report, "\n" ) +--- Produces the text of the report, taking into account an optional delimeter, which is \n by default. +-- @param #REPORT self +-- @param #string Delimiter (optional) A delimiter text. +-- @return #string The report text. +function REPORT:Text( Delimiter ) + Delimiter = Delimiter or "\n" + local ReportText = table.concat( self.Report, Delimiter ) or "" + return ReportText end --- The COMMANDCENTER class @@ -34007,11 +34067,12 @@ end -- @param #string To function TASK:onenterAssigned( From, Event, To, PlayerUnit, PlayerName ) - self:E("Task Assigned") + self:E( { "Task Assigned", self.Dispatcher } ) self:MessageToGroups( "Task " .. self:GetName() .. " has been assigned to your group." ) if self.Dispatcher then + self:E( "Firing Assign event " ) self.Dispatcher:Assign( self, PlayerUnit, PlayerName ) end @@ -34618,9 +34679,9 @@ do -- TASK_A2G_DISPATCHER local ChangeMsg = {} local Mission = self.Mission - local ReportSEAD = REPORT:New( " - SEAD Tasks:") - local ReportCAS = REPORT:New( " - CAS Tasks:") - local ReportBAI = REPORT:New( " - BAI Tasks:") + local ReportSEAD = REPORT:New( "- SEAD Tasks:") + local ReportCAS = REPORT:New( "- CAS Tasks:") + local ReportBAI = REPORT:New( "- BAI Tasks:") local ReportChanges = REPORT:New( " - Changes:" ) --- First we need to the detected targets. @@ -34701,7 +34762,7 @@ do -- TASK_A2G_DISPATCHER Mission:GetCommandCenter():MessageToGroup( string.format( "HQ Reporting - Planned tasks for mission '%s':\n%s\n", self.Mission:GetName(), - string.format( "%s\n%s\n%s\n%s", ReportSEAD:Text(), ReportCAS:Text(), ReportBAI:Text(), ReportChanges:Text() + string.format( "%s\n\n%s\n\n%s\n\n%s", ReportSEAD:Text(), ReportCAS:Text(), ReportBAI:Text(), ReportChanges:Text() ) ), TaskGroup ) @@ -35021,6 +35082,7 @@ do -- TASK_A2G -- @param Wrapper.Unit#UNIT TaskUnit -- @return #TASK_A2G function TASK_A2G:SetScoreOnDestroy( Text, Score, TaskUnit ) + self:F( { Text, Score, TaskUnit } ) local ProcessUnit = self:GetUnitProcess( TaskUnit ) @@ -35036,6 +35098,7 @@ do -- TASK_A2G -- @param Wrapper.Unit#UNIT TaskUnit -- @return #TASK_A2G function TASK_A2G:SetScoreOnSuccess( Text, Score, TaskUnit ) + self:F( { Text, Score, TaskUnit } ) local ProcessUnit = self:GetUnitProcess( TaskUnit ) @@ -35051,6 +35114,7 @@ do -- TASK_A2G -- @param Wrapper.Unit#UNIT TaskUnit -- @return #TASK_A2G function TASK_A2G:SetPenaltyOnFailed( Text, Penalty, TaskUnit ) + self:F( { Text, Score, TaskUnit } ) local ProcessUnit = self:GetUnitProcess( TaskUnit ) diff --git a/Moose Presentations/SET.pptx b/Moose Presentations/SET.pptx new file mode 100644 index 0000000000000000000000000000000000000000..a032db2f30803a2a0d2359bf8811dff926fe102a GIT binary patch literal 5106622 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

y)<1JX6%BVJjKA?L?2gb2uM=@ivHEfb5# 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 z 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

Return value

+

#DETECTION_BASE.DetectedItem:

-

DETECTION_BASE.DetectedItem

diff --git a/docs/Documentation/Fsm.html b/docs/Documentation/Fsm.html index a809388d5..92c994f6b 100644 --- a/docs/Documentation/Fsm.html +++ b/docs/Documentation/Fsm.html @@ -877,7 +877,7 @@ YYYY-MM-DD: CLASS:NewFunction( Params ) added

- FSM_PROCESS:onstatechange(ProcessUnit, Event, From, To, Dummy) + FSM_PROCESS:onstatechange(ProcessUnit, Event, From, To, Task, Dummy)

StateMachine callback function for a FSM_PROCESS

@@ -1554,7 +1554,7 @@ A string defining the start state.

- #string + FSM._StartState @@ -1853,6 +1853,7 @@ A string defining the start state.

+ FSM.current @@ -2637,7 +2638,7 @@ self

-FSM_PROCESS:onstatechange(ProcessUnit, Event, From, To, Dummy) +FSM_PROCESS:onstatechange(ProcessUnit, Event, From, To, Task, Dummy)
@@ -2668,6 +2669,11 @@ self

  • +

    Task :

    + +
  • +
  • +

    Dummy :

  • diff --git a/docs/Documentation/Point.html b/docs/Documentation/Point.html index d62614444..63ef7724d 100644 --- a/docs/Documentation/Point.html +++ b/docs/Documentation/Point.html @@ -1346,7 +1346,6 @@ The new calculated POINT_VEC2.

    - POINT_VEC2.z diff --git a/docs/Documentation/Set.html b/docs/Documentation/Set.html index 11ff450fd..0f35628fd 100644 --- a/docs/Documentation/Set.html +++ b/docs/Documentation/Set.html @@ -72,253 +72,39 @@

    Module Set

    -

    Core - SET classes define collections of objects to perform bulk actions and logically group objects.

    +

    Core - SET_ classes define collections of objects to perform bulk actions and logically group objects.

    -
    - -

    1) Set#SET_BASE class, extends Base#BASE

    -

    The Set#SET_BASE class defines the core functions that define a collection of objects. -A SET provides iterators to iterate the SET, but will temporarily yield the ForEach interator loop at defined "intervals" to the mail simulator loop. -In this way, large loops can be done while not blocking the simulator main processing loop. -The default "yield interval" is after 10 objects processed. -The default "time interval" is after 0.001 seconds.

    - -

    1.1) Add or remove objects from the SET

    -

    Some key core functions are Set#SET_BASE.Add and Set#SET_BASE.Remove to add or remove objects from the SET in your logic.

    - -

    1.2) Define the SET iterator "yield interval" and the "time interval"

    -

    Modify the iterator intervals with the Set#SET_BASE.SetInteratorIntervals method. -You can set the "yield interval", and the "time interval". (See above).

    +

    Banner Image


    -

    2) Set#SET_GROUP class, extends Set#SET_BASE

    -

    Mission designers can use the Set#SET_GROUP class to build sets of groups belonging to certain:

    +

    SET_ classes group objects of the same type into a collection, which is either:

      -
    • Coalitions
    • -
    • Categories
    • -
    • Countries
    • -
    • Starting with certain prefix strings.
    • +
    • Manually managed using the :Add...() or :Remove...() methods. The initial SET can be filtered with the **SET_BASE.FilterOnce()** method
    • +
    • Dynamically updated when new objects are created or objects are destroyed using the **SET_BASE.FilterStart()** method.
    -

    2.1) SET_GROUP construction method:

    -

    Create a new SET_GROUP object with the SET_GROUP.New method:

    +

    Various types of SET_ classes are available:

    -

    2.2) Add or Remove GROUP(s) from SET_GROUP:

    -

    GROUPS can be added and removed using the Set#SET_GROUP.AddGroupsByName and Set#SET_GROUP.RemoveGroupsByName respectively. -These methods take a single GROUP name or an array of GROUP names to be added or removed from SET_GROUP.

    +

    These classes are derived from #SET_BASE, which contains the main methods to manage SETs.

    -

    2.3) SET_GROUP filter criteria:

    -

    You can set filter criteria to define the set of groups within the SET_GROUP. -Filter criteria are defined by:

    +

    A multitude of other methods are available in SET_ classes that allow to:

      -
    • SET_GROUP.FilterCoalitions: Builds the SET_GROUP with the groups belonging to the coalition(s).
    • -
    • SET_GROUP.FilterCategories: Builds the SET_GROUP with the groups belonging to the category(ies).
    • -
    • SET_GROUP.FilterCountries: Builds the SET_GROUP with the gruops belonging to the country(ies).
    • -
    • SET_GROUP.FilterPrefixes: Builds the SET_GROUP with the groups starting with the same prefix string(s).
    • +
    • Validate the presence of objects in the SET.
    • +
    • Trigger events when objects in the SET change a zone presence.
    -

    Once the filter criteria have been set for the SET_GROUP, you can start filtering using:

    - -
      -
    • SET_GROUP.FilterStart: Starts the filtering of the groups within the SET_GROUP and add or remove GROUP objects dynamically.
    • -
    - -

    Planned filter criteria within development are (so these are not yet available):

    - - - -

    2.4) SET_GROUP iterators:

    -

    Once the filters have been defined and the SETGROUP has been built, you can iterate the SETGROUP with the available iterator methods. -The iterator methods will walk the SETGROUP set, and call for each element within the set a function that you provide. -The following iterator methods are currently available within the SETGROUP:

    - -
      -
    • SET_GROUP.ForEachGroup: Calls a function for each alive group it finds within the SET_GROUP.
    • -
    • SET_GROUP.ForEachGroupCompletelyInZone: Iterate the SET_GROUP and call an iterator function for each alive GROUP presence completely in a Zone, providing the GROUP and optional parameters to the called function.
    • -
    • SET_GROUP.ForEachGroupPartlyInZone: Iterate the SET_GROUP and call an iterator function for each alive GROUP presence partly in a Zone, providing the GROUP and optional parameters to the called function.
    • -
    • SET_GROUP.ForEachGroupNotInZone: Iterate the SET_GROUP and call an iterator function for each alive GROUP presence not in a Zone, providing the GROUP and optional parameters to the called function.
    • -
    - -
    - -

    3) Set#SET_UNIT class, extends Set#SET_BASE

    -

    Mission designers can use the Set#SET_UNIT class to build sets of units belonging to certain:

    - -
      -
    • Coalitions
    • -
    • Categories
    • -
    • Countries
    • -
    • Unit types
    • -
    • Starting with certain prefix strings.
    • -
    - -

    3.1) SET_UNIT construction method:

    -

    Create a new SET_UNIT object with the SET_UNIT.New method:

    - - - -

    3.2) Add or Remove UNIT(s) from SET_UNIT:

    -

    UNITs can be added and removed using the Set#SET_UNIT.AddUnitsByName and Set#SET_UNIT.RemoveUnitsByName respectively. -These methods take a single UNIT name or an array of UNIT names to be added or removed from SET_UNIT.

    - -

    3.3) SET_UNIT filter criteria:

    -

    You can set filter criteria to define the set of units within the SET_UNIT. -Filter criteria are defined by:

    - - - -

    Once the filter criteria have been set for the SET_UNIT, you can start filtering using:

    - - - -

    Planned filter criteria within development are (so these are not yet available):

    - - - -

    3.4) SET_UNIT iterators:

    -

    Once the filters have been defined and the SETUNIT has been built, you can iterate the SETUNIT with the available iterator methods. -The iterator methods will walk the SETUNIT set, and call for each element within the set a function that you provide. -The following iterator methods are currently available within the SETUNIT:

    - -
      -
    • SET_UNIT.ForEachUnit: Calls a function for each alive unit it finds within the SET_UNIT.
    • -
    • SET_GROUP.ForEachGroupCompletelyInZone: Iterate the SET_GROUP and call an iterator function for each alive GROUP presence completely in a Zone, providing the GROUP and optional parameters to the called function.
    • -
    • SET_GROUP.ForEachGroupNotInZone: Iterate the SET_GROUP and call an iterator function for each alive GROUP presence not in a Zone, providing the GROUP and optional parameters to the called function.
    • -
    - -

    Planned iterators methods in development are (so these are not yet available):

    - - - -
    - -

    4) Set#SET_CLIENT class, extends Set#SET_BASE

    -

    Mission designers can use the Set#SET_CLIENT class to build sets of units belonging to certain:

    - -
      -
    • Coalitions
    • -
    • Categories
    • -
    • Countries
    • -
    • Client types
    • -
    • Starting with certain prefix strings.
    • -
    - -

    4.1) SET_CLIENT construction method:

    -

    Create a new SET_CLIENT object with the SET_CLIENT.New method:

    - - - -

    4.2) Add or Remove CLIENT(s) from SET_CLIENT:

    -

    CLIENTs can be added and removed using the Set#SET_CLIENT.AddClientsByName and Set#SET_CLIENT.RemoveClientsByName respectively. -These methods take a single CLIENT name or an array of CLIENT names to be added or removed from SET_CLIENT.

    - -

    4.3) SET_CLIENT filter criteria:

    -

    You can set filter criteria to define the set of clients within the SET_CLIENT. -Filter criteria are defined by:

    - - - -

    Once the filter criteria have been set for the SET_CLIENT, you can start filtering using:

    - - - -

    Planned filter criteria within development are (so these are not yet available):

    - - - -

    4.4) SET_CLIENT iterators:

    -

    Once the filters have been defined and the SETCLIENT has been built, you can iterate the SETCLIENT with the available iterator methods. -The iterator methods will walk the SETCLIENT set, and call for each element within the set a function that you provide. -The following iterator methods are currently available within the SETCLIENT:

    - - - -
    - -

    5) Set#SET_AIRBASE class, extends Set#SET_BASE

    -

    Mission designers can use the Set#SET_AIRBASE class to build sets of airbases optionally belonging to certain:

    - -
      -
    • Coalitions
    • -
    - -

    5.1) SET_AIRBASE construction

    -

    Create a new SET_AIRBASE object with the SET_AIRBASE.New method:

    - - - -

    5.2) Add or Remove AIRBASEs from SET_AIRBASE

    -

    AIRBASEs can be added and removed using the Set#SET_AIRBASE.AddAirbasesByName and Set#SET_AIRBASE.RemoveAirbasesByName respectively. -These methods take a single AIRBASE name or an array of AIRBASE names to be added or removed from SET_AIRBASE.

    - -

    5.3) SET_AIRBASE filter criteria

    -

    You can set filter criteria to define the set of clients within the SET_AIRBASE. -Filter criteria are defined by:

    - - - -

    Once the filter criteria have been set for the SET_AIRBASE, you can start filtering using:

    - - - -

    5.4) SET_AIRBASE iterators:

    -

    Once the filters have been defined and the SETAIRBASE has been built, you can iterate the SETAIRBASE with the available iterator methods. -The iterator methods will walk the SETAIRBASE set, and call for each airbase within the set a function that you provide. -The following iterator methods are currently available within the SETAIRBASE:

    - - - -
    -

    Authors:

      @@ -1026,6 +812,12 @@ The following iterator methods are currently available within the SETAIRBAS SET_UNIT:ForEachUnitNotInZone(ZoneObject, IteratorFunction, ...)

      Iterate the SET_UNIT and call an iterator function for each alive UNIT presence not in a Zone, providing the UNIT and optional parameters to the called function.

      + + + + SET_UNIT:GetTypeNames(Delimiter) + +

      Retrieve the type names of the Units in the SET, delimited by an optional delimiter.

      @@ -1171,7 +963,54 @@ The following iterator methods are currently available within the SETAIRBAS

      Type SET_AIRBASE

      -

      SET_AIRBASE class

      +

      5) SET_AIRBASE class, extends Set#SET_BASE

      + +

      Mission designers can use the Set#SET_AIRBASE class to build sets of airbases optionally belonging to certain:

      + +
        +
      • Coalitions
      • +
      + +

      5.1) SET_AIRBASE constructor

      + +

      Create a new SET_AIRBASE object with the SET_AIRBASE.New method:

      + + + + +

      +

      5.2) Add or Remove AIRBASEs from SET_AIRBASE

      + +

      AIRBASEs can be added and removed using the Set#SET_AIRBASE.AddAirbasesByName and Set#SET_AIRBASE.RemoveAirbasesByName respectively. +These methods take a single AIRBASE name or an array of AIRBASE names to be added or removed from SET_AIRBASE.

      + +

      5.3) SET_AIRBASE filter criteria

      + +

      You can set filter criteria to define the set of clients within the SET_AIRBASE. +Filter criteria are defined by:

      + + + +

      Once the filter criteria have been set for the SET_AIRBASE, you can start filtering using:

      + + + +

      5.4) SET_AIRBASE iterators

      + +

      Once the filters have been defined and the SETAIRBASE has been built, you can iterate the SETAIRBASE with the available iterator methods. +The iterator methods will walk the SETAIRBASE set, and call for each airbase within the set a function that you provide. +The following iterator methods are currently available within the SETAIRBASE:

      + + +

      Field(s)

      @@ -1576,7 +1415,24 @@ A single name or an array of AIRBASE names.

      Type SET_BASE

      -

      SET_BASE class

      +

      1) SET_BASE class, extends Base#BASE

      +

      The Set#SET_BASE class defines the core functions that define a collection of objects.

      + + +

      A SET provides iterators to iterate the SET, but will temporarily yield the ForEach interator loop at defined "intervals" to the mail simulator loop. +In this way, large loops can be done while not blocking the simulator main processing loop. +The default "yield interval" is after 10 objects processed. +The default "time interval" is after 0.001 seconds.

      + +

      1.1) Add or remove objects from the SET

      + +

      Some key core functions are Set#SET_BASE.Add and Set#SET_BASE.Remove to add or remove objects from the SET in your logic.

      + +

      1.2) Define the SET iterator "yield interval" and the "time interval"

      + +

      Modify the iterator intervals with the Set#SET_BASE.SetInteratorIntervals method. +You can set the "yield interval", and the "time interval". (See above).

      +

      Field(s)

      @@ -2279,7 +2135,68 @@ The Object found.

      Type SET_CLIENT

      -

      SET_CLIENT class

      +

      4) SET_CLIENT class, extends Set#SET_BASE

      + +

      Mission designers can use the Set#SET_CLIENT class to build sets of units belonging to certain:

      + +
        +
      • Coalitions
      • +
      • Categories
      • +
      • Countries
      • +
      • Client types
      • +
      • Starting with certain prefix strings.
      • +
      + + +

      +

      4.1) SET_CLIENT constructor

      + +

      Create a new SET_CLIENT object with the SET_CLIENT.New method:

      + + + +

      4.2) Add or Remove CLIENT(s) from SET_CLIENT

      + +

      CLIENTs can be added and removed using the Set#SET_CLIENT.AddClientsByName and Set#SET_CLIENT.RemoveClientsByName respectively. +These methods take a single CLIENT name or an array of CLIENT names to be added or removed from SET_CLIENT.

      + +

      4.3) SET_CLIENT filter criteria

      + +

      You can set filter criteria to define the set of clients within the SET_CLIENT. +Filter criteria are defined by:

      + + + +

      Once the filter criteria have been set for the SET_CLIENT, you can start filtering using:

      + + + +

      Planned filter criteria within development are (so these are not yet available):

      + + + +

      4.4) SET_CLIENT iterators

      + +

      Once the filters have been defined and the SETCLIENT has been built, you can iterate the SETCLIENT with the available iterator methods. +The iterator methods will walk the SETCLIENT set, and call for each element within the set a function that you provide. +The following iterator methods are currently available within the SETCLIENT:

      + + +

      Field(s)

      @@ -2823,7 +2740,69 @@ A single name or an array of CLIENT names.

      Type SET_GROUP

      -

      SET_GROUP class

      +

      2) SET_GROUP class, extends Set#SET_BASE

      + +

      Mission designers can use the Set#SET_GROUP class to build sets of groups belonging to certain:

      + +
        +
      • Coalitions
      • +
      • Categories
      • +
      • Countries
      • +
      • Starting with certain prefix strings.
      • +
      + + +

      +

      2.1) SET_GROUP constructor

      + +

      Create a new SET_GROUP object with the SET_GROUP.New method:

      + + + +

      2.2) Add or Remove GROUP(s) from SET_GROUP

      + +

      GROUPS can be added and removed using the Set#SET_GROUP.AddGroupsByName and Set#SET_GROUP.RemoveGroupsByName respectively. +These methods take a single GROUP name or an array of GROUP names to be added or removed from SET_GROUP.

      + +

      2.3) SET_GROUP filter criteria

      + +

      You can set filter criteria to define the set of groups within the SET_GROUP. +Filter criteria are defined by:

      + + + +

      Once the filter criteria have been set for the SET_GROUP, you can start filtering using:

      + +
        +
      • SET_GROUP.FilterStart: Starts the filtering of the groups within the SET_GROUP and add or remove GROUP objects dynamically.
      • +
      + +

      Planned filter criteria within development are (so these are not yet available):

      + + + +

      2.4) SET_GROUP iterators

      + +

      Once the filters have been defined and the SETGROUP has been built, you can iterate the SETGROUP with the available iterator methods. +The iterator methods will walk the SETGROUP set, and call for each element within the set a function that you provide. +The following iterator methods are currently available within the SETGROUP:

      + +
        +
      • SET_GROUP.ForEachGroup: Calls a function for each alive group it finds within the SET_GROUP.
      • +
      • SET_GROUP.ForEachGroupCompletelyInZone: Iterate the SET_GROUP and call an iterator function for each alive GROUP presence completely in a Zone, providing the GROUP and optional parameters to the called function.
      • +
      • SET_GROUP.ForEachGroupPartlyInZone: Iterate the SET_GROUP and call an iterator function for each alive GROUP presence partly in a Zone, providing the GROUP and optional parameters to the called function.
      • +
      • SET_GROUP.ForEachGroupNotInZone: Iterate the SET_GROUP and call an iterator function for each alive GROUP presence not in a Zone, providing the GROUP and optional parameters to the called function.
      • +
      +

      Field(s)

      @@ -3361,7 +3340,87 @@ A single name or an array of GROUP names.

      Type SET_UNIT

      -

      SET_UNIT class

      +

      3) SET_UNIT class, extends Set#SET_BASE

      + +

      Mission designers can use the SET_UNIT class to build sets of units belonging to certain:

      + +
        +
      • Coalitions
      • +
      • Categories
      • +
      • Countries
      • +
      • Unit types
      • +
      • Starting with certain prefix strings.
      • +
      + + +

      +

      3.1) SET_UNIT constructor

      + +

      Create a new SET_UNIT object with the SET_UNIT.New method:

      + + + +

      3.2) Add or Remove UNIT(s) from SET_UNIT

      + +

      UNITs can be added and removed using the Set#SET_UNIT.AddUnitsByName and Set#SET_UNIT.RemoveUnitsByName respectively. +These methods take a single UNIT name or an array of UNIT names to be added or removed from SET_UNIT.

      + +

      3.3) SET_UNIT filter criteria

      + +

      You can set filter criteria to define the set of units within the SET_UNIT. +Filter criteria are defined by:

      + + + +

      Once the filter criteria have been set for the SET_UNIT, you can start filtering using:

      + + + +

      Planned filter criteria within development are (so these are not yet available):

      + + + +

      3.4) SET_UNIT iterators

      + +

      Once the filters have been defined and the SETUNIT has been built, you can iterate the SETUNIT with the available iterator methods. +The iterator methods will walk the SETUNIT set, and call for each element within the set a function that you provide. +The following iterator methods are currently available within the SETUNIT:

      + +
        +
      • SET_UNIT.ForEachUnit: Calls a function for each alive unit it finds within the SET_UNIT.
      • +
      • SET_GROUP.ForEachGroupCompletelyInZone: Iterate the SET_GROUP and call an iterator function for each alive GROUP presence completely in a Zone, providing the GROUP and optional parameters to the called function.
      • +
      • SET_GROUP.ForEachGroupNotInZone: Iterate the SET_GROUP and call an iterator function for each alive GROUP presence not in a Zone, providing the GROUP and optional parameters to the called function.
      • +
      + +

      Planned iterators methods in development are (so these are not yet available):

      + + + +

      3.5 ) SET_UNIT atomic methods

      + +

      Various methods exist for a SETUNIT to perform actions or calculations and retrieve results from the SETUNIT:

      + + + +

      Field(s)

      @@ -3904,6 +3963,33 @@ self

      + +SET_UNIT:GetTypeNames(Delimiter) + +
      +
      + +

      Retrieve the type names of the Units in the SET, delimited by an optional delimiter.

      + +

      Parameter

      +
        +
      • + +

        #string Delimiter : +(optional) The delimiter, which is default a comma.

        + +
      • +
      +

      Return value

      + +

      #string: +The types of the Units delimited.

      + +
      +
      +
      +
      + SET_UNIT:GetUnitThreatLevels() diff --git a/docs/Documentation/Spawn.html b/docs/Documentation/Spawn.html index 5ec635661..b9f9cb7db 100644 --- a/docs/Documentation/Spawn.html +++ b/docs/Documentation/Spawn.html @@ -2326,6 +2326,9 @@ when nothing was spawned.

      + +

      Overwrite unit names by default with group name.

      +
    @@ -2340,6 +2343,9 @@ when nothing was spawned.

    + +

    By default, no InitLimit

    +
    @@ -2375,7 +2381,7 @@ when nothing was spawned.

    - + #number SPAWN.SpawnMaxGroups @@ -2392,7 +2398,7 @@ when nothing was spawned.

    - + #number SPAWN.SpawnMaxUnitsAlive @@ -2710,7 +2716,7 @@ Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Schedule( 600, 0.5 )
    - + #boolean SPAWN.SpawnUnControlled diff --git a/docs/Documentation/index.html b/docs/Documentation/index.html index 7a0b14173..76cf0ddb4 100644 --- a/docs/Documentation/index.html +++ b/docs/Documentation/index.html @@ -361,7 +361,7 @@ and creates a CSV file logging the scoring events and results for use at team or Set -

    Core - SET classes define collections of objects to perform bulk actions and logically group objects.

    +

    Core - SET_ classes define collections of objects to perform bulk actions and logically group objects.

    diff --git a/docs/Presentations/SET/Dia1.JPG b/docs/Presentations/SET/Dia1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..dd975a856f53672aa28ce665fa9cbca7cfbdeade GIT binary patch literal 214968 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 zde