From 062f34bd26d2ff02e4813128638987f31608ec61 Mon Sep 17 00:00:00 2001 From: FlightControl Date: Wed, 22 Jun 2016 09:31:44 +0200 Subject: [PATCH] Fixed bug during detection, when i unit got destroyed, the detection stopped. Fixed now Added a test :IsAlive --- Moose Development/Moose/Detection.lua | 50 +- Moose Development/Moose/Set.lua | 8 +- .../l10n/DEFAULT/Moose.lua | 1188 ++++++++++++++--- Moose Mission Setup/Moose.lua | 1188 ++++++++++++++--- .../Moose_Test_DETECTION.miz | Bin 151926 -> 153005 bytes 5 files changed, 2073 insertions(+), 361 deletions(-) diff --git a/Moose Development/Moose/Detection.lua b/Moose Development/Moose/Detection.lua index 11e762e5b..acb86f8ac 100644 --- a/Moose Development/Moose/Detection.lua +++ b/Moose Development/Moose/Detection.lua @@ -111,32 +111,34 @@ function DETECTION_BASE:_DetectionScheduler( SchedulerName ) if self.DetectedUnits then for DetectedUnitName, DetectedUnitData in pairs( self.DetectedUnits ) do local DetectedUnit = DetectedUnitData.DetectedUnit -- Unit#UNIT - self:T( DetectedUnit:GetName() ) - if #self.DetectedUnitSets == 0 then - self:T( { "Adding Unit Set #", 1 } ) - self.DetectedUnitSets[1] = {} - self.DetectedUnitSets[1].Zone = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) - self.DetectedUnitSets[1].Set = SET_UNIT:New() - self.DetectedUnitSets[1].Set:AddUnit( DetectedUnit ) - else - local AddedToSet = false - for DetectedUnitSetID, DetectedUnitSetData in pairs( self.DetectedUnitSets ) do - self:T( "Detected Unit Set #" .. DetectedUnitSetID ) - local DetectedUnitSet = DetectedUnitSetData.Set -- Set#SET_UNIT - local DetectedZone = DetectedUnitSetData.Zone -- Zone#ZONE_UNIT - if DetectedUnit:IsInZone( DetectedZone ) then - self:T( "Adding to Unit Set #" .. DetectedUnitSetID ) - self.DetectedUnitSets[DetectedUnitSetID].Set:AddUnit( DetectedUnit ) - AddedToSet = true + if DetectedUnit and DetectedUnit:IsAlive() then + self:T( DetectedUnit:GetName() ) + if #self.DetectedUnitSets == 0 then + self:T( { "Adding Unit Set #", 1 } ) + self.DetectedUnitSets[1] = {} + self.DetectedUnitSets[1].Zone = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) + self.DetectedUnitSets[1].Set = SET_UNIT:New() + self.DetectedUnitSets[1].Set:AddUnit( DetectedUnit ) + else + local AddedToSet = false + for DetectedUnitSetID, DetectedUnitSetData in pairs( self.DetectedUnitSets ) do + self:T( "Detected Unit Set #" .. DetectedUnitSetID ) + local DetectedUnitSet = DetectedUnitSetData.Set -- Set#SET_UNIT + local DetectedZone = DetectedUnitSetData.Zone -- Zone#ZONE_UNIT + if DetectedUnit:IsInZone( DetectedZone ) then + self:T( "Adding to Unit Set #" .. DetectedUnitSetID ) + self.DetectedUnitSets[DetectedUnitSetID].Set:AddUnit( DetectedUnit ) + AddedToSet = true + end end + if AddedToSet == false then + self:T( "Adding new Unit Set #" .. #self.DetectedUnitSets+1 ) + self.DetectedUnitSets[#self.DetectedUnitSets+1] = {} + self.DetectedUnitSets[#self.DetectedUnitSets].Zone = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) + self.DetectedUnitSets[#self.DetectedUnitSets].Set = SET_UNIT:New() + self.DetectedUnitSets[#self.DetectedUnitSets].Set:AddUnit( DetectedUnit ) + end end - if AddedToSet == false then - self:T( "Adding new Unit Set #" .. #self.DetectedUnitSets+1 ) - self.DetectedUnitSets[#self.DetectedUnitSets+1] = {} - self.DetectedUnitSets[#self.DetectedUnitSets].Zone = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) - self.DetectedUnitSets[#self.DetectedUnitSets].Set = SET_UNIT:New() - self.DetectedUnitSets[#self.DetectedUnitSets].Set:AddUnit( DetectedUnit ) - end end end end diff --git a/Moose Development/Moose/Set.lua b/Moose Development/Moose/Set.lua index ad11b1d8f..a69b2c3c4 100644 --- a/Moose Development/Moose/Set.lua +++ b/Moose Development/Moose/Set.lua @@ -390,7 +390,7 @@ end -- @param #SET_BASE self -- @param Event#EVENTDATA Event function SET_BASE:_EventOnDeadOrCrash( Event ) - self:F3( { Event } ) + self:F2( { Event } ) if Event.IniDCSUnit then local ObjectName, Object = self:FindInDatabase( Event ) @@ -957,6 +957,10 @@ function SET_UNIT:New() -- Inherits from BASE local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.UNITS ) ) + _EVENTDISPATCHER:OnBirth( self._EventOnBirth, self ) + _EVENTDISPATCHER:OnDead( self._EventOnDeadOrCrash, self ) + _EVENTDISPATCHER:OnCrash( self._EventOnDeadOrCrash, self ) + return self end @@ -965,6 +969,7 @@ end -- @param #string AddUnit A single UNIT. -- @return #SET_UNIT self function SET_UNIT:AddUnit( AddUnit ) + self:F2( AddUnit:GetName() ) self:Add( AddUnit:GetName(), AddUnit ) @@ -1151,6 +1156,7 @@ end function SET_UNIT:FindInDatabase( Event ) self:F3( { Event } ) + self:E( { Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] } ) return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] end 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 15c498977..e07adf4ba 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: 20160615_2239' ) +env.info( 'Moose Generation Timestamp: 20160622_0930' ) local base = _G Include = {} @@ -3351,10 +3351,14 @@ local _EVENTCODES = { -- @field weapon -- @field IniDCSUnit -- @field IniDCSUnitName +-- @field Unit#UNIT IniUnit +-- @field #string IniUnitName -- @field IniDCSGroup -- @field IniDCSGroupName -- @field TgtDCSUnit -- @field TgtDCSUnitName +-- @field Unit#UNIT TgtUnit +-- @field #string TgtUnitName -- @field TgtDCSGroup -- @field TgtDCSGroupName -- @field Weapon @@ -3776,6 +3780,8 @@ function EVENT:onEvent( Event ) Event.IniDCSUnit = Event.initiator Event.IniDCSGroup = Event.IniDCSUnit:getGroup() Event.IniDCSUnitName = Event.IniDCSUnit:getName() + Event.IniUnitName = Event.IniDCSUnitName + Event.IniUnit = UNIT:FindByName( Event.IniDCSUnitName ) Event.IniDCSGroupName = "" if Event.IniDCSGroup and Event.IniDCSGroup:isExist() then Event.IniDCSGroupName = Event.IniDCSGroup:getName() @@ -3786,6 +3792,8 @@ function EVENT:onEvent( Event ) Event.TgtDCSUnit = Event.target Event.TgtDCSGroup = Event.TgtDCSUnit:getGroup() Event.TgtDCSUnitName = Event.TgtDCSUnit:getName() + Event.TgtUnitName = Event.TgtDCSUnitName + Event.TgtUnit = UNIT:FindByName( Event.TgtDCSUnitName ) Event.TgtDCSGroupName = "" if Event.TgtDCSGroup and Event.TgtDCSGroup:isExist() then Event.TgtDCSGroupName = Event.TgtDCSGroup:getName() @@ -4247,6 +4255,7 @@ end -- * @{#GROUP.TaskRouteToVec2}: (AIR + GROUND) Make the Group move to a given point. -- * @{#GROUP.TaskRouteToVec3}: (AIR + GROUND) Make the Group move to a given point. -- * @{#GROUP.TaskRouteToZone}: (AIR + GROUND) Route the group to a given zone. +-- * @{#GROUP.TaskReturnToBase}: (AIR) Route the group to an airbase. -- -- ### 1.2.2) EnRoute task methods -- @@ -4675,10 +4684,15 @@ end -- Use the method @{Group@GROUP:WayPointExecute) to start the execution of the new mission plan. -- Note that when WayPointInitialize is called, the Mission of the group is RESTARTED! -- @param #GROUP self +-- @param #table WayPoints If WayPoints is given, then use the route. -- @return #GROUP -function GROUP:WayPointInitialize() +function GROUP:WayPointInitialize( WayPoints ) - self.WayPoints = self:GetTaskRoute() + if WayPoints then + self.WayPoints = WayPoints + else + self.WayPoints = self:GetTaskRoute() + end return self end @@ -5232,6 +5246,24 @@ function GROUP:CommandSwitchWayPoint( FromWayPoint, ToWayPoint, Index ) return CommandSwitchWayPoint end +--- Perform stop route command +-- @param #GROUP self +-- @param #boolean StopRoute +-- @return DCSTask#Task +function GROUP:CommandStopRoute( StopRoute, Index ) + self:F2( { StopRoute, Index } ) + + local CommandStopRoute = { + id = 'StopRoute', + params = { + value = StopRoute, + }, + } + + self:T3( { CommandStopRoute } ) + return CommandStopRoute +end + -- TASKS FOR AIR GROUPS @@ -5609,7 +5641,7 @@ function GROUP:TaskLandAtZone( Zone, Duration, RandomPoint ) local Point if RandomPoint then - Point = Zone:GetRandomPointVec2() + Point = Zone:GetRandomVec2() else Point = Zone:GetPointVec2() end @@ -6365,7 +6397,7 @@ function GROUP:TaskRouteToZone( Zone, Randomize, Speed, Formation ) local ZonePoint if Randomize then - ZonePoint = Zone:GetRandomPointVec2() + ZonePoint = Zone:GetRandomVec2() else ZonePoint = Zone:GetPointVec2() end @@ -6398,6 +6430,125 @@ function GROUP:TaskRouteToZone( Zone, Randomize, Speed, Formation ) return nil end +--- (AIR) Return the Group to an @{Airbase#AIRBASE} +-- A speed can be given in km/h. +-- A given formation can be given. +-- @param #GROUP self +-- @param Airbase#AIRBASE ReturnAirbase The @{Airbase#AIRBASE} to return to. +-- @param #number Speed (optional) The speed. +-- @return #string The route +function GROUP:RouteReturnToAirbase( ReturnAirbase, Speed ) + self:F2( { ReturnAirbase, Speed } ) + +-- Example +-- [4] = +-- { +-- ["alt"] = 45, +-- ["type"] = "Land", +-- ["action"] = "Landing", +-- ["alt_type"] = "BARO", +-- ["formation_template"] = "", +-- ["properties"] = +-- { +-- ["vnav"] = 1, +-- ["scale"] = 0, +-- ["angle"] = 0, +-- ["vangle"] = 0, +-- ["steer"] = 2, +-- }, -- end of ["properties"] +-- ["ETA"] = 527.81058817743, +-- ["airdromeId"] = 12, +-- ["y"] = 243127.2973737, +-- ["x"] = -5406.2803440839, +-- ["name"] = "DictKey_WptName_53", +-- ["speed"] = 138.88888888889, +-- ["ETA_locked"] = false, +-- ["task"] = +-- { +-- ["id"] = "ComboTask", +-- ["params"] = +-- { +-- ["tasks"] = +-- { +-- }, -- end of ["tasks"] +-- }, -- end of ["params"] +-- }, -- end of ["task"] +-- ["speed_locked"] = true, +-- }, -- end of [4] + + + local DCSGroup = self:GetDCSGroup() + + if DCSGroup then + + local GroupPoint = self:GetPointVec2() + local GroupVelocity = self:GetMaxVelocity() + + local PointFrom = {} + PointFrom.x = GroupPoint.x + PointFrom.y = GroupPoint.y + PointFrom.type = "Turning Point" + PointFrom.action = "Turning Point" + PointFrom.speed = GroupVelocity + + + local PointTo = {} + local AirbasePoint = ReturnAirbase:GetPointVec2() + + PointTo.x = AirbasePoint.x + PointTo.y = AirbasePoint.y + PointTo.type = "Land" + PointTo.action = "Landing" + PointTo.airdromeId = ReturnAirbase:GetID()-- Airdrome ID + self:T(PointTo.airdromeId) + --PointTo.alt = 0 + + local Points = { PointFrom, PointTo } + + self:T3( Points ) + + local Route = { points = Points, } + + return Route + end + + return nil +end + +--- @param Group#GROUP self +function GROUP:Respawn( Template ) + + local Vec3 = self:GetPointVec3() + --Template.x = Vec3.x + --Template.y = Vec3.z + Template.x = nil + Template.y = nil + + self:E( #Template.units ) + for UnitID, UnitData in pairs( self:GetUnits() ) do + local GroupUnit = UnitData -- Unit#UNIT + self:E( GroupUnit:GetName() ) + if GroupUnit:IsAlive() then + local GroupUnitVec3 = GroupUnit:GetPointVec3() + local GroupUnitHeading = GroupUnit:GetHeading() + Template.units[UnitID].alt = GroupUnitVec3.y + Template.units[UnitID].x = GroupUnitVec3.x + Template.units[UnitID].y = GroupUnitVec3.z + Template.units[UnitID].heading = GroupUnitHeading + self:E( { UnitID, Template.units[UnitID], Template.units[UnitID] } ) + end + end + + _DATABASE:Spawn( Template ) + +end + +function GROUP:GetTemplate() + + return _DATABASE.Templates.Groups[self:GetName()].Template + +end + -- Commands --- Do Script command @@ -6480,6 +6631,8 @@ function GROUP:CopyRoute( Begin, End, Randomize, Radius ) end end return Points + else + error( "Template not found for Group : " .. GroupName ) end return nil @@ -7659,6 +7812,29 @@ function UNIT:GetCategoryName() return nil end +--- Returns the DCS Unit heading. +-- @param Unit#UNIT self +-- @return #number The DCS Unit heading +function UNIT:GetHeading() + local DCSUnit = self:GetDCSUnit() + + if DCSUnit then + + local UnitPosition = DCSUnit:getPosition() + if UnitPosition then + local UnitHeading = math.atan2( UnitPosition.x.z, UnitPosition.x.x ) + if UnitHeading < 0 then + UnitHeading = UnitHeading + 2 * math.pi + end + self:T2( UnitHeading ) + return UnitHeading + end + end + + return nil +end + + --- Signal a flare at the position of the UNIT. -- @param #UNIT self function UNIT:Flare( FlareColor ) @@ -7833,6 +8009,15 @@ ZONE_BASE = { ClassName = "ZONE_BASE", } + +--- The ZONE_BASE.BoundingSquare +-- @type ZONE_BASE.BoundingSquare +-- @field DCSTypes#Distance x1 The lower x coordinate (left down) +-- @field DCSTypes#Distance y1 The lower y coordinate (left down) +-- @field DCSTypes#Distance x2 The higher x coordinate (right up) +-- @field DCSTypes#Distance y2 The higher y coordinate (right up) + + --- ZONE_BASE constructor -- @param #ZONE_BASE self -- @param #string ZoneName Name of the zone. @@ -7847,7 +8032,7 @@ function ZONE_BASE:New( ZoneName ) end --- Returns if a location is within the zone. --- @param #ZONE_RADIUS self +-- @param #ZONE_BASE self -- @param DCSTypes#Vec2 PointVec2 The location to test. -- @return #boolean true if the location is within the zone. function ZONE_BASE:IsPointVec2InZone( PointVec2 ) @@ -7857,7 +8042,7 @@ function ZONE_BASE:IsPointVec2InZone( PointVec2 ) end --- Returns if a point is within the zone. --- @param #ZONE_RADIUS self +-- @param #ZONE_BASE self -- @param DCSTypes#Vec3 PointVec3 The point to test. -- @return #boolean true if the point is within the zone. function ZONE_BASE:IsPointVec3InZone( PointVec3 ) @@ -7868,6 +8053,21 @@ function ZONE_BASE:IsPointVec3InZone( PointVec3 ) return InZone end +--- Define a random @{DCSTypes#Vec2} within the zone. +-- @param #ZONE_BASE self +-- @return DCSTypes#Vec2 The Vec2 coordinates. +function ZONE_BASE:GetRandomVec2() + return { x = 0, y = 0 } +end + +--- Get the bounding square the zone. +-- @param #ZONE_BASE self +-- @return #ZONE_BASE.BoundingSquare The bounding square. +function ZONE_BASE:GetBoundingSquare() + return { x1 = 0, y1 = 0, x2 = 0, y2 = 0 } +end + + --- Smokes the zone boundaries in a color. -- @param #ZONE_BASE self -- @param SmokeColor The smoke color. @@ -8053,7 +8253,7 @@ end --- Returns a random location within the zone. -- @param #ZONE_RADIUS self -- @return DCSTypes#Vec2 The random location within the zone. -function ZONE_RADIUS:GetRandomPointVec2() +function ZONE_RADIUS:GetRandomVec2() self:F( self.ZoneName ) local Point = {} @@ -8251,6 +8451,55 @@ function ZONE_POLYGON_BASE:IsPointVec2InZone( PointVec2 ) return c end +--- Define a random @{DCSTypes#Vec2} within the zone. +-- @param #ZONE_POLYGON_BASE self +-- @return DCSTypes#Vec2 The Vec2 coordinate. +function ZONE_POLYGON_BASE:GetRandomVec2() + self:F2() + + --- It is a bit tricky to find a random point within a polygon. Right now i am doing it the dirty and inefficient way... + local Vec2Found = false + local Vec2 + local BS = self:GetBoundingSquare() + + self:T2( BS ) + + while Vec2Found == false do + Vec2 = { x = math.random( BS.x1, BS.x2 ), y = math.random( BS.y1, BS.y2 ) } + self:T2( Vec2 ) + if self:IsPointVec2InZone( Vec2 ) then + Vec2Found = true + end + end + + self:T2( Vec2 ) + + return Vec2 +end + +--- Get the bounding square the zone. +-- @param #ZONE_POLYGON_BASE self +-- @return #ZONE_POLYGON_BASE.BoundingSquare The bounding square. +function ZONE_POLYGON_BASE:GetBoundingSquare() + + local x1 = self.Polygon[1].x + local y1 = self.Polygon[1].y + local x2 = self.Polygon[1].x + local y2 = self.Polygon[1].y + + for i = 2, #self.Polygon do + self:T2( { self.Polygon[i], x1, y1, x2, y2 } ) + x1 = ( x1 > self.Polygon[i].x ) and self.Polygon[i].x or x1 + x2 = ( x2 < self.Polygon[i].x ) and self.Polygon[i].x or x2 + y1 = ( y1 > self.Polygon[i].y ) and self.Polygon[i].y or y1 + y2 = ( y2 < self.Polygon[i].y ) and self.Polygon[i].y or y2 + + end + + return { x1 = x1, y1 = y1, x2 = x2, y2 = y2 } +end + + @@ -8515,7 +8764,6 @@ end --- @param #CLIENT self function CLIENT:_AliveCheckScheduler( SchedulerName ) - self:E( SchedulerName ) self:F( { SchedulerName, self.ClientName, self.ClientAlive2, self.ClientBriefingShown, self.ClientCallBack } ) if self:IsAlive() then @@ -8838,51 +9086,44 @@ function STATIC:GetDCSUnit() return nil end ---- Manage the mission database. +--- This module contains the DATABASE class, managing the database of mission objects. -- --- @{#DATABASE} class --- ================== +-- ==== +-- +-- 1) @{Database#DATABASE} class, extends @{Base#BASE} +-- =================================================== -- Mission designers can use the DATABASE class to refer to: -- -- * UNITS -- * GROUPS --- * players --- * alive players -- * CLIENTS --- * alive CLIENTS +-- * AIRPORTS +-- * PLAYERSJOINED +-- * PLAYERS -- --- On top, for internal MOOSE administration purposes, the DATBASE administers the Unit and Gruop templates as defined within the Mission Editor. +-- On top, for internal MOOSE administration purposes, the DATBASE administers the Unit and Group TEMPLATES as defined within the Mission Editor. -- -- Moose will automatically create one instance of the DATABASE class into the **global** object _DATABASE. -- Moose refers to _DATABASE within the framework extensively, but you can also refer to the _DATABASE object within your missions if required. -- --- DATABASE iterators: --- =================== +-- 1.1) DATABASE iterators +-- ----------------------- -- You can iterate the database with the available iterator methods. -- The iterator methods will walk the DATABASE set, and call for each element within the set a function that you provide. -- The following iterator methods are currently available within the DATABASE: -- -- * @{#DATABASE.ForEachUnit}: Calls a function for each @{UNIT} it finds within the DATABASE. -- * @{#DATABASE.ForEachGroup}: Calls a function for each @{GROUP} it finds within the DATABASE. --- * @{#DATABASE.ForEachPlayer}: Calls a function for each player it finds within the DATABASE. --- * @{#DATABASE.ForEachPlayerAlive}: Calls a function for each alive player it finds within the DATABASE. +-- * @{#DATABASE.ForEachPlayer}: Calls a function for each alive player it finds within the DATABASE. +-- * @{#DATABASE.ForEachPlayerJoined}: Calls a function for each joined player it finds within the DATABASE. -- * @{#DATABASE.ForEachClient}: Calls a function for each @{CLIENT} it finds within the DATABASE. -- * @{#DATABASE.ForEachClientAlive}: Calls a function for each alive @{CLIENT} it finds within the DATABASE. --- +-- +-- === +-- -- @module Database -- @author FlightControl - - - - - - - - - - - --- DATABASE class -- @type DATABASE -- @extends Base#BASE @@ -8898,9 +9139,9 @@ DATABASE = { STATICS = {}, GROUPS = {}, PLAYERS = {}, - PLAYERSALIVE = {}, + PLAYERSJOINED = {}, CLIENTS = {}, - CLIENTSALIVE = {}, + AIRBASES = {}, NavPoints = {}, } @@ -8945,6 +9186,7 @@ function DATABASE:New() self:_RegisterClients() self:_RegisterStatics() self:_RegisterPlayers() + self:_RegisterAirbases() return self end @@ -9006,6 +9248,33 @@ function DATABASE:FindStatic( StaticName ) return StaticFound end +--- Adds a Airbase based on the Airbase Name in the DATABASE. +-- @param #DATABASE self +function DATABASE:AddAirbase( DCSAirbaseName ) + + if not self.AIRBASES[DCSAirbaseName] then + self.AIRBASES[DCSAirbaseName] = AIRBASE:Register( DCSAirbaseName ) + end +end + + +--- Deletes a Airbase from the DATABASE based on the Airbase Name. +-- @param #DATABASE self +function DATABASE:DeleteAirbase( DCSAirbaseName ) + + --self.AIRBASES[DCSAirbaseName] = nil +end + +--- Finds a AIRBASE based on the AirbaseName. +-- @param #DATABASE self +-- @param #string AirbaseName +-- @return Airbase#AIRBASE The found AIRBASE. +function DATABASE:FindAirbase( AirbaseName ) + + local AirbaseFound = self.AIRBASES[AirbaseName] + return AirbaseFound +end + --- Finds a CLIENT based on the ClientName. -- @param #DATABASE self @@ -9058,9 +9327,8 @@ function DATABASE:AddPlayer( UnitName, PlayerName ) if PlayerName then self:E( { "Add player for unit:", UnitName, PlayerName } ) - self.PLAYERS[PlayerName] = PlayerName - self.PLAYERSALIVE[PlayerName] = PlayerName - self.CLIENTSALIVE[PlayerName] = self:FindClient( UnitName ) + self.PLAYERS[PlayerName] = UNIT:FindByName( UnitName ) + self.PLAYERSJOINED[PlayerName] = PlayerName end end @@ -9070,8 +9338,7 @@ function DATABASE:DeletePlayer( PlayerName ) if PlayerName then self:E( { "Clean player:", PlayerName } ) - self.PLAYERSALIVE[PlayerName] = nil - self.CLIENTSALIVE[PlayerName] = nil + self.PLAYERS[PlayerName] = nil end end @@ -9211,6 +9478,18 @@ function DATABASE:GetCountryFromClientTemplate( ClientName ) return self.Templates.ClientsByName[ClientName].CountryID end +--- Airbase + +function DATABASE:GetCoalitionFromAirbase( AirbaseName ) + return self.AIRBASES[AirbaseName]:GetCoalition() +end + +function DATABASE:GetCategoryFromAirbase( AirbaseName ) + return self.AIRBASES[AirbaseName]:GetCategory() +end + + + --- Private method that registers all alive players in the mission. -- @param #DATABASE self -- @return #DATABASE self @@ -9279,6 +9558,7 @@ function DATABASE:_RegisterClients() return self end +--- @param #DATABASE self function DATABASE:_RegisterStatics() local CoalitionsData = { GroupsRed = coalition.getStaticObjects( coalition.side.RED ), GroupsBlue = coalition.getStaticObjects( coalition.side.BLUE ) } @@ -9299,6 +9579,23 @@ function DATABASE:_RegisterStatics() return self end +--- @param #DATABASE self +function DATABASE:_RegisterAirbases() + + local CoalitionsData = { AirbasesRed = coalition.getAirbases( coalition.side.RED ), AirbasesBlue = coalition.getAirbases( coalition.side.BLUE ), AirbasesNeutral = coalition.getAirbases( coalition.side.NEUTRAL ) } + for CoalitionId, CoalitionData in pairs( CoalitionsData ) do + for DCSAirbaseId, DCSAirbase in pairs( CoalitionData ) do + + local DCSAirbaseName = DCSAirbase:getName() + + self:E( { "Register Airbase:", DCSAirbaseName } ) + self:AddAirbase( DCSAirbaseName ) + end + end + + return self +end + --- Events @@ -9337,10 +9634,10 @@ end function DATABASE:_EventOnPlayerEnterUnit( Event ) self:F2( { Event } ) - if Event.IniDCSUnit then - local PlayerName = Event.IniDCSUnit:getPlayerName() - if not self.PLAYERSALIVE[PlayerName] then - self:AddPlayer( Event.IniDCSUnitName, PlayerName ) + if Event.IniUnit then + local PlayerName = Event.IniUnit:GetPlayerName() + if not self.PLAYERS[PlayerName] then + self:AddPlayer( Event.IniUnitName, PlayerName ) end end end @@ -9352,9 +9649,9 @@ end function DATABASE:_EventOnPlayerLeaveUnit( Event ) self:F2( { Event } ) - if Event.IniDCSUnit then - local PlayerName = Event.IniDCSUnit:getPlayerName() - if self.PLAYERSALIVE[PlayerName] then + if Event.IniUnit then + local PlayerName = Event.IniUnit:GetPlayerName() + if self.PLAYERS[PlayerName] then self:DeletePlayer( PlayerName ) end end @@ -9366,7 +9663,7 @@ end -- @param #DATABASE self -- @param #function IteratorFunction The function that will be called when there is an alive player in the database. -- @return #DATABASE self -function DATABASE:ForEach( IteratorFunction, arg, Set ) +function DATABASE:ForEach( IteratorFunction, FinalizeFunction, arg, Set ) self:F2( arg ) local function CoRoutine() @@ -9375,19 +9672,21 @@ function DATABASE:ForEach( IteratorFunction, arg, Set ) self:T2( Object ) IteratorFunction( Object, unpack( arg ) ) Count = Count + 1 - if Count % 10 == 0 then - coroutine.yield( false ) - end +-- if Count % 100 == 0 then +-- coroutine.yield( false ) +-- end end return true end - local co = coroutine.create( CoRoutine ) +-- local co = coroutine.create( CoRoutine ) + local co = CoRoutine local function Schedule() - local status, res = coroutine.resume( co ) - self:T2( { status, res } ) +-- local status, res = coroutine.resume( co ) + local status, res = co() + self:T3( { status, res } ) if status == false then error( res ) @@ -9395,7 +9694,9 @@ function DATABASE:ForEach( IteratorFunction, arg, Set ) if res == false then return true -- resume next time the loop end - + if FinalizeFunction then + FinalizeFunction( unpack( arg ) ) + end return false end @@ -9409,10 +9710,10 @@ end -- @param #DATABASE self -- @param #function IteratorFunction The function that will be called when there is an alive UNIT in the database. The function needs to accept a UNIT parameter. -- @return #DATABASE self -function DATABASE:ForEachUnit( IteratorFunction, ... ) +function DATABASE:ForEachUnit( IteratorFunction, FinalizeFunction, ... ) self:F2( arg ) - self:ForEach( IteratorFunction, arg, self.UNITS ) + self:ForEach( IteratorFunction, FinalizeFunction, arg, self.UNITS ) return self end @@ -9430,7 +9731,7 @@ function DATABASE:ForEachGroup( IteratorFunction, ... ) end ---- Iterate the DATABASE and call an iterator function for each player, providing the player name and optional parameters. +--- Iterate the DATABASE and call an iterator function for each **ALIVE** player, providing the player name and optional parameters. -- @param #DATABASE self -- @param #function IteratorFunction The function that will be called when there is an player in the database. The function needs to accept the player name. -- @return #DATABASE self @@ -9443,14 +9744,14 @@ function DATABASE:ForEachPlayer( IteratorFunction, ... ) end ---- Iterate the DATABASE and call an iterator function for each **alive** player, providing the Unit of the player and optional parameters. +--- Iterate the DATABASE and call an iterator function for each player who has joined the mission, providing the Unit of the player and optional parameters. -- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive player in the database. The function needs to accept a UNIT parameter. +-- @param #function IteratorFunction The function that will be called when there is was a player in the database. The function needs to accept a UNIT parameter. -- @return #DATABASE self -function DATABASE:ForEachPlayerAlive( IteratorFunction, ... ) +function DATABASE:ForEachPlayerJoined( IteratorFunction, ... ) self:F2( arg ) - self:ForEach( IteratorFunction, arg, self.PLAYERSALIVE ) + self:ForEach( IteratorFunction, arg, self.PLAYERSJOINED ) return self end @@ -9467,18 +9768,6 @@ function DATABASE:ForEachClient( IteratorFunction, ... ) return self end ---- Iterate the DATABASE and call an iterator function for each **ALIVE** CLIENT, providing the CLIENT to the function and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive CLIENT in the database. The function needs to accept a CLIENT parameter. --- @return #DATABASE self -function DATABASE:ForEachClientAlive( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.CLIENTSALIVE ) - - return self -end - function DATABASE:_RegisterTemplates() self:F2() @@ -9559,7 +9848,7 @@ end -- === -- -- 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. @@ -9570,15 +9859,15 @@ end -- --------------------------------------- -- 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"**. --- ------------------------------------------------------------------------------------- +-- 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 @@ -9684,6 +9973,8 @@ end -- * @{#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: @@ -9734,9 +10025,48 @@ end -- -- ==== -- +-- 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. +-- +-- ==== +-- -- @module Set -- @author FlightControl + --- SET_BASE class -- @type SET_BASE -- @extends Base#BASE @@ -9833,6 +10163,32 @@ function SET_BASE:_FilterStart() return self end +--- Iterate the SET_BASE while identifying the nearest object from a @{Point#POINT_VEC2}. +-- @param #SET_BASE self +-- @param Point#POINT_VEC2 PointVec2 A @{Point#POINT_VEC2} object from where to evaluate the closest object in the set. +-- @return Base#BASE The closest object. +function SET_BASE:FindNearestObjectFromPointVec2( PointVec2 ) + self:F2( PointVec2 ) + + local NearestObject = nil + local ClosestDistance = nil + + for ObjectID, ObjectData in pairs( self.Set ) do + if NearestObject == nil then + NearestObject = ObjectData + ClosestDistance = PointVec2:DistanceFromVec2( ObjectData:GetPointVec2() ) + else + local Distance = PointVec2:DistanceFromVec2( ObjectData:GetPointVec2() ) + if Distance < ClosestDistance then + NearestObject = ObjectData + ClosestDistance = Distance + end + end + end + + return NearestObject +end + ----- Private method that registers all alive players in the mission. @@ -9879,7 +10235,7 @@ end -- @param #SET_BASE self -- @param Event#EVENTDATA Event function SET_BASE:_EventOnDeadOrCrash( Event ) - self:F3( { Event } ) + self:F2( { Event } ) if Event.IniDCSUnit then local ObjectName, Object = self:FindInDatabase( Event ) @@ -9944,18 +10300,20 @@ function SET_BASE:ForEach( IteratorFunction, arg, Set, Function, FunctionArgumen IteratorFunction( Object, unpack( arg ) ) end Count = Count + 1 - if Count % self.YieldInterval == 0 then - coroutine.yield( false ) - end +-- if Count % self.YieldInterval == 0 then +-- coroutine.yield( false ) +-- end end return true end - local co = coroutine.create( CoRoutine ) +-- local co = coroutine.create( CoRoutine ) + local co = CoRoutine local function Schedule() - local status, res = coroutine.resume( co ) +-- local status, res = coroutine.resume( co ) + local status, res = co() self:T3( { status, res } ) if status == false then @@ -9974,7 +10332,7 @@ function SET_BASE:ForEach( IteratorFunction, arg, Set, Function, FunctionArgumen end ------ Interate the SET_BASE and call an interator function for each **alive** unit, providing the Unit and optional parameters. +----- Iterate the SET_BASE and call an interator function for each **alive** unit, providing the Unit and optional parameters. ---- @param #SET_BASE self ---- @param #function IteratorFunction The function that will be called when there is an alive unit in the SET_BASE. The function needs to accept a UNIT parameter. ---- @return #SET_BASE self @@ -9986,7 +10344,7 @@ end -- return self --end -- ------ Interate the SET_BASE and call an interator function for each **alive** player, providing the Unit of the player and optional parameters. +----- Iterate the SET_BASE and call an interator function for each **alive** player, providing the Unit of the player and optional parameters. ---- @param #SET_BASE self ---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_BASE. The function needs to accept a UNIT parameter. ---- @return #SET_BASE self @@ -9999,7 +10357,7 @@ end --end -- -- ------ Interate the SET_BASE and call an interator function for each client, providing the Client to the function and optional parameters. +----- Iterate the SET_BASE and call an interator function for each client, providing the Client to the function and optional parameters. ---- @param #SET_BASE self ---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_BASE. The function needs to accept a CLIENT parameter. ---- @return #SET_BASE self @@ -10321,7 +10679,7 @@ function SET_GROUP:ForEachGroupNotInZone( ZoneObject, IteratorFunction, ... ) end ------ Interate the SET_GROUP and call an interator function for each **alive** player, providing the Group of the player and optional parameters. +----- Iterate the SET_GROUP and call an interator function for each **alive** player, providing the Group of the player and optional parameters. ---- @param #SET_GROUP self ---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_GROUP. The function needs to accept a GROUP parameter. ---- @return #SET_GROUP self @@ -10334,7 +10692,7 @@ end --end -- -- ------ Interate the SET_GROUP and call an interator function for each client, providing the Client to the function and optional parameters. +----- Iterate the SET_GROUP and call an interator function for each client, providing the Client to the function and optional parameters. ---- @param #SET_GROUP self ---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_GROUP. The function needs to accept a CLIENT parameter. ---- @return #SET_GROUP self @@ -10444,6 +10802,10 @@ function SET_UNIT:New() -- Inherits from BASE local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.UNITS ) ) + _EVENTDISPATCHER:OnBirth( self._EventOnBirth, self ) + _EVENTDISPATCHER:OnDead( self._EventOnDeadOrCrash, self ) + _EVENTDISPATCHER:OnCrash( self._EventOnDeadOrCrash, self ) + return self end @@ -10452,6 +10814,7 @@ end -- @param #string AddUnit A single UNIT. -- @return #SET_UNIT self function SET_UNIT:AddUnit( AddUnit ) + self:F2( AddUnit:GetName() ) self:Add( AddUnit:GetName(), AddUnit ) @@ -10638,10 +11001,11 @@ end function SET_UNIT:FindInDatabase( Event ) self:F3( { Event } ) + self:E( { Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] } ) return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] end ---- Interate the SET_UNIT and call an interator function for each **alive** UNIT, providing the UNIT and optional parameters. +--- Iterate the SET_UNIT and call an interator function for each **alive** UNIT, providing the UNIT and optional parameters. -- @param #SET_UNIT self -- @param #function IteratorFunction The function that will be called when there is an alive UNIT in the SET_UNIT. The function needs to accept a UNIT parameter. -- @return #SET_UNIT self @@ -10699,7 +11063,7 @@ end ------ Interate the SET_UNIT and call an interator function for each **alive** player, providing the Unit of the player and optional parameters. +----- Iterate the SET_UNIT and call an interator function for each **alive** player, providing the Unit of the player and optional parameters. ---- @param #SET_UNIT self ---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_UNIT. The function needs to accept a UNIT parameter. ---- @return #SET_UNIT self @@ -10712,7 +11076,7 @@ end --end -- -- ------ Interate the SET_UNIT and call an interator function for each client, providing the Client to the function and optional parameters. +----- Iterate the SET_UNIT and call an interator function for each client, providing the Client to the function and optional parameters. ---- @param #SET_UNIT self ---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_UNIT. The function needs to accept a CLIENT parameter. ---- @return #SET_UNIT self @@ -11014,7 +11378,7 @@ function SET_CLIENT:FindInDatabase( Event ) return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] end ---- Interate the SET_CLIENT and call an interator function for each **alive** CLIENT, providing the CLIENT and optional parameters. +--- Iterate the SET_CLIENT and call an interator function for each **alive** CLIENT, providing the CLIENT and optional parameters. -- @param #SET_CLIENT self -- @param #function IteratorFunction The function that will be called when there is an alive CLIENT in the SET_CLIENT. The function needs to accept a CLIENT parameter. -- @return #SET_CLIENT self @@ -11150,6 +11514,229 @@ function SET_CLIENT:IsIncludeObject( MClient ) return MClientInclude end +--- SET_AIRBASE + +--- SET_AIRBASE class +-- @type SET_AIRBASE +-- @extends Set#SET_BASE +SET_AIRBASE = { + ClassName = "SET_AIRBASE", + Airbases = {}, + Filter = { + Coalitions = nil, + }, + FilterMeta = { + Coalitions = { + red = coalition.side.RED, + blue = coalition.side.BLUE, + neutral = coalition.side.NEUTRAL, + }, + Categories = { + airdrome = Airbase.Category.AIRDROME, + helipad = Airbase.Category.HELIPAD, + ship = Airbase.Category.SHIP, + }, + }, +} + + +--- Creates a new SET_AIRBASE object, building a set of airbases belonging to a coalitions and categories. +-- @param #SET_AIRBASE self +-- @return #SET_AIRBASE self +-- @usage +-- -- Define a new SET_AIRBASE Object. The DatabaseSet will contain a reference to all Airbases. +-- DatabaseSet = SET_AIRBASE:New() +function SET_AIRBASE:New() + -- Inherits from BASE + local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.AIRBASES ) ) + + return self +end + +--- Add AIRBASEs to SET_AIRBASE. +-- @param Set#SET_AIRBASE self +-- @param #string AddAirbaseNames A single name or an array of AIRBASE names. +-- @return self +function SET_AIRBASE:AddAirbasesByName( AddAirbaseNames ) + + local AddAirbaseNamesArray = ( type( AddAirbaseNames ) == "table" ) and AddAirbaseNames or { AddAirbaseNames } + + for AddAirbaseID, AddAirbaseName in pairs( AddAirbaseNamesArray ) do + self:Add( AddAirbaseName, AIRBASE:FindByName( AddAirbaseName ) ) + end + + return self +end + +--- Remove AIRBASEs from SET_AIRBASE. +-- @param Set#SET_AIRBASE self +-- @param Airbase#AIRBASE RemoveAirbaseNames A single name or an array of AIRBASE names. +-- @return self +function SET_AIRBASE:RemoveAirbasesByName( RemoveAirbaseNames ) + + local RemoveAirbaseNamesArray = ( type( RemoveAirbaseNames ) == "table" ) and RemoveAirbaseNames or { RemoveAirbaseNames } + + for RemoveAirbaseID, RemoveAirbaseName in pairs( RemoveAirbaseNamesArray ) do + self:Remove( RemoveAirbaseName.AirbaseName ) + end + + return self +end + + +--- Finds a Airbase based on the Airbase Name. +-- @param #SET_AIRBASE self +-- @param #string AirbaseName +-- @return Airbase#AIRBASE The found Airbase. +function SET_AIRBASE:FindAirbase( AirbaseName ) + + local AirbaseFound = self.Set[AirbaseName] + return AirbaseFound +end + + + +--- Builds a set of airbases of coalitions. +-- Possible current coalitions are red, blue and neutral. +-- @param #SET_AIRBASE self +-- @param #string Coalitions Can take the following values: "red", "blue", "neutral". +-- @return #SET_AIRBASE self +function SET_AIRBASE:FilterCoalitions( Coalitions ) + if not self.Filter.Coalitions then + self.Filter.Coalitions = {} + end + if type( Coalitions ) ~= "table" then + Coalitions = { Coalitions } + end + for CoalitionID, Coalition in pairs( Coalitions ) do + self.Filter.Coalitions[Coalition] = Coalition + end + return self +end + + +--- Builds a set of airbases out of categories. +-- Possible current categories are plane, helicopter, ground, ship. +-- @param #SET_AIRBASE self +-- @param #string Categories Can take the following values: "airdrome", "helipad", "ship". +-- @return #SET_AIRBASE self +function SET_AIRBASE:FilterCategories( Categories ) + if not self.Filter.Categories then + self.Filter.Categories = {} + end + if type( Categories ) ~= "table" then + Categories = { Categories } + end + for CategoryID, Category in pairs( Categories ) do + self.Filter.Categories[Category] = Category + end + return self +end + +--- Starts the filtering. +-- @param #SET_AIRBASE self +-- @return #SET_AIRBASE self +function SET_AIRBASE:FilterStart() + + if _DATABASE then + self:_FilterStart() + end + + return self +end + + +--- Handles the Database to check on an event (birth) that the Object was added in the Database. +-- This is required, because sometimes the _DATABASE birth event gets called later than the SET_BASE birth event! +-- @param #SET_AIRBASE self +-- @param Event#EVENTDATA Event +-- @return #string The name of the AIRBASE +-- @return #table The AIRBASE +function SET_AIRBASE:AddInDatabase( Event ) + self:F3( { Event } ) + + return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] +end + +--- Handles the Database to check on any event that Object exists in the Database. +-- This is required, because sometimes the _DATABASE event gets called later than the SET_BASE event or vise versa! +-- @param #SET_AIRBASE self +-- @param Event#EVENTDATA Event +-- @return #string The name of the AIRBASE +-- @return #table The AIRBASE +function SET_AIRBASE:FindInDatabase( Event ) + self:F3( { Event } ) + + return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] +end + +--- Iterate the SET_AIRBASE and call an interator function for each AIRBASE, providing the AIRBASE and optional parameters. +-- @param #SET_AIRBASE self +-- @param #function IteratorFunction The function that will be called when there is an alive AIRBASE in the SET_AIRBASE. The function needs to accept a AIRBASE parameter. +-- @return #SET_AIRBASE self +function SET_AIRBASE:ForEachAirbase( IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set ) + + return self +end + +--- Iterate the SET_AIRBASE while identifying the nearest @{Airbase#AIRBASE} from a @{Point#POINT_VEC2}. +-- @param #SET_AIRBASE self +-- @param Point#POINT_VEC2 PointVec2 A @{Point#POINT_VEC2} object from where to evaluate the closest @{Airbase#AIRBASE}. +-- @return Airbase#AIRBASE The closest @{Airbase#AIRBASE}. +function SET_AIRBASE:FindNearestAirbaseFromPointVec2( PointVec2 ) + self:F2( PointVec2 ) + + local NearestAirbase = self:FindNearestObjectFromPointVec2( PointVec2 ) + return NearestAirbase +end + + + +--- +-- @param #SET_AIRBASE self +-- @param Airbase#AIRBASE MAirbase +-- @return #SET_AIRBASE self +function SET_AIRBASE:IsIncludeObject( MAirbase ) + self:F2( MAirbase ) + + local MAirbaseInclude = true + + if MAirbase then + local MAirbaseName = MAirbase:GetName() + + if self.Filter.Coalitions then + local MAirbaseCoalition = false + for CoalitionID, CoalitionName in pairs( self.Filter.Coalitions ) do + local AirbaseCoalitionID = _DATABASE:GetCoalitionFromAirbase( MAirbaseName ) + self:T3( { "Coalition:", AirbaseCoalitionID, self.FilterMeta.Coalitions[CoalitionName], CoalitionName } ) + if self.FilterMeta.Coalitions[CoalitionName] and self.FilterMeta.Coalitions[CoalitionName] == AirbaseCoalitionID then + MAirbaseCoalition = true + end + end + self:T( { "Evaluated Coalition", MAirbaseCoalition } ) + MAirbaseInclude = MAirbaseInclude and MAirbaseCoalition + end + + if self.Filter.Categories then + local MAirbaseCategory = false + for CategoryID, CategoryName in pairs( self.Filter.Categories ) do + local AirbaseCategoryID = _DATABASE:GetCategoryFromAirbase( MAirbaseName ) + self:T3( { "Category:", AirbaseCategoryID, self.FilterMeta.Categories[CategoryName], CategoryName } ) + if self.FilterMeta.Categories[CategoryName] and self.FilterMeta.Categories[CategoryName] == AirbaseCategoryID then + MAirbaseCategory = true + end + end + self:T( { "Evaluated Category", MAirbaseCategory } ) + MAirbaseInclude = MAirbaseInclude and MAirbaseCategory + end + end + + self:T2( MAirbaseInclude ) + return MAirbaseInclude +end --- This module contains the POINT classes. -- -- 1) @{Point#POINT_VEC3} class, extends @{Base#BASE} @@ -11182,6 +11769,9 @@ end -- @extends Base#BASE -- @field #POINT_VEC3.SmokeColor SmokeColor -- @field #POINT_VEC3.FlareColor FlareColor +-- @field #POINT_VEC3.RoutePointAltType RoutePointAltType +-- @field #POINT_VEC3.RoutePointType RoutePointType +-- @field #POINT_VEC3.RoutePointAction RoutePointAction POINT_VEC3 = { ClassName = "POINT_VEC3", SmokeColor = { @@ -11190,14 +11780,24 @@ POINT_VEC3 = { White = trigger.smokeColor.White, Orange = trigger.smokeColor.Orange, Blue = trigger.smokeColor.Blue - }, + }, FlareColor = { Green = trigger.flareColor.Green, Red = trigger.flareColor.Red, White = trigger.flareColor.White, Yellow = trigger.flareColor.Yellow - }, - } + }, + RoutePointAltType = { + BARO = "BARO", + }, + RoutePointType = { + TurningPoint = "Turning Point", + }, + RoutePointAction = { + TurningPoint = "Turning Point", + }, +} + --- SmokeColor -- @type POINT_VEC3.SmokeColor @@ -11207,6 +11807,8 @@ POINT_VEC3 = { -- @field Orange -- @field Blue + + --- FlareColor -- @type POINT_VEC3.FlareColor -- @field Green @@ -11214,6 +11816,26 @@ POINT_VEC3 = { -- @field White -- @field Yellow + + +--- RoutePoint AltTypes +-- @type POINT_VEC3.RoutePointAltType +-- @field BARO "BARO" + + + +--- RoutePoint Types +-- @type POINT_VEC3.RoutePointType +-- @field TurningPoint "Turning Point" + + + +--- RoutePoint Actions +-- @type POINT_VEC3.RoutePointAction +-- @field TurningPoint "Turning Point" + + + -- Constructor. --- Create a new POINT_VEC3 object. @@ -11221,15 +11843,68 @@ POINT_VEC3 = { -- @param DCSTypes#Distance x The x coordinate of the Vec3 point, pointing to the North. -- @param DCSTypes#Distance y The y coordinate of the Vec3 point, pointing Upwards. -- @param DCSTypes#Distance z The z coordinate of the Vec3 point, pointing to the Right. --- @return Point#POINT_VEC3 +-- @return Point#POINT_VEC3 self function POINT_VEC3:New( x, y, z ) local self = BASE:Inherit( self, BASE:New() ) - self:F2( { x, y, z } ) self.PointVec3 = { x = x, y = y, z = z } + self:F2( self.PointVec3 ) return self end + +--- Build an air type route point. +-- @param #POINT_VEC3 self +-- @param #POINT_VEC3.RoutePointAltType AltType The altitude type. +-- @param #POINT_VEC3.RoutePointType Type The route point type. +-- @param #POINT_VEC3.RoutePointAction Action The route point action. +-- @param DCSTypes#Speed Speed Airspeed in km/h. +-- @param #boolean SpeedLocked true means the speed is locked. +-- @return #table The route point. +function POINT_VEC3:RoutePointAir( AltType, Type, Action, Speed, SpeedLocked ) + + local RoutePoint = {} + RoutePoint.x = self.PointVec3.x + RoutePoint.y = self.PointVec3.z + RoutePoint.alt = self.PointVec3.y + RoutePoint.alt_type = AltType + + RoutePoint.type = Type + RoutePoint.action = Action + + RoutePoint.speed = Speed + RoutePoint.speed_locked = true + + RoutePoint.properties = { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + } + +-- ["task"] = +-- { +-- ["id"] = "ComboTask", +-- ["params"] = +-- { +-- ["tasks"] = +-- { +-- }, -- end of ["tasks"] +-- }, -- end of ["params"] +-- }, -- end of ["task"] + + + RoutePoint.task = {} + RoutePoint.task.id = "ComboTask" + RoutePoint.task.params = {} + RoutePoint.task.params.tasks = {} + + + return RoutePoint +end + + --- Smokes the point in a color. -- @param #POINT_VEC3 self -- @param Point#POINT_VEC3.SmokeColor SmokeColor @@ -11316,6 +11991,7 @@ end --- The POINT_VEC2 class -- @type POINT_VEC2 +-- @field DCSTypes#Vec2 PointVec2 -- @extends Point#POINT_VEC3 POINT_VEC2 = { ClassName = "POINT_VEC2", @@ -11336,10 +12012,38 @@ function POINT_VEC2:New( x, y, LandHeightAdd ) local self = BASE:Inherit( self, POINT_VEC3:New( x, LandHeight, y ) ) self:F2( { x, y, LandHeightAdd } ) + + self.PointVec2 = { x = x, y = y } return self end +--- Calculate the distance from a reference @{Point#POINT_VEC2}. +-- @param #POINT_VEC2 self +-- @param #POINT_VEC2 PointVec2Reference The reference @{Point#POINT_VEC2}. +-- @return DCSTypes#Distance The distance from the reference @{Point#POINT_VEC2} in meters. +function POINT_VEC2:DistanceFromPointVec2( PointVec2Reference ) + self:F2( PointVec2Reference ) + + local Distance = ( ( PointVec2Reference.PointVec2.x - self.PointVec2.x ) ^ 2 + ( PointVec2Reference.PointVec2.y - self.PointVec2.y ) ^2 ) ^0.5 + + self:T2( Distance ) + return Distance +end + +--- Calculate the distance from a reference @{DCSTypes#Vec2}. +-- @param #POINT_VEC2 self +-- @param DCSTypes#Vec2 Vec2Reference The reference @{DCSTypes#Vec2}. +-- @return DCSTypes#Distance The distance from the reference @{DCSTypes#Vec2} in meters. +function POINT_VEC2:DistanceFromVec2( Vec2Reference ) + self:F2( Vec2Reference ) + + local Distance = ( ( Vec2Reference.x - self.PointVec2.x ) ^ 2 + ( Vec2Reference.y - self.PointVec2.y ) ^2 ) ^0.5 + + self:T2( Distance ) + return Distance +end + --- The main include file for the MOOSE system. @@ -11353,6 +12057,7 @@ Include.File( "Unit" ) Include.File( "Zone" ) Include.File( "Client" ) Include.File( "Static" ) +Include.File( "Airbase" ) Include.File( "Database" ) Include.File( "Set" ) Include.File( "Point" ) @@ -11378,44 +12083,11 @@ Include.File( "Movement" ) Include.File( "Sead" ) Include.File( "Escort" ) Include.File( "MissileTrainer" ) +Include.File( "PatrolZone" ) Include.File( "AIBalancer" ) Include.File( "AirbasePolice" ) Include.File( "Detection" ) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- The order of the declarations is important here. Don't touch it. --- Declare the event dispatcher based on the EVENT class @@ -17275,7 +17947,7 @@ function SPAWN:SpawnInZone( Zone, ZoneRandomize, SpawnIndex ) local ZonePoint if ZoneRandomize == true then - ZonePoint = Zone:GetRandomPointVec2() + ZonePoint = Zone:GetRandomVec2() else ZonePoint = Zone:GetPointVec2() end @@ -17285,7 +17957,7 @@ function SPAWN:SpawnInZone( Zone, ZoneRandomize, SpawnIndex ) -- Apply SpawnFormation for UnitID = 1, #SpawnTemplate.units do - local ZonePointUnit = Zone:GetRandomPointVec2() + local ZonePointUnit = Zone:GetRandomVec2() SpawnTemplate.units[UnitID].x = ZonePointUnit.x SpawnTemplate.units[UnitID].y = ZonePointUnit.y self:T( 'SpawnTemplate.units['..UnitID..'].x = ' .. SpawnTemplate.units[UnitID].x .. ', SpawnTemplate.units['..UnitID..'].y = ' .. SpawnTemplate.units[UnitID].y ) @@ -19458,10 +20130,12 @@ function ESCORT:_ReportTargetsScheduler() return false end ---- Provides missile training functions. +--- This module contains the MISSILETRAINER class. +-- +-- === -- --- @{#MISSILETRAINER} class --- ======================== +-- 1) @{MissileTrainer#MISSILETRAINER} class, extends @{Base#BASE} +-- =============================================================== -- The @{#MISSILETRAINER} class uses the DCS world messaging system to be alerted of any missiles fired, and when a missile would hit your aircraft, -- the class will destroy the missile within a certain range, to avoid damage to your aircraft. -- It suports the following functionality: @@ -19503,16 +20177,16 @@ end -- * **200 meter**: Destroys the missile when the distance to the aircraft is below or equal to 200 meter. -- -- --- MISSILETRAINER construction methods: --- ==================================== +-- 1.1) MISSILETRAINER construction methods: +-- ----------------------------------------- -- Create a new MISSILETRAINER object with the @{#MISSILETRAINER.New} method: -- -- * @{#MISSILETRAINER.New}: Creates a new MISSILETRAINER object taking the maximum distance to your aircraft to evaluate when a missile needs to be destroyed. -- -- MISSILETRAINER will collect each unit declared in the mission with a skill level "Client" and "Player", and will monitor the missiles shot at those. -- --- MISSILETRAINER initialization methods: --- ====================================== +-- 1.2) MISSILETRAINER initialization methods: +-- ------------------------------------------- -- A MISSILETRAINER object will behave differently based on the usage of initialization methods: -- -- * @{#MISSILETRAINER.InitMessagesOnOff}: Sets by default the display of any message to be ON or OFF. @@ -19526,6 +20200,15 @@ end -- * @{#MISSILETRAINER.InitBearingOnOff}: Sets by default the display of bearing information of missiles ON of OFF. -- * @{#MISSILETRAINER.InitMenusOnOff}: Allows to configure the options through the radio menu. -- +-- === +-- +-- CREDITS +-- ======= +-- **Stuka (Danny)** Who you can search on the Eagle Dynamics Forums. +-- Working together with Danny has resulted in the MISSILETRAINER class. +-- Danny has shared his ideas and together we made a design. +-- Together with the **476 virtual team**, we tested the MISSILETRAINER class, and got much positive feedback! +-- -- @module MissileTrainer -- @author FlightControl @@ -20160,8 +20843,30 @@ end -- -- * @{#AIBALANCER.New}: Creates a new AIBALANCER object. -- +-- 1.2) AIBALANCER returns AI to Airbases: +-- --------------------------------------- +-- You can configure to have the AI to return to: -- +-- * @{#AIBALANCER.ReturnToHomeAirbase}: Returns the AI to the home @{Airbase#AIRBASE}. +-- * @{#AIBALANCER.ReturnToNearestAirbases}: Returns the AI to the nearest friendly @{Airbase#AIRBASE}. +-- +-- 1.3) AIBALANCER allows AI to patrol specific zones: +-- --------------------------------------------------- +-- Use @{AIBalancer#AIBALANCER.SetPatrolZone}() to specify a zone where the AI needs to patrol. +-- +-- -- === +-- +-- CREDITS +-- ======= +-- **Dutch_Baron (James)** Who you can search on the Eagle Dynamics Forums. +-- Working together with James has resulted in the creation of the AIBALANCER class. +-- James has shared his ideas on balancing AI with air units, and together we made a first design which you can use now :-) +-- +-- **SNAFU** +-- Had a couple of mails with the guys to validate, if the same concept in the GCI/CAP script could be reworked within MOOSE. +-- None of the script code has been used however within the new AIBALANCER moose class. +-- -- @module AIBalancer -- @author FlightControl @@ -20169,9 +20874,16 @@ end -- @type AIBALANCER -- @field Set#SET_CLIENT SetClient -- @field Spawn#SPAWN SpawnAI +-- @field #boolean ToNearestAirbase +-- @field Set#SET_AIRBASE ReturnAirbaseSet +-- @field DCSTypes#Distance ReturnTresholdRange +-- @field #boolean ToHomeAirbase +-- @field PatrolZone#PATROLZONE PatrolZone -- @extends Base#BASE AIBALANCER = { ClassName = "AIBALANCER", + PatrolZones = {}, + AIGroups = {}, } --- Creates a new AIBALANCER object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names. @@ -20185,13 +20897,64 @@ function AIBALANCER:New( SetClient, SpawnAI ) local self = BASE:Inherit( self, BASE:New() ) self.SetClient = SetClient - self.SpawnAI = SpawnAI + if type( SpawnAI ) == "table" then + if SpawnAI.ClassName and SpawnAI.ClassName == "SPAWN" then + self.SpawnAI = { SpawnAI } + else + local SpawnObjects = true + for SpawnObjectID, SpawnObject in pairs( SpawnAI ) do + if SpawnObject.ClassName and SpawnObject.ClassName == "SPAWN" then + self:E( SpawnObject.ClassName ) + else + self:E( "other object" ) + SpawnObjects = false + end + end + if SpawnObjects == true then + self.SpawnAI = SpawnAI + else + error( "No SPAWN object given in parameter SpawnAI, either as a single object or as a table of objects!" ) + end + end + end + + self.ToNearestAirbase = false + self.ReturnHomeAirbase = false self.AIMonitorSchedule = SCHEDULER:New( self, self._ClientAliveMonitorScheduler, {}, 1, 10, 0 ) return self end +--- Returns the AI to the nearest friendly @{Airbase#AIRBASE}. +-- @param #AIBALANCER self +-- @param DCSTypes#Distance ReturnTresholdRange If there is an enemy @{Client#CLIENT} within the ReturnTresholdRange given in meters, the AI will not return to the nearest @{Airbase#AIRBASE}. +-- @param Set#SET_AIRBASE ReturnAirbaseSet The SET of @{Set#SET_AIRBASE}s to evaluate where to return to. +function AIBALANCER:ReturnToNearestAirbases( ReturnTresholdRange, ReturnAirbaseSet ) + + self.ToNearestAirbase = true + self.ReturnTresholdRange = ReturnTresholdRange + self.ReturnAirbaseSet = ReturnAirbaseSet +end + +--- Returns the AI to the home @{Airbase#AIRBASE}. +-- @param #AIBALANCER self +-- @param DCSTypes#Distance ReturnTresholdRange If there is an enemy @{Client#CLIENT} within the ReturnTresholdRange given in meters, the AI will not return to the nearest @{Airbase#AIRBASE}. +function AIBALANCER:ReturnToHomeAirbase( ReturnTresholdRange ) + + self.ToHomeAirbase = true + self.ReturnTresholdRange = ReturnTresholdRange +end + +--- Let the AI patrol a @{Zone} with a given Speed range and Altitude range. +-- @param #AIBALANCER self +-- @param PatrolZone#PATROLZONE PatrolZone The @{PatrolZone} where the AI needs to patrol. +-- @return PatrolZone#PATROLZONE self +function AIBALANCER:SetPatrolZone( PatrolZone ) + + self.PatrolZone = PatrolZone +end + --- @param #AIBALANCER self function AIBALANCER:_ClientAliveMonitorScheduler() @@ -20203,13 +20966,100 @@ function AIBALANCER:_ClientAliveMonitorScheduler() if Client:IsAlive() then if ClientAIAliveState == true then Client:SetState( self, 'AIAlive', false ) - local AIGroup = Client:GetState( self, 'AIGroup' ) -- Group#GROUP - AIGroup:Destroy() + + local AIGroup = self.AIGroups[Client.UnitName] -- Group#GROUP + +-- local PatrolZone = Client:GetState( self, "PatrolZone" ) +-- if PatrolZone then +-- PatrolZone = nil +-- Client:ClearState( self, "PatrolZone" ) +-- end + + if self.ToNearestAirbase == false and self.ToHomeAirbase == false then + AIGroup:Destroy() + else + -- We test if there is no other CLIENT within the self.ReturnTresholdRange of the first unit of the AI group. + -- If there is a CLIENT, the AI stays engaged and will not return. + -- If there is no CLIENT within the self.ReturnTresholdRange, then the unit will return to the Airbase return method selected. + + local PlayerInRange = { Value = false } + local RangeZone = ZONE_RADIUS:New( 'RangeZone', AIGroup:GetPointVec2(), self.ReturnTresholdRange ) + + self:E( RangeZone ) + + _DATABASE:ForEachPlayer( + --- @param Unit#UNIT RangeTestUnit + function( RangeTestUnit, RangeZone, AIGroup, PlayerInRange ) + self:E( { PlayerInRange, RangeTestUnit.UnitName, RangeZone.ZoneName } ) + if RangeTestUnit:IsInZone( RangeZone ) == true then + self:E( "in zone" ) + if RangeTestUnit:GetCoalition() ~= AIGroup:GetCoalition() then + self:E( "in range" ) + PlayerInRange.Value = true + end + end + end, + + --- @param Zone#ZONE_RADIUS RangeZone + -- @param Group#GROUP AIGroup + function( RangeZone, AIGroup, PlayerInRange ) + local AIGroupTemplate = AIGroup:GetTemplate() + if PlayerInRange.Value == false then + if self.ToHomeAirbase == true then + local WayPointCount = #AIGroupTemplate.route.points + local SwitchWayPointCommand = AIGroup:CommandSwitchWayPoint( 1, WayPointCount, 1 ) + AIGroup:SetCommand( SwitchWayPointCommand ) + AIGroup:MessageToRed( "Returning to home base ...", 30 ) + else + -- Okay, we need to send this Group back to the nearest base of the Coalition of the AI. + --TODO: i need to rework the POINT_VEC2 thing. + local PointVec2 = POINT_VEC2:New( AIGroup:GetPointVec2().x, AIGroup:GetPointVec2().y ) + local ClosestAirbase = self.ReturnAirbaseSet:FindNearestAirbaseFromPointVec2( PointVec2 ) + self:T( ClosestAirbase.AirbaseName ) + AIGroup:MessageToRed( "Returning to " .. ClosestAirbase:GetName().. " ...", 30 ) + local RTBRoute = AIGroup:RouteReturnToAirbase( ClosestAirbase ) + AIGroupTemplate.route = RTBRoute + AIGroup:Respawn( AIGroupTemplate ) + end + end + end + , RangeZone, AIGroup, PlayerInRange + ) + + end end else if not ClientAIAliveState or ClientAIAliveState == false then Client:SetState( self, 'AIAlive', true ) - Client:SetState( self, 'AIGroup', self.SpawnAI:Spawn() ) + + + -- OK, spawn a new group from the SpawnAI objects provided. + local SpawnAICount = #self.SpawnAI + local SpawnAIIndex = math.random( 1, SpawnAICount ) + local AIGroup = self.SpawnAI[SpawnAIIndex]:Spawn() + AIGroup:E( "spawning new AIGroup" ) + --TODO: need to rework UnitName thing ... + self.AIGroups[Client.UnitName] = AIGroup + + --- Now test if the AIGroup needs to patrol a zone, otherwise let it follow its route... + if self.PatrolZone then + self.PatrolZones[#self.PatrolZones+1] = PATROLZONE:New( + self.PatrolZone.PatrolZone, + self.PatrolZone.PatrolFloorAltitude, + self.PatrolZone.PatrolCeilingAltitude, + self.PatrolZone.PatrolMinSpeed, + self.PatrolPatrolMaxSpeed + ) + + if self.PatrolZone.PatrolManageFuel == true then + self.PatrolZones[#self.PatrolZones]:ManageFuel( self.PatrolZone.PatrolFuelTresholdPercentage, self.PatrolZone.PatrolOutOfFuelOrbitTime ) + end + self.PatrolZones[#self.PatrolZones]:SetGroup( AIGroup ) + + --self.PatrolZones[#self.PatrolZones+1] = PatrolZone + + --Client:SetState( self, "PatrolZone", PatrolZone ) + end end end end @@ -21257,32 +22107,34 @@ function DETECTION_BASE:_DetectionScheduler( SchedulerName ) if self.DetectedUnits then for DetectedUnitName, DetectedUnitData in pairs( self.DetectedUnits ) do local DetectedUnit = DetectedUnitData.DetectedUnit -- Unit#UNIT - self:T( DetectedUnit:GetName() ) - if #self.DetectedUnitSets == 0 then - self:T( { "Adding Unit Set #", 1 } ) - self.DetectedUnitSets[1] = {} - self.DetectedUnitSets[1].Zone = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) - self.DetectedUnitSets[1].Set = SET_UNIT:New() - self.DetectedUnitSets[1].Set:AddUnit( DetectedUnit ) - else - local AddedToSet = false - for DetectedUnitSetID, DetectedUnitSetData in pairs( self.DetectedUnitSets ) do - self:T( "Detected Unit Set #" .. DetectedUnitSetID ) - local DetectedUnitSet = DetectedUnitSetData.Set -- Set#SET_UNIT - local DetectedZone = DetectedUnitSetData.Zone -- Zone#ZONE_UNIT - if DetectedUnit:IsInZone( DetectedZone ) then - self:T( "Adding to Unit Set #" .. DetectedUnitSetID ) - self.DetectedUnitSets[DetectedUnitSetID].Set:AddUnit( DetectedUnit ) - AddedToSet = true + if DetectedUnit and DetectedUnit:IsAlive() then + self:T( DetectedUnit:GetName() ) + if #self.DetectedUnitSets == 0 then + self:T( { "Adding Unit Set #", 1 } ) + self.DetectedUnitSets[1] = {} + self.DetectedUnitSets[1].Zone = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) + self.DetectedUnitSets[1].Set = SET_UNIT:New() + self.DetectedUnitSets[1].Set:AddUnit( DetectedUnit ) + else + local AddedToSet = false + for DetectedUnitSetID, DetectedUnitSetData in pairs( self.DetectedUnitSets ) do + self:T( "Detected Unit Set #" .. DetectedUnitSetID ) + local DetectedUnitSet = DetectedUnitSetData.Set -- Set#SET_UNIT + local DetectedZone = DetectedUnitSetData.Zone -- Zone#ZONE_UNIT + if DetectedUnit:IsInZone( DetectedZone ) then + self:T( "Adding to Unit Set #" .. DetectedUnitSetID ) + self.DetectedUnitSets[DetectedUnitSetID].Set:AddUnit( DetectedUnit ) + AddedToSet = true + end end + if AddedToSet == false then + self:T( "Adding new Unit Set #" .. #self.DetectedUnitSets+1 ) + self.DetectedUnitSets[#self.DetectedUnitSets+1] = {} + self.DetectedUnitSets[#self.DetectedUnitSets].Zone = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) + self.DetectedUnitSets[#self.DetectedUnitSets].Set = SET_UNIT:New() + self.DetectedUnitSets[#self.DetectedUnitSets].Set:AddUnit( DetectedUnit ) + end end - if AddedToSet == false then - self:T( "Adding new Unit Set #" .. #self.DetectedUnitSets+1 ) - self.DetectedUnitSets[#self.DetectedUnitSets+1] = {} - self.DetectedUnitSets[#self.DetectedUnitSets].Zone = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) - self.DetectedUnitSets[#self.DetectedUnitSets].Set = SET_UNIT:New() - self.DetectedUnitSets[#self.DetectedUnitSets].Set:AddUnit( DetectedUnit ) - end end end end diff --git a/Moose Mission Setup/Moose.lua b/Moose Mission Setup/Moose.lua index 15c498977..e07adf4ba 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: 20160615_2239' ) +env.info( 'Moose Generation Timestamp: 20160622_0930' ) local base = _G Include = {} @@ -3351,10 +3351,14 @@ local _EVENTCODES = { -- @field weapon -- @field IniDCSUnit -- @field IniDCSUnitName +-- @field Unit#UNIT IniUnit +-- @field #string IniUnitName -- @field IniDCSGroup -- @field IniDCSGroupName -- @field TgtDCSUnit -- @field TgtDCSUnitName +-- @field Unit#UNIT TgtUnit +-- @field #string TgtUnitName -- @field TgtDCSGroup -- @field TgtDCSGroupName -- @field Weapon @@ -3776,6 +3780,8 @@ function EVENT:onEvent( Event ) Event.IniDCSUnit = Event.initiator Event.IniDCSGroup = Event.IniDCSUnit:getGroup() Event.IniDCSUnitName = Event.IniDCSUnit:getName() + Event.IniUnitName = Event.IniDCSUnitName + Event.IniUnit = UNIT:FindByName( Event.IniDCSUnitName ) Event.IniDCSGroupName = "" if Event.IniDCSGroup and Event.IniDCSGroup:isExist() then Event.IniDCSGroupName = Event.IniDCSGroup:getName() @@ -3786,6 +3792,8 @@ function EVENT:onEvent( Event ) Event.TgtDCSUnit = Event.target Event.TgtDCSGroup = Event.TgtDCSUnit:getGroup() Event.TgtDCSUnitName = Event.TgtDCSUnit:getName() + Event.TgtUnitName = Event.TgtDCSUnitName + Event.TgtUnit = UNIT:FindByName( Event.TgtDCSUnitName ) Event.TgtDCSGroupName = "" if Event.TgtDCSGroup and Event.TgtDCSGroup:isExist() then Event.TgtDCSGroupName = Event.TgtDCSGroup:getName() @@ -4247,6 +4255,7 @@ end -- * @{#GROUP.TaskRouteToVec2}: (AIR + GROUND) Make the Group move to a given point. -- * @{#GROUP.TaskRouteToVec3}: (AIR + GROUND) Make the Group move to a given point. -- * @{#GROUP.TaskRouteToZone}: (AIR + GROUND) Route the group to a given zone. +-- * @{#GROUP.TaskReturnToBase}: (AIR) Route the group to an airbase. -- -- ### 1.2.2) EnRoute task methods -- @@ -4675,10 +4684,15 @@ end -- Use the method @{Group@GROUP:WayPointExecute) to start the execution of the new mission plan. -- Note that when WayPointInitialize is called, the Mission of the group is RESTARTED! -- @param #GROUP self +-- @param #table WayPoints If WayPoints is given, then use the route. -- @return #GROUP -function GROUP:WayPointInitialize() +function GROUP:WayPointInitialize( WayPoints ) - self.WayPoints = self:GetTaskRoute() + if WayPoints then + self.WayPoints = WayPoints + else + self.WayPoints = self:GetTaskRoute() + end return self end @@ -5232,6 +5246,24 @@ function GROUP:CommandSwitchWayPoint( FromWayPoint, ToWayPoint, Index ) return CommandSwitchWayPoint end +--- Perform stop route command +-- @param #GROUP self +-- @param #boolean StopRoute +-- @return DCSTask#Task +function GROUP:CommandStopRoute( StopRoute, Index ) + self:F2( { StopRoute, Index } ) + + local CommandStopRoute = { + id = 'StopRoute', + params = { + value = StopRoute, + }, + } + + self:T3( { CommandStopRoute } ) + return CommandStopRoute +end + -- TASKS FOR AIR GROUPS @@ -5609,7 +5641,7 @@ function GROUP:TaskLandAtZone( Zone, Duration, RandomPoint ) local Point if RandomPoint then - Point = Zone:GetRandomPointVec2() + Point = Zone:GetRandomVec2() else Point = Zone:GetPointVec2() end @@ -6365,7 +6397,7 @@ function GROUP:TaskRouteToZone( Zone, Randomize, Speed, Formation ) local ZonePoint if Randomize then - ZonePoint = Zone:GetRandomPointVec2() + ZonePoint = Zone:GetRandomVec2() else ZonePoint = Zone:GetPointVec2() end @@ -6398,6 +6430,125 @@ function GROUP:TaskRouteToZone( Zone, Randomize, Speed, Formation ) return nil end +--- (AIR) Return the Group to an @{Airbase#AIRBASE} +-- A speed can be given in km/h. +-- A given formation can be given. +-- @param #GROUP self +-- @param Airbase#AIRBASE ReturnAirbase The @{Airbase#AIRBASE} to return to. +-- @param #number Speed (optional) The speed. +-- @return #string The route +function GROUP:RouteReturnToAirbase( ReturnAirbase, Speed ) + self:F2( { ReturnAirbase, Speed } ) + +-- Example +-- [4] = +-- { +-- ["alt"] = 45, +-- ["type"] = "Land", +-- ["action"] = "Landing", +-- ["alt_type"] = "BARO", +-- ["formation_template"] = "", +-- ["properties"] = +-- { +-- ["vnav"] = 1, +-- ["scale"] = 0, +-- ["angle"] = 0, +-- ["vangle"] = 0, +-- ["steer"] = 2, +-- }, -- end of ["properties"] +-- ["ETA"] = 527.81058817743, +-- ["airdromeId"] = 12, +-- ["y"] = 243127.2973737, +-- ["x"] = -5406.2803440839, +-- ["name"] = "DictKey_WptName_53", +-- ["speed"] = 138.88888888889, +-- ["ETA_locked"] = false, +-- ["task"] = +-- { +-- ["id"] = "ComboTask", +-- ["params"] = +-- { +-- ["tasks"] = +-- { +-- }, -- end of ["tasks"] +-- }, -- end of ["params"] +-- }, -- end of ["task"] +-- ["speed_locked"] = true, +-- }, -- end of [4] + + + local DCSGroup = self:GetDCSGroup() + + if DCSGroup then + + local GroupPoint = self:GetPointVec2() + local GroupVelocity = self:GetMaxVelocity() + + local PointFrom = {} + PointFrom.x = GroupPoint.x + PointFrom.y = GroupPoint.y + PointFrom.type = "Turning Point" + PointFrom.action = "Turning Point" + PointFrom.speed = GroupVelocity + + + local PointTo = {} + local AirbasePoint = ReturnAirbase:GetPointVec2() + + PointTo.x = AirbasePoint.x + PointTo.y = AirbasePoint.y + PointTo.type = "Land" + PointTo.action = "Landing" + PointTo.airdromeId = ReturnAirbase:GetID()-- Airdrome ID + self:T(PointTo.airdromeId) + --PointTo.alt = 0 + + local Points = { PointFrom, PointTo } + + self:T3( Points ) + + local Route = { points = Points, } + + return Route + end + + return nil +end + +--- @param Group#GROUP self +function GROUP:Respawn( Template ) + + local Vec3 = self:GetPointVec3() + --Template.x = Vec3.x + --Template.y = Vec3.z + Template.x = nil + Template.y = nil + + self:E( #Template.units ) + for UnitID, UnitData in pairs( self:GetUnits() ) do + local GroupUnit = UnitData -- Unit#UNIT + self:E( GroupUnit:GetName() ) + if GroupUnit:IsAlive() then + local GroupUnitVec3 = GroupUnit:GetPointVec3() + local GroupUnitHeading = GroupUnit:GetHeading() + Template.units[UnitID].alt = GroupUnitVec3.y + Template.units[UnitID].x = GroupUnitVec3.x + Template.units[UnitID].y = GroupUnitVec3.z + Template.units[UnitID].heading = GroupUnitHeading + self:E( { UnitID, Template.units[UnitID], Template.units[UnitID] } ) + end + end + + _DATABASE:Spawn( Template ) + +end + +function GROUP:GetTemplate() + + return _DATABASE.Templates.Groups[self:GetName()].Template + +end + -- Commands --- Do Script command @@ -6480,6 +6631,8 @@ function GROUP:CopyRoute( Begin, End, Randomize, Radius ) end end return Points + else + error( "Template not found for Group : " .. GroupName ) end return nil @@ -7659,6 +7812,29 @@ function UNIT:GetCategoryName() return nil end +--- Returns the DCS Unit heading. +-- @param Unit#UNIT self +-- @return #number The DCS Unit heading +function UNIT:GetHeading() + local DCSUnit = self:GetDCSUnit() + + if DCSUnit then + + local UnitPosition = DCSUnit:getPosition() + if UnitPosition then + local UnitHeading = math.atan2( UnitPosition.x.z, UnitPosition.x.x ) + if UnitHeading < 0 then + UnitHeading = UnitHeading + 2 * math.pi + end + self:T2( UnitHeading ) + return UnitHeading + end + end + + return nil +end + + --- Signal a flare at the position of the UNIT. -- @param #UNIT self function UNIT:Flare( FlareColor ) @@ -7833,6 +8009,15 @@ ZONE_BASE = { ClassName = "ZONE_BASE", } + +--- The ZONE_BASE.BoundingSquare +-- @type ZONE_BASE.BoundingSquare +-- @field DCSTypes#Distance x1 The lower x coordinate (left down) +-- @field DCSTypes#Distance y1 The lower y coordinate (left down) +-- @field DCSTypes#Distance x2 The higher x coordinate (right up) +-- @field DCSTypes#Distance y2 The higher y coordinate (right up) + + --- ZONE_BASE constructor -- @param #ZONE_BASE self -- @param #string ZoneName Name of the zone. @@ -7847,7 +8032,7 @@ function ZONE_BASE:New( ZoneName ) end --- Returns if a location is within the zone. --- @param #ZONE_RADIUS self +-- @param #ZONE_BASE self -- @param DCSTypes#Vec2 PointVec2 The location to test. -- @return #boolean true if the location is within the zone. function ZONE_BASE:IsPointVec2InZone( PointVec2 ) @@ -7857,7 +8042,7 @@ function ZONE_BASE:IsPointVec2InZone( PointVec2 ) end --- Returns if a point is within the zone. --- @param #ZONE_RADIUS self +-- @param #ZONE_BASE self -- @param DCSTypes#Vec3 PointVec3 The point to test. -- @return #boolean true if the point is within the zone. function ZONE_BASE:IsPointVec3InZone( PointVec3 ) @@ -7868,6 +8053,21 @@ function ZONE_BASE:IsPointVec3InZone( PointVec3 ) return InZone end +--- Define a random @{DCSTypes#Vec2} within the zone. +-- @param #ZONE_BASE self +-- @return DCSTypes#Vec2 The Vec2 coordinates. +function ZONE_BASE:GetRandomVec2() + return { x = 0, y = 0 } +end + +--- Get the bounding square the zone. +-- @param #ZONE_BASE self +-- @return #ZONE_BASE.BoundingSquare The bounding square. +function ZONE_BASE:GetBoundingSquare() + return { x1 = 0, y1 = 0, x2 = 0, y2 = 0 } +end + + --- Smokes the zone boundaries in a color. -- @param #ZONE_BASE self -- @param SmokeColor The smoke color. @@ -8053,7 +8253,7 @@ end --- Returns a random location within the zone. -- @param #ZONE_RADIUS self -- @return DCSTypes#Vec2 The random location within the zone. -function ZONE_RADIUS:GetRandomPointVec2() +function ZONE_RADIUS:GetRandomVec2() self:F( self.ZoneName ) local Point = {} @@ -8251,6 +8451,55 @@ function ZONE_POLYGON_BASE:IsPointVec2InZone( PointVec2 ) return c end +--- Define a random @{DCSTypes#Vec2} within the zone. +-- @param #ZONE_POLYGON_BASE self +-- @return DCSTypes#Vec2 The Vec2 coordinate. +function ZONE_POLYGON_BASE:GetRandomVec2() + self:F2() + + --- It is a bit tricky to find a random point within a polygon. Right now i am doing it the dirty and inefficient way... + local Vec2Found = false + local Vec2 + local BS = self:GetBoundingSquare() + + self:T2( BS ) + + while Vec2Found == false do + Vec2 = { x = math.random( BS.x1, BS.x2 ), y = math.random( BS.y1, BS.y2 ) } + self:T2( Vec2 ) + if self:IsPointVec2InZone( Vec2 ) then + Vec2Found = true + end + end + + self:T2( Vec2 ) + + return Vec2 +end + +--- Get the bounding square the zone. +-- @param #ZONE_POLYGON_BASE self +-- @return #ZONE_POLYGON_BASE.BoundingSquare The bounding square. +function ZONE_POLYGON_BASE:GetBoundingSquare() + + local x1 = self.Polygon[1].x + local y1 = self.Polygon[1].y + local x2 = self.Polygon[1].x + local y2 = self.Polygon[1].y + + for i = 2, #self.Polygon do + self:T2( { self.Polygon[i], x1, y1, x2, y2 } ) + x1 = ( x1 > self.Polygon[i].x ) and self.Polygon[i].x or x1 + x2 = ( x2 < self.Polygon[i].x ) and self.Polygon[i].x or x2 + y1 = ( y1 > self.Polygon[i].y ) and self.Polygon[i].y or y1 + y2 = ( y2 < self.Polygon[i].y ) and self.Polygon[i].y or y2 + + end + + return { x1 = x1, y1 = y1, x2 = x2, y2 = y2 } +end + + @@ -8515,7 +8764,6 @@ end --- @param #CLIENT self function CLIENT:_AliveCheckScheduler( SchedulerName ) - self:E( SchedulerName ) self:F( { SchedulerName, self.ClientName, self.ClientAlive2, self.ClientBriefingShown, self.ClientCallBack } ) if self:IsAlive() then @@ -8838,51 +9086,44 @@ function STATIC:GetDCSUnit() return nil end ---- Manage the mission database. +--- This module contains the DATABASE class, managing the database of mission objects. -- --- @{#DATABASE} class --- ================== +-- ==== +-- +-- 1) @{Database#DATABASE} class, extends @{Base#BASE} +-- =================================================== -- Mission designers can use the DATABASE class to refer to: -- -- * UNITS -- * GROUPS --- * players --- * alive players -- * CLIENTS --- * alive CLIENTS +-- * AIRPORTS +-- * PLAYERSJOINED +-- * PLAYERS -- --- On top, for internal MOOSE administration purposes, the DATBASE administers the Unit and Gruop templates as defined within the Mission Editor. +-- On top, for internal MOOSE administration purposes, the DATBASE administers the Unit and Group TEMPLATES as defined within the Mission Editor. -- -- Moose will automatically create one instance of the DATABASE class into the **global** object _DATABASE. -- Moose refers to _DATABASE within the framework extensively, but you can also refer to the _DATABASE object within your missions if required. -- --- DATABASE iterators: --- =================== +-- 1.1) DATABASE iterators +-- ----------------------- -- You can iterate the database with the available iterator methods. -- The iterator methods will walk the DATABASE set, and call for each element within the set a function that you provide. -- The following iterator methods are currently available within the DATABASE: -- -- * @{#DATABASE.ForEachUnit}: Calls a function for each @{UNIT} it finds within the DATABASE. -- * @{#DATABASE.ForEachGroup}: Calls a function for each @{GROUP} it finds within the DATABASE. --- * @{#DATABASE.ForEachPlayer}: Calls a function for each player it finds within the DATABASE. --- * @{#DATABASE.ForEachPlayerAlive}: Calls a function for each alive player it finds within the DATABASE. +-- * @{#DATABASE.ForEachPlayer}: Calls a function for each alive player it finds within the DATABASE. +-- * @{#DATABASE.ForEachPlayerJoined}: Calls a function for each joined player it finds within the DATABASE. -- * @{#DATABASE.ForEachClient}: Calls a function for each @{CLIENT} it finds within the DATABASE. -- * @{#DATABASE.ForEachClientAlive}: Calls a function for each alive @{CLIENT} it finds within the DATABASE. --- +-- +-- === +-- -- @module Database -- @author FlightControl - - - - - - - - - - - --- DATABASE class -- @type DATABASE -- @extends Base#BASE @@ -8898,9 +9139,9 @@ DATABASE = { STATICS = {}, GROUPS = {}, PLAYERS = {}, - PLAYERSALIVE = {}, + PLAYERSJOINED = {}, CLIENTS = {}, - CLIENTSALIVE = {}, + AIRBASES = {}, NavPoints = {}, } @@ -8945,6 +9186,7 @@ function DATABASE:New() self:_RegisterClients() self:_RegisterStatics() self:_RegisterPlayers() + self:_RegisterAirbases() return self end @@ -9006,6 +9248,33 @@ function DATABASE:FindStatic( StaticName ) return StaticFound end +--- Adds a Airbase based on the Airbase Name in the DATABASE. +-- @param #DATABASE self +function DATABASE:AddAirbase( DCSAirbaseName ) + + if not self.AIRBASES[DCSAirbaseName] then + self.AIRBASES[DCSAirbaseName] = AIRBASE:Register( DCSAirbaseName ) + end +end + + +--- Deletes a Airbase from the DATABASE based on the Airbase Name. +-- @param #DATABASE self +function DATABASE:DeleteAirbase( DCSAirbaseName ) + + --self.AIRBASES[DCSAirbaseName] = nil +end + +--- Finds a AIRBASE based on the AirbaseName. +-- @param #DATABASE self +-- @param #string AirbaseName +-- @return Airbase#AIRBASE The found AIRBASE. +function DATABASE:FindAirbase( AirbaseName ) + + local AirbaseFound = self.AIRBASES[AirbaseName] + return AirbaseFound +end + --- Finds a CLIENT based on the ClientName. -- @param #DATABASE self @@ -9058,9 +9327,8 @@ function DATABASE:AddPlayer( UnitName, PlayerName ) if PlayerName then self:E( { "Add player for unit:", UnitName, PlayerName } ) - self.PLAYERS[PlayerName] = PlayerName - self.PLAYERSALIVE[PlayerName] = PlayerName - self.CLIENTSALIVE[PlayerName] = self:FindClient( UnitName ) + self.PLAYERS[PlayerName] = UNIT:FindByName( UnitName ) + self.PLAYERSJOINED[PlayerName] = PlayerName end end @@ -9070,8 +9338,7 @@ function DATABASE:DeletePlayer( PlayerName ) if PlayerName then self:E( { "Clean player:", PlayerName } ) - self.PLAYERSALIVE[PlayerName] = nil - self.CLIENTSALIVE[PlayerName] = nil + self.PLAYERS[PlayerName] = nil end end @@ -9211,6 +9478,18 @@ function DATABASE:GetCountryFromClientTemplate( ClientName ) return self.Templates.ClientsByName[ClientName].CountryID end +--- Airbase + +function DATABASE:GetCoalitionFromAirbase( AirbaseName ) + return self.AIRBASES[AirbaseName]:GetCoalition() +end + +function DATABASE:GetCategoryFromAirbase( AirbaseName ) + return self.AIRBASES[AirbaseName]:GetCategory() +end + + + --- Private method that registers all alive players in the mission. -- @param #DATABASE self -- @return #DATABASE self @@ -9279,6 +9558,7 @@ function DATABASE:_RegisterClients() return self end +--- @param #DATABASE self function DATABASE:_RegisterStatics() local CoalitionsData = { GroupsRed = coalition.getStaticObjects( coalition.side.RED ), GroupsBlue = coalition.getStaticObjects( coalition.side.BLUE ) } @@ -9299,6 +9579,23 @@ function DATABASE:_RegisterStatics() return self end +--- @param #DATABASE self +function DATABASE:_RegisterAirbases() + + local CoalitionsData = { AirbasesRed = coalition.getAirbases( coalition.side.RED ), AirbasesBlue = coalition.getAirbases( coalition.side.BLUE ), AirbasesNeutral = coalition.getAirbases( coalition.side.NEUTRAL ) } + for CoalitionId, CoalitionData in pairs( CoalitionsData ) do + for DCSAirbaseId, DCSAirbase in pairs( CoalitionData ) do + + local DCSAirbaseName = DCSAirbase:getName() + + self:E( { "Register Airbase:", DCSAirbaseName } ) + self:AddAirbase( DCSAirbaseName ) + end + end + + return self +end + --- Events @@ -9337,10 +9634,10 @@ end function DATABASE:_EventOnPlayerEnterUnit( Event ) self:F2( { Event } ) - if Event.IniDCSUnit then - local PlayerName = Event.IniDCSUnit:getPlayerName() - if not self.PLAYERSALIVE[PlayerName] then - self:AddPlayer( Event.IniDCSUnitName, PlayerName ) + if Event.IniUnit then + local PlayerName = Event.IniUnit:GetPlayerName() + if not self.PLAYERS[PlayerName] then + self:AddPlayer( Event.IniUnitName, PlayerName ) end end end @@ -9352,9 +9649,9 @@ end function DATABASE:_EventOnPlayerLeaveUnit( Event ) self:F2( { Event } ) - if Event.IniDCSUnit then - local PlayerName = Event.IniDCSUnit:getPlayerName() - if self.PLAYERSALIVE[PlayerName] then + if Event.IniUnit then + local PlayerName = Event.IniUnit:GetPlayerName() + if self.PLAYERS[PlayerName] then self:DeletePlayer( PlayerName ) end end @@ -9366,7 +9663,7 @@ end -- @param #DATABASE self -- @param #function IteratorFunction The function that will be called when there is an alive player in the database. -- @return #DATABASE self -function DATABASE:ForEach( IteratorFunction, arg, Set ) +function DATABASE:ForEach( IteratorFunction, FinalizeFunction, arg, Set ) self:F2( arg ) local function CoRoutine() @@ -9375,19 +9672,21 @@ function DATABASE:ForEach( IteratorFunction, arg, Set ) self:T2( Object ) IteratorFunction( Object, unpack( arg ) ) Count = Count + 1 - if Count % 10 == 0 then - coroutine.yield( false ) - end +-- if Count % 100 == 0 then +-- coroutine.yield( false ) +-- end end return true end - local co = coroutine.create( CoRoutine ) +-- local co = coroutine.create( CoRoutine ) + local co = CoRoutine local function Schedule() - local status, res = coroutine.resume( co ) - self:T2( { status, res } ) +-- local status, res = coroutine.resume( co ) + local status, res = co() + self:T3( { status, res } ) if status == false then error( res ) @@ -9395,7 +9694,9 @@ function DATABASE:ForEach( IteratorFunction, arg, Set ) if res == false then return true -- resume next time the loop end - + if FinalizeFunction then + FinalizeFunction( unpack( arg ) ) + end return false end @@ -9409,10 +9710,10 @@ end -- @param #DATABASE self -- @param #function IteratorFunction The function that will be called when there is an alive UNIT in the database. The function needs to accept a UNIT parameter. -- @return #DATABASE self -function DATABASE:ForEachUnit( IteratorFunction, ... ) +function DATABASE:ForEachUnit( IteratorFunction, FinalizeFunction, ... ) self:F2( arg ) - self:ForEach( IteratorFunction, arg, self.UNITS ) + self:ForEach( IteratorFunction, FinalizeFunction, arg, self.UNITS ) return self end @@ -9430,7 +9731,7 @@ function DATABASE:ForEachGroup( IteratorFunction, ... ) end ---- Iterate the DATABASE and call an iterator function for each player, providing the player name and optional parameters. +--- Iterate the DATABASE and call an iterator function for each **ALIVE** player, providing the player name and optional parameters. -- @param #DATABASE self -- @param #function IteratorFunction The function that will be called when there is an player in the database. The function needs to accept the player name. -- @return #DATABASE self @@ -9443,14 +9744,14 @@ function DATABASE:ForEachPlayer( IteratorFunction, ... ) end ---- Iterate the DATABASE and call an iterator function for each **alive** player, providing the Unit of the player and optional parameters. +--- Iterate the DATABASE and call an iterator function for each player who has joined the mission, providing the Unit of the player and optional parameters. -- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive player in the database. The function needs to accept a UNIT parameter. +-- @param #function IteratorFunction The function that will be called when there is was a player in the database. The function needs to accept a UNIT parameter. -- @return #DATABASE self -function DATABASE:ForEachPlayerAlive( IteratorFunction, ... ) +function DATABASE:ForEachPlayerJoined( IteratorFunction, ... ) self:F2( arg ) - self:ForEach( IteratorFunction, arg, self.PLAYERSALIVE ) + self:ForEach( IteratorFunction, arg, self.PLAYERSJOINED ) return self end @@ -9467,18 +9768,6 @@ function DATABASE:ForEachClient( IteratorFunction, ... ) return self end ---- Iterate the DATABASE and call an iterator function for each **ALIVE** CLIENT, providing the CLIENT to the function and optional parameters. --- @param #DATABASE self --- @param #function IteratorFunction The function that will be called when there is an alive CLIENT in the database. The function needs to accept a CLIENT parameter. --- @return #DATABASE self -function DATABASE:ForEachClientAlive( IteratorFunction, ... ) - self:F2( arg ) - - self:ForEach( IteratorFunction, arg, self.CLIENTSALIVE ) - - return self -end - function DATABASE:_RegisterTemplates() self:F2() @@ -9559,7 +9848,7 @@ end -- === -- -- 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. @@ -9570,15 +9859,15 @@ end -- --------------------------------------- -- 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"**. --- ------------------------------------------------------------------------------------- +-- 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 @@ -9684,6 +9973,8 @@ end -- * @{#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: @@ -9734,9 +10025,48 @@ end -- -- ==== -- +-- 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. +-- +-- ==== +-- -- @module Set -- @author FlightControl + --- SET_BASE class -- @type SET_BASE -- @extends Base#BASE @@ -9833,6 +10163,32 @@ function SET_BASE:_FilterStart() return self end +--- Iterate the SET_BASE while identifying the nearest object from a @{Point#POINT_VEC2}. +-- @param #SET_BASE self +-- @param Point#POINT_VEC2 PointVec2 A @{Point#POINT_VEC2} object from where to evaluate the closest object in the set. +-- @return Base#BASE The closest object. +function SET_BASE:FindNearestObjectFromPointVec2( PointVec2 ) + self:F2( PointVec2 ) + + local NearestObject = nil + local ClosestDistance = nil + + for ObjectID, ObjectData in pairs( self.Set ) do + if NearestObject == nil then + NearestObject = ObjectData + ClosestDistance = PointVec2:DistanceFromVec2( ObjectData:GetPointVec2() ) + else + local Distance = PointVec2:DistanceFromVec2( ObjectData:GetPointVec2() ) + if Distance < ClosestDistance then + NearestObject = ObjectData + ClosestDistance = Distance + end + end + end + + return NearestObject +end + ----- Private method that registers all alive players in the mission. @@ -9879,7 +10235,7 @@ end -- @param #SET_BASE self -- @param Event#EVENTDATA Event function SET_BASE:_EventOnDeadOrCrash( Event ) - self:F3( { Event } ) + self:F2( { Event } ) if Event.IniDCSUnit then local ObjectName, Object = self:FindInDatabase( Event ) @@ -9944,18 +10300,20 @@ function SET_BASE:ForEach( IteratorFunction, arg, Set, Function, FunctionArgumen IteratorFunction( Object, unpack( arg ) ) end Count = Count + 1 - if Count % self.YieldInterval == 0 then - coroutine.yield( false ) - end +-- if Count % self.YieldInterval == 0 then +-- coroutine.yield( false ) +-- end end return true end - local co = coroutine.create( CoRoutine ) +-- local co = coroutine.create( CoRoutine ) + local co = CoRoutine local function Schedule() - local status, res = coroutine.resume( co ) +-- local status, res = coroutine.resume( co ) + local status, res = co() self:T3( { status, res } ) if status == false then @@ -9974,7 +10332,7 @@ function SET_BASE:ForEach( IteratorFunction, arg, Set, Function, FunctionArgumen end ------ Interate the SET_BASE and call an interator function for each **alive** unit, providing the Unit and optional parameters. +----- Iterate the SET_BASE and call an interator function for each **alive** unit, providing the Unit and optional parameters. ---- @param #SET_BASE self ---- @param #function IteratorFunction The function that will be called when there is an alive unit in the SET_BASE. The function needs to accept a UNIT parameter. ---- @return #SET_BASE self @@ -9986,7 +10344,7 @@ end -- return self --end -- ------ Interate the SET_BASE and call an interator function for each **alive** player, providing the Unit of the player and optional parameters. +----- Iterate the SET_BASE and call an interator function for each **alive** player, providing the Unit of the player and optional parameters. ---- @param #SET_BASE self ---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_BASE. The function needs to accept a UNIT parameter. ---- @return #SET_BASE self @@ -9999,7 +10357,7 @@ end --end -- -- ------ Interate the SET_BASE and call an interator function for each client, providing the Client to the function and optional parameters. +----- Iterate the SET_BASE and call an interator function for each client, providing the Client to the function and optional parameters. ---- @param #SET_BASE self ---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_BASE. The function needs to accept a CLIENT parameter. ---- @return #SET_BASE self @@ -10321,7 +10679,7 @@ function SET_GROUP:ForEachGroupNotInZone( ZoneObject, IteratorFunction, ... ) end ------ Interate the SET_GROUP and call an interator function for each **alive** player, providing the Group of the player and optional parameters. +----- Iterate the SET_GROUP and call an interator function for each **alive** player, providing the Group of the player and optional parameters. ---- @param #SET_GROUP self ---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_GROUP. The function needs to accept a GROUP parameter. ---- @return #SET_GROUP self @@ -10334,7 +10692,7 @@ end --end -- -- ------ Interate the SET_GROUP and call an interator function for each client, providing the Client to the function and optional parameters. +----- Iterate the SET_GROUP and call an interator function for each client, providing the Client to the function and optional parameters. ---- @param #SET_GROUP self ---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_GROUP. The function needs to accept a CLIENT parameter. ---- @return #SET_GROUP self @@ -10444,6 +10802,10 @@ function SET_UNIT:New() -- Inherits from BASE local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.UNITS ) ) + _EVENTDISPATCHER:OnBirth( self._EventOnBirth, self ) + _EVENTDISPATCHER:OnDead( self._EventOnDeadOrCrash, self ) + _EVENTDISPATCHER:OnCrash( self._EventOnDeadOrCrash, self ) + return self end @@ -10452,6 +10814,7 @@ end -- @param #string AddUnit A single UNIT. -- @return #SET_UNIT self function SET_UNIT:AddUnit( AddUnit ) + self:F2( AddUnit:GetName() ) self:Add( AddUnit:GetName(), AddUnit ) @@ -10638,10 +11001,11 @@ end function SET_UNIT:FindInDatabase( Event ) self:F3( { Event } ) + self:E( { Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] } ) return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] end ---- Interate the SET_UNIT and call an interator function for each **alive** UNIT, providing the UNIT and optional parameters. +--- Iterate the SET_UNIT and call an interator function for each **alive** UNIT, providing the UNIT and optional parameters. -- @param #SET_UNIT self -- @param #function IteratorFunction The function that will be called when there is an alive UNIT in the SET_UNIT. The function needs to accept a UNIT parameter. -- @return #SET_UNIT self @@ -10699,7 +11063,7 @@ end ------ Interate the SET_UNIT and call an interator function for each **alive** player, providing the Unit of the player and optional parameters. +----- Iterate the SET_UNIT and call an interator function for each **alive** player, providing the Unit of the player and optional parameters. ---- @param #SET_UNIT self ---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_UNIT. The function needs to accept a UNIT parameter. ---- @return #SET_UNIT self @@ -10712,7 +11076,7 @@ end --end -- -- ------ Interate the SET_UNIT and call an interator function for each client, providing the Client to the function and optional parameters. +----- Iterate the SET_UNIT and call an interator function for each client, providing the Client to the function and optional parameters. ---- @param #SET_UNIT self ---- @param #function IteratorFunction The function that will be called when there is an alive player in the SET_UNIT. The function needs to accept a CLIENT parameter. ---- @return #SET_UNIT self @@ -11014,7 +11378,7 @@ function SET_CLIENT:FindInDatabase( Event ) return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] end ---- Interate the SET_CLIENT and call an interator function for each **alive** CLIENT, providing the CLIENT and optional parameters. +--- Iterate the SET_CLIENT and call an interator function for each **alive** CLIENT, providing the CLIENT and optional parameters. -- @param #SET_CLIENT self -- @param #function IteratorFunction The function that will be called when there is an alive CLIENT in the SET_CLIENT. The function needs to accept a CLIENT parameter. -- @return #SET_CLIENT self @@ -11150,6 +11514,229 @@ function SET_CLIENT:IsIncludeObject( MClient ) return MClientInclude end +--- SET_AIRBASE + +--- SET_AIRBASE class +-- @type SET_AIRBASE +-- @extends Set#SET_BASE +SET_AIRBASE = { + ClassName = "SET_AIRBASE", + Airbases = {}, + Filter = { + Coalitions = nil, + }, + FilterMeta = { + Coalitions = { + red = coalition.side.RED, + blue = coalition.side.BLUE, + neutral = coalition.side.NEUTRAL, + }, + Categories = { + airdrome = Airbase.Category.AIRDROME, + helipad = Airbase.Category.HELIPAD, + ship = Airbase.Category.SHIP, + }, + }, +} + + +--- Creates a new SET_AIRBASE object, building a set of airbases belonging to a coalitions and categories. +-- @param #SET_AIRBASE self +-- @return #SET_AIRBASE self +-- @usage +-- -- Define a new SET_AIRBASE Object. The DatabaseSet will contain a reference to all Airbases. +-- DatabaseSet = SET_AIRBASE:New() +function SET_AIRBASE:New() + -- Inherits from BASE + local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.AIRBASES ) ) + + return self +end + +--- Add AIRBASEs to SET_AIRBASE. +-- @param Set#SET_AIRBASE self +-- @param #string AddAirbaseNames A single name or an array of AIRBASE names. +-- @return self +function SET_AIRBASE:AddAirbasesByName( AddAirbaseNames ) + + local AddAirbaseNamesArray = ( type( AddAirbaseNames ) == "table" ) and AddAirbaseNames or { AddAirbaseNames } + + for AddAirbaseID, AddAirbaseName in pairs( AddAirbaseNamesArray ) do + self:Add( AddAirbaseName, AIRBASE:FindByName( AddAirbaseName ) ) + end + + return self +end + +--- Remove AIRBASEs from SET_AIRBASE. +-- @param Set#SET_AIRBASE self +-- @param Airbase#AIRBASE RemoveAirbaseNames A single name or an array of AIRBASE names. +-- @return self +function SET_AIRBASE:RemoveAirbasesByName( RemoveAirbaseNames ) + + local RemoveAirbaseNamesArray = ( type( RemoveAirbaseNames ) == "table" ) and RemoveAirbaseNames or { RemoveAirbaseNames } + + for RemoveAirbaseID, RemoveAirbaseName in pairs( RemoveAirbaseNamesArray ) do + self:Remove( RemoveAirbaseName.AirbaseName ) + end + + return self +end + + +--- Finds a Airbase based on the Airbase Name. +-- @param #SET_AIRBASE self +-- @param #string AirbaseName +-- @return Airbase#AIRBASE The found Airbase. +function SET_AIRBASE:FindAirbase( AirbaseName ) + + local AirbaseFound = self.Set[AirbaseName] + return AirbaseFound +end + + + +--- Builds a set of airbases of coalitions. +-- Possible current coalitions are red, blue and neutral. +-- @param #SET_AIRBASE self +-- @param #string Coalitions Can take the following values: "red", "blue", "neutral". +-- @return #SET_AIRBASE self +function SET_AIRBASE:FilterCoalitions( Coalitions ) + if not self.Filter.Coalitions then + self.Filter.Coalitions = {} + end + if type( Coalitions ) ~= "table" then + Coalitions = { Coalitions } + end + for CoalitionID, Coalition in pairs( Coalitions ) do + self.Filter.Coalitions[Coalition] = Coalition + end + return self +end + + +--- Builds a set of airbases out of categories. +-- Possible current categories are plane, helicopter, ground, ship. +-- @param #SET_AIRBASE self +-- @param #string Categories Can take the following values: "airdrome", "helipad", "ship". +-- @return #SET_AIRBASE self +function SET_AIRBASE:FilterCategories( Categories ) + if not self.Filter.Categories then + self.Filter.Categories = {} + end + if type( Categories ) ~= "table" then + Categories = { Categories } + end + for CategoryID, Category in pairs( Categories ) do + self.Filter.Categories[Category] = Category + end + return self +end + +--- Starts the filtering. +-- @param #SET_AIRBASE self +-- @return #SET_AIRBASE self +function SET_AIRBASE:FilterStart() + + if _DATABASE then + self:_FilterStart() + end + + return self +end + + +--- Handles the Database to check on an event (birth) that the Object was added in the Database. +-- This is required, because sometimes the _DATABASE birth event gets called later than the SET_BASE birth event! +-- @param #SET_AIRBASE self +-- @param Event#EVENTDATA Event +-- @return #string The name of the AIRBASE +-- @return #table The AIRBASE +function SET_AIRBASE:AddInDatabase( Event ) + self:F3( { Event } ) + + return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] +end + +--- Handles the Database to check on any event that Object exists in the Database. +-- This is required, because sometimes the _DATABASE event gets called later than the SET_BASE event or vise versa! +-- @param #SET_AIRBASE self +-- @param Event#EVENTDATA Event +-- @return #string The name of the AIRBASE +-- @return #table The AIRBASE +function SET_AIRBASE:FindInDatabase( Event ) + self:F3( { Event } ) + + return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] +end + +--- Iterate the SET_AIRBASE and call an interator function for each AIRBASE, providing the AIRBASE and optional parameters. +-- @param #SET_AIRBASE self +-- @param #function IteratorFunction The function that will be called when there is an alive AIRBASE in the SET_AIRBASE. The function needs to accept a AIRBASE parameter. +-- @return #SET_AIRBASE self +function SET_AIRBASE:ForEachAirbase( IteratorFunction, ... ) + self:F2( arg ) + + self:ForEach( IteratorFunction, arg, self.Set ) + + return self +end + +--- Iterate the SET_AIRBASE while identifying the nearest @{Airbase#AIRBASE} from a @{Point#POINT_VEC2}. +-- @param #SET_AIRBASE self +-- @param Point#POINT_VEC2 PointVec2 A @{Point#POINT_VEC2} object from where to evaluate the closest @{Airbase#AIRBASE}. +-- @return Airbase#AIRBASE The closest @{Airbase#AIRBASE}. +function SET_AIRBASE:FindNearestAirbaseFromPointVec2( PointVec2 ) + self:F2( PointVec2 ) + + local NearestAirbase = self:FindNearestObjectFromPointVec2( PointVec2 ) + return NearestAirbase +end + + + +--- +-- @param #SET_AIRBASE self +-- @param Airbase#AIRBASE MAirbase +-- @return #SET_AIRBASE self +function SET_AIRBASE:IsIncludeObject( MAirbase ) + self:F2( MAirbase ) + + local MAirbaseInclude = true + + if MAirbase then + local MAirbaseName = MAirbase:GetName() + + if self.Filter.Coalitions then + local MAirbaseCoalition = false + for CoalitionID, CoalitionName in pairs( self.Filter.Coalitions ) do + local AirbaseCoalitionID = _DATABASE:GetCoalitionFromAirbase( MAirbaseName ) + self:T3( { "Coalition:", AirbaseCoalitionID, self.FilterMeta.Coalitions[CoalitionName], CoalitionName } ) + if self.FilterMeta.Coalitions[CoalitionName] and self.FilterMeta.Coalitions[CoalitionName] == AirbaseCoalitionID then + MAirbaseCoalition = true + end + end + self:T( { "Evaluated Coalition", MAirbaseCoalition } ) + MAirbaseInclude = MAirbaseInclude and MAirbaseCoalition + end + + if self.Filter.Categories then + local MAirbaseCategory = false + for CategoryID, CategoryName in pairs( self.Filter.Categories ) do + local AirbaseCategoryID = _DATABASE:GetCategoryFromAirbase( MAirbaseName ) + self:T3( { "Category:", AirbaseCategoryID, self.FilterMeta.Categories[CategoryName], CategoryName } ) + if self.FilterMeta.Categories[CategoryName] and self.FilterMeta.Categories[CategoryName] == AirbaseCategoryID then + MAirbaseCategory = true + end + end + self:T( { "Evaluated Category", MAirbaseCategory } ) + MAirbaseInclude = MAirbaseInclude and MAirbaseCategory + end + end + + self:T2( MAirbaseInclude ) + return MAirbaseInclude +end --- This module contains the POINT classes. -- -- 1) @{Point#POINT_VEC3} class, extends @{Base#BASE} @@ -11182,6 +11769,9 @@ end -- @extends Base#BASE -- @field #POINT_VEC3.SmokeColor SmokeColor -- @field #POINT_VEC3.FlareColor FlareColor +-- @field #POINT_VEC3.RoutePointAltType RoutePointAltType +-- @field #POINT_VEC3.RoutePointType RoutePointType +-- @field #POINT_VEC3.RoutePointAction RoutePointAction POINT_VEC3 = { ClassName = "POINT_VEC3", SmokeColor = { @@ -11190,14 +11780,24 @@ POINT_VEC3 = { White = trigger.smokeColor.White, Orange = trigger.smokeColor.Orange, Blue = trigger.smokeColor.Blue - }, + }, FlareColor = { Green = trigger.flareColor.Green, Red = trigger.flareColor.Red, White = trigger.flareColor.White, Yellow = trigger.flareColor.Yellow - }, - } + }, + RoutePointAltType = { + BARO = "BARO", + }, + RoutePointType = { + TurningPoint = "Turning Point", + }, + RoutePointAction = { + TurningPoint = "Turning Point", + }, +} + --- SmokeColor -- @type POINT_VEC3.SmokeColor @@ -11207,6 +11807,8 @@ POINT_VEC3 = { -- @field Orange -- @field Blue + + --- FlareColor -- @type POINT_VEC3.FlareColor -- @field Green @@ -11214,6 +11816,26 @@ POINT_VEC3 = { -- @field White -- @field Yellow + + +--- RoutePoint AltTypes +-- @type POINT_VEC3.RoutePointAltType +-- @field BARO "BARO" + + + +--- RoutePoint Types +-- @type POINT_VEC3.RoutePointType +-- @field TurningPoint "Turning Point" + + + +--- RoutePoint Actions +-- @type POINT_VEC3.RoutePointAction +-- @field TurningPoint "Turning Point" + + + -- Constructor. --- Create a new POINT_VEC3 object. @@ -11221,15 +11843,68 @@ POINT_VEC3 = { -- @param DCSTypes#Distance x The x coordinate of the Vec3 point, pointing to the North. -- @param DCSTypes#Distance y The y coordinate of the Vec3 point, pointing Upwards. -- @param DCSTypes#Distance z The z coordinate of the Vec3 point, pointing to the Right. --- @return Point#POINT_VEC3 +-- @return Point#POINT_VEC3 self function POINT_VEC3:New( x, y, z ) local self = BASE:Inherit( self, BASE:New() ) - self:F2( { x, y, z } ) self.PointVec3 = { x = x, y = y, z = z } + self:F2( self.PointVec3 ) return self end + +--- Build an air type route point. +-- @param #POINT_VEC3 self +-- @param #POINT_VEC3.RoutePointAltType AltType The altitude type. +-- @param #POINT_VEC3.RoutePointType Type The route point type. +-- @param #POINT_VEC3.RoutePointAction Action The route point action. +-- @param DCSTypes#Speed Speed Airspeed in km/h. +-- @param #boolean SpeedLocked true means the speed is locked. +-- @return #table The route point. +function POINT_VEC3:RoutePointAir( AltType, Type, Action, Speed, SpeedLocked ) + + local RoutePoint = {} + RoutePoint.x = self.PointVec3.x + RoutePoint.y = self.PointVec3.z + RoutePoint.alt = self.PointVec3.y + RoutePoint.alt_type = AltType + + RoutePoint.type = Type + RoutePoint.action = Action + + RoutePoint.speed = Speed + RoutePoint.speed_locked = true + + RoutePoint.properties = { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + } + +-- ["task"] = +-- { +-- ["id"] = "ComboTask", +-- ["params"] = +-- { +-- ["tasks"] = +-- { +-- }, -- end of ["tasks"] +-- }, -- end of ["params"] +-- }, -- end of ["task"] + + + RoutePoint.task = {} + RoutePoint.task.id = "ComboTask" + RoutePoint.task.params = {} + RoutePoint.task.params.tasks = {} + + + return RoutePoint +end + + --- Smokes the point in a color. -- @param #POINT_VEC3 self -- @param Point#POINT_VEC3.SmokeColor SmokeColor @@ -11316,6 +11991,7 @@ end --- The POINT_VEC2 class -- @type POINT_VEC2 +-- @field DCSTypes#Vec2 PointVec2 -- @extends Point#POINT_VEC3 POINT_VEC2 = { ClassName = "POINT_VEC2", @@ -11336,10 +12012,38 @@ function POINT_VEC2:New( x, y, LandHeightAdd ) local self = BASE:Inherit( self, POINT_VEC3:New( x, LandHeight, y ) ) self:F2( { x, y, LandHeightAdd } ) + + self.PointVec2 = { x = x, y = y } return self end +--- Calculate the distance from a reference @{Point#POINT_VEC2}. +-- @param #POINT_VEC2 self +-- @param #POINT_VEC2 PointVec2Reference The reference @{Point#POINT_VEC2}. +-- @return DCSTypes#Distance The distance from the reference @{Point#POINT_VEC2} in meters. +function POINT_VEC2:DistanceFromPointVec2( PointVec2Reference ) + self:F2( PointVec2Reference ) + + local Distance = ( ( PointVec2Reference.PointVec2.x - self.PointVec2.x ) ^ 2 + ( PointVec2Reference.PointVec2.y - self.PointVec2.y ) ^2 ) ^0.5 + + self:T2( Distance ) + return Distance +end + +--- Calculate the distance from a reference @{DCSTypes#Vec2}. +-- @param #POINT_VEC2 self +-- @param DCSTypes#Vec2 Vec2Reference The reference @{DCSTypes#Vec2}. +-- @return DCSTypes#Distance The distance from the reference @{DCSTypes#Vec2} in meters. +function POINT_VEC2:DistanceFromVec2( Vec2Reference ) + self:F2( Vec2Reference ) + + local Distance = ( ( Vec2Reference.x - self.PointVec2.x ) ^ 2 + ( Vec2Reference.y - self.PointVec2.y ) ^2 ) ^0.5 + + self:T2( Distance ) + return Distance +end + --- The main include file for the MOOSE system. @@ -11353,6 +12057,7 @@ Include.File( "Unit" ) Include.File( "Zone" ) Include.File( "Client" ) Include.File( "Static" ) +Include.File( "Airbase" ) Include.File( "Database" ) Include.File( "Set" ) Include.File( "Point" ) @@ -11378,44 +12083,11 @@ Include.File( "Movement" ) Include.File( "Sead" ) Include.File( "Escort" ) Include.File( "MissileTrainer" ) +Include.File( "PatrolZone" ) Include.File( "AIBalancer" ) Include.File( "AirbasePolice" ) Include.File( "Detection" ) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- The order of the declarations is important here. Don't touch it. --- Declare the event dispatcher based on the EVENT class @@ -17275,7 +17947,7 @@ function SPAWN:SpawnInZone( Zone, ZoneRandomize, SpawnIndex ) local ZonePoint if ZoneRandomize == true then - ZonePoint = Zone:GetRandomPointVec2() + ZonePoint = Zone:GetRandomVec2() else ZonePoint = Zone:GetPointVec2() end @@ -17285,7 +17957,7 @@ function SPAWN:SpawnInZone( Zone, ZoneRandomize, SpawnIndex ) -- Apply SpawnFormation for UnitID = 1, #SpawnTemplate.units do - local ZonePointUnit = Zone:GetRandomPointVec2() + local ZonePointUnit = Zone:GetRandomVec2() SpawnTemplate.units[UnitID].x = ZonePointUnit.x SpawnTemplate.units[UnitID].y = ZonePointUnit.y self:T( 'SpawnTemplate.units['..UnitID..'].x = ' .. SpawnTemplate.units[UnitID].x .. ', SpawnTemplate.units['..UnitID..'].y = ' .. SpawnTemplate.units[UnitID].y ) @@ -19458,10 +20130,12 @@ function ESCORT:_ReportTargetsScheduler() return false end ---- Provides missile training functions. +--- This module contains the MISSILETRAINER class. +-- +-- === -- --- @{#MISSILETRAINER} class --- ======================== +-- 1) @{MissileTrainer#MISSILETRAINER} class, extends @{Base#BASE} +-- =============================================================== -- The @{#MISSILETRAINER} class uses the DCS world messaging system to be alerted of any missiles fired, and when a missile would hit your aircraft, -- the class will destroy the missile within a certain range, to avoid damage to your aircraft. -- It suports the following functionality: @@ -19503,16 +20177,16 @@ end -- * **200 meter**: Destroys the missile when the distance to the aircraft is below or equal to 200 meter. -- -- --- MISSILETRAINER construction methods: --- ==================================== +-- 1.1) MISSILETRAINER construction methods: +-- ----------------------------------------- -- Create a new MISSILETRAINER object with the @{#MISSILETRAINER.New} method: -- -- * @{#MISSILETRAINER.New}: Creates a new MISSILETRAINER object taking the maximum distance to your aircraft to evaluate when a missile needs to be destroyed. -- -- MISSILETRAINER will collect each unit declared in the mission with a skill level "Client" and "Player", and will monitor the missiles shot at those. -- --- MISSILETRAINER initialization methods: --- ====================================== +-- 1.2) MISSILETRAINER initialization methods: +-- ------------------------------------------- -- A MISSILETRAINER object will behave differently based on the usage of initialization methods: -- -- * @{#MISSILETRAINER.InitMessagesOnOff}: Sets by default the display of any message to be ON or OFF. @@ -19526,6 +20200,15 @@ end -- * @{#MISSILETRAINER.InitBearingOnOff}: Sets by default the display of bearing information of missiles ON of OFF. -- * @{#MISSILETRAINER.InitMenusOnOff}: Allows to configure the options through the radio menu. -- +-- === +-- +-- CREDITS +-- ======= +-- **Stuka (Danny)** Who you can search on the Eagle Dynamics Forums. +-- Working together with Danny has resulted in the MISSILETRAINER class. +-- Danny has shared his ideas and together we made a design. +-- Together with the **476 virtual team**, we tested the MISSILETRAINER class, and got much positive feedback! +-- -- @module MissileTrainer -- @author FlightControl @@ -20160,8 +20843,30 @@ end -- -- * @{#AIBALANCER.New}: Creates a new AIBALANCER object. -- +-- 1.2) AIBALANCER returns AI to Airbases: +-- --------------------------------------- +-- You can configure to have the AI to return to: -- +-- * @{#AIBALANCER.ReturnToHomeAirbase}: Returns the AI to the home @{Airbase#AIRBASE}. +-- * @{#AIBALANCER.ReturnToNearestAirbases}: Returns the AI to the nearest friendly @{Airbase#AIRBASE}. +-- +-- 1.3) AIBALANCER allows AI to patrol specific zones: +-- --------------------------------------------------- +-- Use @{AIBalancer#AIBALANCER.SetPatrolZone}() to specify a zone where the AI needs to patrol. +-- +-- -- === +-- +-- CREDITS +-- ======= +-- **Dutch_Baron (James)** Who you can search on the Eagle Dynamics Forums. +-- Working together with James has resulted in the creation of the AIBALANCER class. +-- James has shared his ideas on balancing AI with air units, and together we made a first design which you can use now :-) +-- +-- **SNAFU** +-- Had a couple of mails with the guys to validate, if the same concept in the GCI/CAP script could be reworked within MOOSE. +-- None of the script code has been used however within the new AIBALANCER moose class. +-- -- @module AIBalancer -- @author FlightControl @@ -20169,9 +20874,16 @@ end -- @type AIBALANCER -- @field Set#SET_CLIENT SetClient -- @field Spawn#SPAWN SpawnAI +-- @field #boolean ToNearestAirbase +-- @field Set#SET_AIRBASE ReturnAirbaseSet +-- @field DCSTypes#Distance ReturnTresholdRange +-- @field #boolean ToHomeAirbase +-- @field PatrolZone#PATROLZONE PatrolZone -- @extends Base#BASE AIBALANCER = { ClassName = "AIBALANCER", + PatrolZones = {}, + AIGroups = {}, } --- Creates a new AIBALANCER object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names. @@ -20185,13 +20897,64 @@ function AIBALANCER:New( SetClient, SpawnAI ) local self = BASE:Inherit( self, BASE:New() ) self.SetClient = SetClient - self.SpawnAI = SpawnAI + if type( SpawnAI ) == "table" then + if SpawnAI.ClassName and SpawnAI.ClassName == "SPAWN" then + self.SpawnAI = { SpawnAI } + else + local SpawnObjects = true + for SpawnObjectID, SpawnObject in pairs( SpawnAI ) do + if SpawnObject.ClassName and SpawnObject.ClassName == "SPAWN" then + self:E( SpawnObject.ClassName ) + else + self:E( "other object" ) + SpawnObjects = false + end + end + if SpawnObjects == true then + self.SpawnAI = SpawnAI + else + error( "No SPAWN object given in parameter SpawnAI, either as a single object or as a table of objects!" ) + end + end + end + + self.ToNearestAirbase = false + self.ReturnHomeAirbase = false self.AIMonitorSchedule = SCHEDULER:New( self, self._ClientAliveMonitorScheduler, {}, 1, 10, 0 ) return self end +--- Returns the AI to the nearest friendly @{Airbase#AIRBASE}. +-- @param #AIBALANCER self +-- @param DCSTypes#Distance ReturnTresholdRange If there is an enemy @{Client#CLIENT} within the ReturnTresholdRange given in meters, the AI will not return to the nearest @{Airbase#AIRBASE}. +-- @param Set#SET_AIRBASE ReturnAirbaseSet The SET of @{Set#SET_AIRBASE}s to evaluate where to return to. +function AIBALANCER:ReturnToNearestAirbases( ReturnTresholdRange, ReturnAirbaseSet ) + + self.ToNearestAirbase = true + self.ReturnTresholdRange = ReturnTresholdRange + self.ReturnAirbaseSet = ReturnAirbaseSet +end + +--- Returns the AI to the home @{Airbase#AIRBASE}. +-- @param #AIBALANCER self +-- @param DCSTypes#Distance ReturnTresholdRange If there is an enemy @{Client#CLIENT} within the ReturnTresholdRange given in meters, the AI will not return to the nearest @{Airbase#AIRBASE}. +function AIBALANCER:ReturnToHomeAirbase( ReturnTresholdRange ) + + self.ToHomeAirbase = true + self.ReturnTresholdRange = ReturnTresholdRange +end + +--- Let the AI patrol a @{Zone} with a given Speed range and Altitude range. +-- @param #AIBALANCER self +-- @param PatrolZone#PATROLZONE PatrolZone The @{PatrolZone} where the AI needs to patrol. +-- @return PatrolZone#PATROLZONE self +function AIBALANCER:SetPatrolZone( PatrolZone ) + + self.PatrolZone = PatrolZone +end + --- @param #AIBALANCER self function AIBALANCER:_ClientAliveMonitorScheduler() @@ -20203,13 +20966,100 @@ function AIBALANCER:_ClientAliveMonitorScheduler() if Client:IsAlive() then if ClientAIAliveState == true then Client:SetState( self, 'AIAlive', false ) - local AIGroup = Client:GetState( self, 'AIGroup' ) -- Group#GROUP - AIGroup:Destroy() + + local AIGroup = self.AIGroups[Client.UnitName] -- Group#GROUP + +-- local PatrolZone = Client:GetState( self, "PatrolZone" ) +-- if PatrolZone then +-- PatrolZone = nil +-- Client:ClearState( self, "PatrolZone" ) +-- end + + if self.ToNearestAirbase == false and self.ToHomeAirbase == false then + AIGroup:Destroy() + else + -- We test if there is no other CLIENT within the self.ReturnTresholdRange of the first unit of the AI group. + -- If there is a CLIENT, the AI stays engaged and will not return. + -- If there is no CLIENT within the self.ReturnTresholdRange, then the unit will return to the Airbase return method selected. + + local PlayerInRange = { Value = false } + local RangeZone = ZONE_RADIUS:New( 'RangeZone', AIGroup:GetPointVec2(), self.ReturnTresholdRange ) + + self:E( RangeZone ) + + _DATABASE:ForEachPlayer( + --- @param Unit#UNIT RangeTestUnit + function( RangeTestUnit, RangeZone, AIGroup, PlayerInRange ) + self:E( { PlayerInRange, RangeTestUnit.UnitName, RangeZone.ZoneName } ) + if RangeTestUnit:IsInZone( RangeZone ) == true then + self:E( "in zone" ) + if RangeTestUnit:GetCoalition() ~= AIGroup:GetCoalition() then + self:E( "in range" ) + PlayerInRange.Value = true + end + end + end, + + --- @param Zone#ZONE_RADIUS RangeZone + -- @param Group#GROUP AIGroup + function( RangeZone, AIGroup, PlayerInRange ) + local AIGroupTemplate = AIGroup:GetTemplate() + if PlayerInRange.Value == false then + if self.ToHomeAirbase == true then + local WayPointCount = #AIGroupTemplate.route.points + local SwitchWayPointCommand = AIGroup:CommandSwitchWayPoint( 1, WayPointCount, 1 ) + AIGroup:SetCommand( SwitchWayPointCommand ) + AIGroup:MessageToRed( "Returning to home base ...", 30 ) + else + -- Okay, we need to send this Group back to the nearest base of the Coalition of the AI. + --TODO: i need to rework the POINT_VEC2 thing. + local PointVec2 = POINT_VEC2:New( AIGroup:GetPointVec2().x, AIGroup:GetPointVec2().y ) + local ClosestAirbase = self.ReturnAirbaseSet:FindNearestAirbaseFromPointVec2( PointVec2 ) + self:T( ClosestAirbase.AirbaseName ) + AIGroup:MessageToRed( "Returning to " .. ClosestAirbase:GetName().. " ...", 30 ) + local RTBRoute = AIGroup:RouteReturnToAirbase( ClosestAirbase ) + AIGroupTemplate.route = RTBRoute + AIGroup:Respawn( AIGroupTemplate ) + end + end + end + , RangeZone, AIGroup, PlayerInRange + ) + + end end else if not ClientAIAliveState or ClientAIAliveState == false then Client:SetState( self, 'AIAlive', true ) - Client:SetState( self, 'AIGroup', self.SpawnAI:Spawn() ) + + + -- OK, spawn a new group from the SpawnAI objects provided. + local SpawnAICount = #self.SpawnAI + local SpawnAIIndex = math.random( 1, SpawnAICount ) + local AIGroup = self.SpawnAI[SpawnAIIndex]:Spawn() + AIGroup:E( "spawning new AIGroup" ) + --TODO: need to rework UnitName thing ... + self.AIGroups[Client.UnitName] = AIGroup + + --- Now test if the AIGroup needs to patrol a zone, otherwise let it follow its route... + if self.PatrolZone then + self.PatrolZones[#self.PatrolZones+1] = PATROLZONE:New( + self.PatrolZone.PatrolZone, + self.PatrolZone.PatrolFloorAltitude, + self.PatrolZone.PatrolCeilingAltitude, + self.PatrolZone.PatrolMinSpeed, + self.PatrolPatrolMaxSpeed + ) + + if self.PatrolZone.PatrolManageFuel == true then + self.PatrolZones[#self.PatrolZones]:ManageFuel( self.PatrolZone.PatrolFuelTresholdPercentage, self.PatrolZone.PatrolOutOfFuelOrbitTime ) + end + self.PatrolZones[#self.PatrolZones]:SetGroup( AIGroup ) + + --self.PatrolZones[#self.PatrolZones+1] = PatrolZone + + --Client:SetState( self, "PatrolZone", PatrolZone ) + end end end end @@ -21257,32 +22107,34 @@ function DETECTION_BASE:_DetectionScheduler( SchedulerName ) if self.DetectedUnits then for DetectedUnitName, DetectedUnitData in pairs( self.DetectedUnits ) do local DetectedUnit = DetectedUnitData.DetectedUnit -- Unit#UNIT - self:T( DetectedUnit:GetName() ) - if #self.DetectedUnitSets == 0 then - self:T( { "Adding Unit Set #", 1 } ) - self.DetectedUnitSets[1] = {} - self.DetectedUnitSets[1].Zone = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) - self.DetectedUnitSets[1].Set = SET_UNIT:New() - self.DetectedUnitSets[1].Set:AddUnit( DetectedUnit ) - else - local AddedToSet = false - for DetectedUnitSetID, DetectedUnitSetData in pairs( self.DetectedUnitSets ) do - self:T( "Detected Unit Set #" .. DetectedUnitSetID ) - local DetectedUnitSet = DetectedUnitSetData.Set -- Set#SET_UNIT - local DetectedZone = DetectedUnitSetData.Zone -- Zone#ZONE_UNIT - if DetectedUnit:IsInZone( DetectedZone ) then - self:T( "Adding to Unit Set #" .. DetectedUnitSetID ) - self.DetectedUnitSets[DetectedUnitSetID].Set:AddUnit( DetectedUnit ) - AddedToSet = true + if DetectedUnit and DetectedUnit:IsAlive() then + self:T( DetectedUnit:GetName() ) + if #self.DetectedUnitSets == 0 then + self:T( { "Adding Unit Set #", 1 } ) + self.DetectedUnitSets[1] = {} + self.DetectedUnitSets[1].Zone = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) + self.DetectedUnitSets[1].Set = SET_UNIT:New() + self.DetectedUnitSets[1].Set:AddUnit( DetectedUnit ) + else + local AddedToSet = false + for DetectedUnitSetID, DetectedUnitSetData in pairs( self.DetectedUnitSets ) do + self:T( "Detected Unit Set #" .. DetectedUnitSetID ) + local DetectedUnitSet = DetectedUnitSetData.Set -- Set#SET_UNIT + local DetectedZone = DetectedUnitSetData.Zone -- Zone#ZONE_UNIT + if DetectedUnit:IsInZone( DetectedZone ) then + self:T( "Adding to Unit Set #" .. DetectedUnitSetID ) + self.DetectedUnitSets[DetectedUnitSetID].Set:AddUnit( DetectedUnit ) + AddedToSet = true + end end + if AddedToSet == false then + self:T( "Adding new Unit Set #" .. #self.DetectedUnitSets+1 ) + self.DetectedUnitSets[#self.DetectedUnitSets+1] = {} + self.DetectedUnitSets[#self.DetectedUnitSets].Zone = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) + self.DetectedUnitSets[#self.DetectedUnitSets].Set = SET_UNIT:New() + self.DetectedUnitSets[#self.DetectedUnitSets].Set:AddUnit( DetectedUnit ) + end end - if AddedToSet == false then - self:T( "Adding new Unit Set #" .. #self.DetectedUnitSets+1 ) - self.DetectedUnitSets[#self.DetectedUnitSets+1] = {} - self.DetectedUnitSets[#self.DetectedUnitSets].Zone = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) - self.DetectedUnitSets[#self.DetectedUnitSets].Set = SET_UNIT:New() - self.DetectedUnitSets[#self.DetectedUnitSets].Set:AddUnit( DetectedUnit ) - end end end end diff --git a/Moose Test Missions/Moose_Test_DETECTION/Moose_Test_DETECTION.miz b/Moose Test Missions/Moose_Test_DETECTION/Moose_Test_DETECTION.miz index a60644396c9b789af65473586c26d4a05f1d476a..31bfe81b3cc4ed2823e5301d4dedb9fdf5ddcc85 100644 GIT binary patch delta 140462 zcmV(%K;pmlq6w|539xAv31QhAVB7)#0MM5}DgqvVjab`m(?Ae?&sVI>ODj>yd+`m4 zhcpeS0tJb>@Ia7dB@0-DByv)qLi{_q)!xkP?2t$2WOjDuoHOIho7uKmE$jACycB~! z1F`#jif(pK-`L0Me%Wj%^$%Mq6@A_TqWuH$ERJ>boPs7NXj!*k?E#!2@W=HLo1U5+-c~w3Vy=gG;}>OH&+KSXZ#EZV8r_V`@u<9gH>vhtP9t$S9e7}O z2356vAF8IOwa>~?$(?W(kUE0&5G+UIb$ z9R)*fc;=EbYI4ujXfm0MAyfVz`xlxov{)1suGcACszNIoWmAr_P&iD=UiNThM++?s z8oiMOSAfLRmw-OlzECdU3?^h^p+S+My9Wh18L0_B&kY_`j{`B21zWc?_u-hMp z`2P7uzxi+Cew3AAh}IhqyU403WCFokC{~CB*Vfj=&p{d|<4mNhEVaRK@yGu z)ddFQ{31!kn|^$Lk$00}o+f=DLxq3LqI^3|lXNf2vfw;=m0WKRgR_1VHhV!oi&~1^ z_H~{H-CQI+vA1({tVPUxhsRGTDhD&M2)cw!M}*0+k&Es{Fg%Y$ei3Dn!Sn~gKa=$5 zD9wN_WLvkB;$dCV**NZp0PA#!$3y>od8VYe_j%mU)&$hvC2PSGyW>EN5$u17DDV1~ zN)W0PkGXqkG7uMeK6?55d4C+NjWeL(C+Yd~tN2s={B< Al*yN%&zDjWE@=$>i*x zQ8x#}SYcD|C&{Pr=rl(H#8ai{EaJ2aG^~s(aZluvQKUfP-y33;2&|$}3=w4|jq-6i z6pVt92<#Cu+Wby9^cw z=L83foQiIrqa=m;KgTj1^}(4mG7u+?gMK`XPBVmbN=A|lqg{ACQh0y1vE*m{mJmQ# zQ6U$KUL+8#`k)U|58*WfzVO}$Ql1zlVCsWGG|a)e2SEtVA`xjc>IdCOB>fPTL3#nH z@)UAvmROLLDx0h@OD%F!fS~ALE#qX_H#S6r$TY~tpeQOkNZp@^t0euD3A72q%6^Fy zsQQbh3gon%&No!9ReXPvQbTqusw$0SQs%IsFb$FfoIFu9o{1NT*!bKa7TTsgFiB(1 zfQ`0n*B%&q4yBEwewaZ5;gfmKn6jI{qa6CARQr*7s2hvzBelT*KH0EIB3D-K2 zpGWQE29aY20;L&@vs|1-U~)|4ySqwLXb;f$$6ak&ONz*~ZZv-jHB#1Wvq`#zG&WGy zZKEZi8VgBhNz#vkVWZWuH4n)w2tAbbO8MvDHawEK-oCg+_|Ro_gS;t=+*&3Na8!A; z`*(}S;x-m3+ss;ej0LVP@i6XdS0t`zI2FN=KwJc)Q3Ruc6bE^KoLLm6@+e9}_)hf! z3h*MAae7K!rsIDz*4FBH8~pjGP?Z9^r5zw04?p4WOu#=zZx8X(*pZ=u!D0$j)tN< zvxP$sqi)sz&+fc$8rFcua1-*z_ zuL@G9)_!^3LFttP$_$xEf;a9sUCkpv!H#%dD=m%-pWBoFchbC6V4M z;5fw!VXS`+Nvh{9*8!ErZChDQzlPH}2Kq2q8$cyDe)X@0Cy0WXIye=oE2N~~JlTrQ z)5y_mfWvRAYU%yyi{G}N1Gfu*6f1INVuwK(2gCWqB%$X(w2m0eaA0nFob2z}46+oG!Sl4!Plp= zWf_d1SbrWSxkCq_78!VZy8c7EO)8pAXfV2%L&yK2j>0FD0!lSHqjbTnZfr)Jz1>r^F!_bG2!P^K&3&g1C40K5^j_1)sX`sihf6mg*`BQtrMm z1t_cKM72=2om>*6(v$cCcn#y!IRgJ>&VIy5?}AEs738s`L$L1v1|Cq2xU z0NN;4T9W!h#G=XomVww^2o0&O6oP*%`BfCbIOi&%(gIeq1BejM!_YO1n`dgOv$X{@ zxjZkVzB*VihKP+iCnB?G)XqHAj_FwpA}Aiv&behXMKHrPe$>sp4Gr6*PgOcK{oCqj zeQ_PFyE?jSX=K90Buo}5pDg2>+3O2O@nF=C4wErtLUc%mmUs@K;7ia*IHG^>X^P1> zX9%zjq7{ZwHy%I(p`b4oF^e%r0lNpc?qWzC1 zBv3~~sjNiNhl9gwuUK{lleP2OFOSmT0&ObU_T7ROS zrvK=){sE1x)ML-6Vf&GL~)(oB+#lGC_%DGMO~pbc@tj*e|^_K6hnacTqvNyN2q( zhcN`+CfLJ7LH7cFW$3G)4{r~GfIkezUt95c8jLQa4_`i`Nh*JZjM@lA!3ZaW08&+7 z*(8eFQZY^J6u)1?a)B+hTQpb~^m9*~Xe3+7sx(YLIf2BN-~9r5)~&sls^jOe305g= z6dC8h1NPJ)#!&@I7D1RaL=+xUBtsrWU^OXhz@yhbS_dpmpAX|++zo~}Rz8n&5a1|* zU%&47>m5PXg*kt4p8xSUAV11e ztjTT~LFa!*O_e(l=@qUifJG!Ou9$_?5l}gjH^NPHlX~Y6l@G*XHd8OKA>C$6Ns~6 ztSLxg=~*^-%CWx(VnKGla=7;D&{@lzdc=R&L#`eRN6kK%*0uPWb^<`+z*=>eS052?taplVb( zOvwt%*J`f><*pW)G~Cv!;!EY7vHpv6N%Mv1zi!^THOvUGE1NK}c63G<-z8VrHHd%1 zD1vP$s3^8xnp&DwE4eVCc5&g<{r7TbH#Q1dNkc&u-iFLEF+hqy7xwbUBEoRZVkHzqGF;3_S%G%*~Ek~JYy$Z>xAo;6K3QtBY=hr z4Kn!d7qn3tz{hX5#op%5zIgL~|Mh?I&cQx9c_B8tT{x8hiUhkCIUX!{4&6Mqb?eAL z?9>ZYFruaq9J`3{FvJ^`=4A39nCS_^#Hv1qhh_^GN2pTMNaYqi*a}O&rW>Fy>(RD* zS{_1HYY+Cr+)!_5A`o_^rNAs7_i)1;HAAD8FgaBP2v7A+Cy$OAQ_S@PLMw8_dFJ#H{l?_?=>aFti;0} z@qSn=PE%6WF4!)58V!=msIGtXaoAD^5k5r|PnFl~+-8Q6l|7TE6397QMTaN*bpusl zZRV>WbOJ0t3fg;xIL^|8*|8?qcWVY%ASlqqXY5uYOGXEsQW4@_o7^{FLX zZI3j-oecu^c3egMJ{@s@Ays}sq2A}!T~oQh!|*lsEyP4JcfwB!0cg-dNg;szR7w7f zS*Vp86@acoGy8VRJRE;Y8oxLgP?;*m1j!*hI=kl1A#ntYlOUB9{ExHaAp3+|+5h0Y zV=vBdaN6)le?b}yGKD}5KT>Z}yO>&Y9IHv}JVL&KKk~P=DTL*!-i$#>K>R2Ciw)}4 zWIq_FEQLV@0bk>wf*)T3{%bx$2;M-p1&yV7D8Ne?!J{ggQYC+_!eXUmHioLNGASya zFxefC;*KufXHjq5he2X8h`Z*5B5&Ck;0T@;W~0z|YgMfef4;Gxz4$r`KY-$j2^Ud6 zW>}dBA4dG}t~6AHMTAReoiQBcgi*D5I~supv;(GBBh_tPjeN^wWova>DnJm+vSn%d zrG!bLR(m8whRlCm!U&>X0o{TtrNvUBZP=L#dx4y+&c@p+ItJTNDxlQu6>N6eY_o-u zU=dY89OY~Ngt1|vOU5S6$yfH8h-8;0P}774*lg4&kTVmjesTp(2VrX86Q@H)*ynbd z!a{!oIzb022&%Xh*d0LnA*QQ&lS6V?MR7Qr;IN(^^n!n%Tw-`+?=(2WId(Zg)FnuG zwE%~}q>_6VG;5?TYrQfP1TzN7u(q^YoLrgpGOA_wb5zYO>Vk^^t@ooI6}yxoYE$}k zytX-gcP2wT3Q@zcJ}I5U@=&v^Q8>;fs6o&Y9`?^TcPLD>*`J|jz;DjO1JMm(1MWby$Dymr zqbbPuqGvJ1Ua@k?#v8^7*+C;XH`b=Oo~jx;+}zqZ&^2Emau%eDMmB@StIb16VrYDN zEvK>v&zxSTvdbxF%5D98cqh4-w6YgBY!>ZtzHfiGTh*Nu{VlU#IV!t~Qe!Z5F;}^A z5o+p|-}sP9e}df=R!jjbYT%~?S7H_AdIK2`0Ko`GlDSNC7M}D=9Li~8R^lloY8mG0 zrqU4=@s{#Ew&x-A!cg!3%H@3j&Eq^ukJI_)aUR6uEb4H+n8%?R?{RWSktWRGZZZv0 zE24j;=J5cP8DS`PC>QHA78O@v(F?}63s^EfqtN(`HbE;46J9cC7RZ@ds&sq?B66Il zP}CUIV&b%Jt(a#$Ik9H2N)v7DSP1}IE0onIAyD4gIg)a zybFPD-HX+9Vcdb?5v3zo6mtURqb+|}O6DCEimz-@MgZd!s{MhaVlaDftP6KVE2pB~ zebuoMzhWP=j@v14Q$@?pLXF0(7-Y0w;Ng=w6qWJ1L3O{4RCGBN+3K<`ph}x+l_ID0 z#Laqu#I9Zt;Iz_;fXZYW=lvY@#P&7o^eT0?Q&W8l6F;$Q7yQr@qW;k>L1BOVJ$LX; z2&J7eG#pUoW`PDoqZS@Q(tOhBy)+)7^2u1Zs<|Jx{DO4;f|*HEDb~ z+ah5Z2KGL{7J#4OW)A1%SC<`0&dE4)%W#oit{GCTMtF2i-IPXmz`+KO5xuE=WD|1C zMHH=hF}>pqSf#j&8kF@l@1lQ+csa*0SzEHQ>2eekuQ${8g24+cnnxL5H3LD-?kBbE z-i2kQd?)ny0jpatzVrF;qjB1UjgH97T6uTpRgwtG;v^I#1$IuVW;rjTS;i+7!*D$V z)iiB2K?#%;g|&OxO6!$JG%IvR@Osq|InW&abrk3DkV?CQwwF-1lw^N7RZ}svl9$pl z>bInB{!Qh*#J06VS4{G=Q)HJkmzPSbE+(+FL9LRDTvXJFrd+x`Q%z!wV1;GZ+MbHs zNL43=9;&9h_w=~d?yo3Abq_;H)xChq$5MXKRz4_oh0-DYlBM=WaNHOloi;sHBE|bhg^rN>2 z?{~LwPw;t?faRTybMRc4o`TN;_XUu1PkOB+jG(}vmuPL2CP^;?uSTS-6GG?=pkWX7 zo}r8JxqVBlM?#sli*M4onY-@(V8~eh#3GGY40Os`<3o@v<57RFiwc8&d;1#i3t)Il zYXpRz&{dfIIM3-$v;-uD0aOy>DD2AjeY0ajQpH+$Cr{2bTmGnGKRGuS)PZeBc-HTT zj029&ksWjGu9*=50?1Tg6Z!tZF}6L{mMchipXk^z(z*r@~BOMtvX_x2kN;8>F1S*4|N|SiS z)1sBfPMc=mu6i{aewj|I#V1Y{uAbdpF8_nnjVE|*0tm~etm-ZYnH5j(;TS_+Z~#J& z#@MRLC;9X#J|PaUSzpE3%nY;@$XJ8X#l70Xx=w?Vs5F0gysL@K*!XSiV3sWbR{1n) zmB~;=a1UeKL_pITvIG6me6goWd~@`mC#wZ_ABf({Uhy(yj&x9r!^MHCHqDzxgvqP=t*oU0{GKG4v{x;UQDhW`8+8 z0%(7EI%zky>?+2scbOJCPt#Fn5i!=7!m3Megb;Bb4j- ztS=|*JQ;%*j0jUXIv#f9k6Vh$e+<8yy%9{iz6B%{nWW$WN~aLtCWX3b%X$uJW| zNfh!Lp9~+T@Q0Wf!eDhE1_U+ECW`CtEg~C8*;I*LX08{-mv1%-<<&+tmmW3i?tL{> zu@-gIsikJ#O>pom6$M#Ux&C0Y^{=f7xzdu0V5iB+dTCzHRRq&%`iKjD@QTmpe8_Ra^D6#nlIF?i6$x-6rC~vhMEQL#3&J%7auM2*np+6@xY$m~M9AHuy7h z$!E(6<7lQ7&5`#)@Qo0FP;U?OV>0(?4eOj(j@itQyNvE5=(3RIygK}Eu$+I=yiiB- zaB5ke5}Juqi+Do(E=QOW{cL?jl5TC8G-mvCRIB#!QJReo^X?S@eIddji zIUgLACxfH%OmOrt)4h;t<31DJdOjv zp>_wWtP*E)?M3@_kDf%ZZULdFI>5v058&b@ zfWYiKNujDOJz_e1j8HDT6bpQ-IjHNiHCWcQE`d&PE4o+!ji&3}lHPy4Ag5+g>$8%T z{(3AQ{=Ttq?>}ad%%e-WRIPe` z0MO0c#-2fUdf)9uH2;4ZWsiQ{>H*v6?(Q-zlq0KfzH}G^LLWM!9eM3n8sWRT_5*;V zeYp;w!w8~3$`C0G&SF@Rp7^sGdwFQ~wS2(t?i>%`v7q?-n=`nJGm!4!+X9LiEteeu zB+PaM3%2@KhhMwZyQ62lofIpEFZnx*ZWQH=}t>G5A1(ONanI1k!qlID}8*^ z(~|SUw^7FZIhHT?gVgcshulP@I^a_lYqakf8?M^`ebfT1U*V{y|A{7-bRQF9o=0>g zE5eMI@*l!6vS9#I+(HN6&HSHpeB(YC>!fP`M`>HJ(hKi>1eKVLsw&BDXf|i8hg-77tTntJe%FE`gEWgFoc{$oD|WG))kaoajx?2B zuHstUiUmjKFsl=!(U1*$|Mx<6vGxUj=FI)fQo)^Kp!Xm96iszAWoyRj$2}WYSv5kZq6FPKTBl|hsQm>+Hqhb1jn}vlH^$#UGRtJlP`Z6+AS^%t4#Cs(6150P%10^%*)>NQK@jqX zPr)O86LCH3J38K3OWyR)IYCXtwS{G2RZ)f45@UZHx8#x{2^Yig7MC?OPg~0|?r|l6 z%3{76qB#;)OuIr2sK?rmKNgB=NGSvuCZEX1kBq0~)emK((N?;Xy@MNq4tjJpdT02z z1b|KPI!MnG0(oLLpwC`YifCbPo~QUht)6ot`t>-4j*3pB?QE%UHE_!|#N3TaobX=y zA%lNqj$Es6P8iIcEzi6dgSAQ7N1Y8S6vDhAhuye`Ul92bwj29xYin?!AhxD3tE(b} z6g8wbD?60z&BtfZ@qL*?JjQ|aYuFBj$*j$dbZQ9VLu zRXGV#O=T4^E$cT#G5Ijc;FAgZBOVnP5H)|Cl`PXtBkVzcy9PFuCEz{vjR`R}-wa)L zHXdPKd0rqDfY6m+8K?9RKh^|W8z{4T9)~_X!CM>nEFT%Nt0mW#-83$W0aYKw&=(oF z`li_WD!HLm#e`acjRx(&e#IE9ZVg3xdIP=D=ZvGIC9=k#o&2^zSJdNYJ$i5weKmiU zxGtrb4`oy*(eA=>lKG;BloGC|D;Tso!d4Vh-&t3}o>pO-YwZ58QA(8s)3I{;scZpm zH8QI43C1auy#setx2Z^K#gC|>9#b_{SJI1;TPCS1kPRv2CgY~@k?1d-OfOeq#8^p3 ze}ZlaV&D?NeVxZ$@V@1Ju4OLf3g&-hI9vp2hzty6fLhBjv-+5Q_!1(SAYIBiyRY#C z{vpI$^gDBV9f?vh3X}f$`W+!EJ06ziwp|bAUAXfR^mEt#N64S0T^IL3hCod}B=pat z@Nq_*2Xl3H)2Wy>EYug-8Dx)S0MyXSFXoXQ%Ps4f8vLWH!N*X0H62t@{pNpRMn9!8 zE#~{{yDC%R%TcuZtAf&U4MgV!qNwk4!)k|W@k_Z7098y4oYB9$BbZj)5dKwM zq!ryH!{f)Qp}4^|g$4Xl$q^HAr8N;fWkLp78IMVyI_a*l99p*F^suZ%^Z5uJ{Z^IC z2vn^L1(lt;CD?scu7nuQ1b`(T;^J~#H7~24%-Q-HHi8@%4}c5d2Ec#A1q0whl(@__ zM$iNNSoe+1uF;ncY5Y6}eJZ~IMM%SiO)D{{>`E4I5lf4!sSw85ImIHSF4oMqdrX|)yYwlIyOW<0+&oAz98RlIcEgdE&5JoQB5Ce^6Q4Vbh+<35vD zj`?`)*2EeRRpStb6Ni7Gd+xAPs*z1!gojfXM>=>1-~d+^&mwH@xJC~|e#tY0vI1S5 z5#SyKP`A9PMQg>q%zH*p%*fdHF5#4wocpwE=3Xn2H{x(bEvPM)VqtADhx^yo0{WuH zy}Y_s96P32n;wQKtyJ?`Kq&!{yA0qI#V=)GwxE%f1r@Tgr1gK4huh02#Lo8>mGZ!| z(6~2$*1{9dqD~gp3X)*e7@9^q_+bQYNfBNlr?gYjkDiy+O~)21OI9q%9m|o`7ou2( z#U?U$u>WoFL=j)#Snm@MNj8Le!&#Nl6hIF7h{#UJ#N4kj5J;L=xyRHQ?0(Z_#$)J3 zh6q5~&06o{8+w20XX|RdYrjNnYL0%xM!j!WUsttg!eoTjN2hke2v1+<`2Bwlvt=MS zp1M}Z^fiNw_A{pPK2Y-^d)kSHOt4sx4Q^dJr&$0W-cIDfNeU3qb|Uyf2J9iCc?K+( zbuVz=6bnKGfdZVrvmyMvFNKPSqp@{M$vGlz2vZWv<0*fj`=ty02_z7KyILDjw_-{7 zbZhf?^VR0jwtpNAV9Ofb4M9rDPE4+kK0lkgCgC4{S|vCgVl$zq(6MY7%d7K(KBV?( zsBe95q^UBSlaCffb11Q8K1{2als+K?u0wfeh2!%*I}`OC3F{*bDuoD8J}wLbPvg+z zr$TXxbY*`@ROaODpY(-TR)>Bq5HW;xc9Po7PF)v%Jh%&cig7Gfq|c-6i+EI%g!gkq zHEEa8Mch@L;tE|2+9xGt5q~`iLhYAwk8;NHNjbUJnp6{tZlO9xu2 zw6K3TZ)5-iFUI|4z}r~&wndi?ArIg>54ERQk-&>xu~^h=_zp+*p4AdyN23Igp9-!+ zEq_|NmTJ(~rNZYKXs7n4r!}B9L!5>w#MgF=90pXE34Piq2u&UZsn6mFHA5h&v6%{t zdo&7|ZDNR_sL;!t3S{Fy(ai;SS8Hm3TAzQ_eo;eLrlwNLx%8Ko>~u8LnO+K=e-WlT zS%SeEePY=V1)BHbK$+BI>N!X@Bih&LeXEJm`jDQl8X504!eAPA7~(L2TMn*t<^{)l ziwyUGE|Z-%2(27|>iI+Q!?y5s+BE6Y+@b2|6#g?Oeg-3j`1!{E>~|R|Kk}xI_waw) zJ%3zv#TLO#fkff^<4&Sx;y{aHQomV?eu9jPc?+zHD-OmmnSSm(ioW!c;3y4IyfT;#_W>V``(T35k z)l)3M7R*Q!9L}TX)NtcqDDbsWq|9d<@7|y6KgNHz1*tQK*=%thPNE(Z@B=RX)0hCu%6v|q@L#3R#*Cp(vr(O`T+a}{--Xws zD2-t_HI15Dq#2xBhCICTkxcw_5*+VkXv-N?Aqdq$78@dg4=JAA4L5(O9^j&EOu>(g z4*2sLRKHwFDxb=E)J@}2-tZV^^3Xee5qvPfwy+^9he(^5*$w2Af8=kdB56Jqh9YN< zx)9FCa}&fdU-h@!$?OmKo4Ts_E;6-e{q=rr?&VJomj;`~Pv(~_sWbpBVb~^K9txH| zZOm^auo{@qUj=l!J1T!&-Pexc-wewxeW7^9%E3>(Pv>nEpI_v#)dN2|jsR!T$KIxl z30m2RDZgHAvVyJ{*lgK|dZUi|It&B#_CyCT6~JxPf~(;X z-=xWOnde?K9D`@PD1Z>9UD%m}X`6WtJuWD&|1;cj01aF(30c-R00Mk?sw&H>u`$Yw zI2F@IYq7~>0C#_kZKfZkoXb$aoUe6iQ^O0)j2IOxSKl8AL=Y0=NxS`mq;=W)S(G1) zcrn&Z@xQ_D|v8@mqL1 zu3}ln^0$B9+}buG#J!S|{_U)&7lj;+vkUA&ngtO*bFY8KHBVZG-q7j^^EV1ILW7p_zw@_)%EyYV1a*E!zY7=Lftl+O+3MBCIy zxdC~P@5?w&pk*}+cX~8_1-thep0RLf^RiI1Fw$lBVVex3d*VeKt`Pxx%o;t7Ys(;9 zO}qL4UzmS0Evk4Han(iqs_p0qqKYWQi<)MH=>ieB5!K}GERwtP|JVezejla;JFri8Szl{)zbA(LsMZ-i1vj>aW7q0dspvK@1Z_yZ@vR>@%CVM>#_JK zm(fdY-$Gin)=P+B*QhZvMh}ciHRNExV-9QWL(8ZM=^cap!_C**r^oR7&jKdy9vEXX z0)~H~38RGLG>|VpwA+A%|Fz~D`mb+g=sR#C4CUhuomWAO^M8GwEFJ=lF&S=lYimD- zVDmw*H{aeR;x~)Gv&Fyq>$}aPqtng(t<&wJ*PHLQ7crpU-pYWm($=8XZfzcKlYThg zHW2HZVSF9K`2JRg0X0VbCidxfaUX}rujYT72OzC3P?8^RRgyz_v1TIvoCeu234`?3 zrP+#rV={>rFnNu-NXdS4tCDFJRG#%E%R>!svmaj;+FZFf2D8|Pk3oXDZP?ASjR$Qq zH58O5rwlbcj&+bt`pY;Ypjr2Uzg5RJY;Ml696O=9mUpr(*woQ1p0cSK4Z^DWWgLH9 zvD%we`YWSZdK}0ozVUT@<)&UOXzP@+>dfA9Iwa)gHM`G>)+hH!qngdKOM_gil2b7L zOYxJU4t$G7MQhq<7?4PK~551g_gBP z7H-Rs#q35!3xB))m{;%2CL73!uUH<*OuwePr>A#z9xp_q1&>F|1bSnQ0|Vfh}0SwMN#FF>4w7x7Wzt4lK)@*{umjjj&4 z$A($#RD>_Dac|>C8Yvig9>oTlAZ3X1ggoa>kr%{Lf#Z3ZpPy!BR&~|I_J)^!v84|dMUJ(U z@AbfVcX^276l+lm%7ZWM1XF4$EWILq z>BsE4!lZSU;pNWgZx=ALPCxo$VBC9N6lHcey+~<~R#%O(2`TXDEW5~mrMq?$TX>xQ zT06O$mb-O&!RRUJ!jy?w_7|bQha1FjRd}Q>iUD-T*{>LYK~I1E8ECn<>f#QJM&iJG zsfdky_;I_jo-%@F){Na;&*)CWhM!crH+y3%4glZoq6%t{isG6VSGYRep2nsaKnXw+ zJthHud7e))$%2>e3xoz1XT;-s-H*gV$ukLVd((2rv&U3Tx_tb-+JNloeW5y+Sgb;4 zXCxIu*%jBhXq|3pipgf7yAg8ko(QW$!n; zyfcY$NdC)ebi|t3$!EPK9h;E1)P@wOp)o@v;wcv$F|qf$6Tfp8S}&>_~U3#WSv_r#4x2e&2t$mxopqN6XW8# zRtar3W+K6ie^}A$EhEP7S|0cOT`wUan^aPhva!Ku$94%LZLHAyIaF8aZ{cNftfFxK zN_vq;j8cEZ#Sns zLmRbB*5Vb*YJKO8Ccl&(6+XQjB1BfR? zq}P9Wzsxu;D6<-C;}~MeQTJsoQE>TgA}r7gDE6mJGGG%znl-A_gs^&&R_6T!{4`lc z07v^}hZ$aLn~lZGbzwAM20z?$lxQG%sPT}HvhgqT~&SRmCfz3)L{Z_ zdkdJ*7hg*{yab96r>LE6*^R^|Bz9nK=~;h)Q4;63)QTSyNLR=FeRUN4p!9d*cMqQU z0nOc&>peO1VXK&tn@4~<*vbE-^QzE2;=ZKVgV^8h;y(U|kGa6Uc27cg_sKO{3_lYb zp06u<9KkeV?|C}C%*My*bdGo4ugM1ZaWPYlAiSu54GjFIaLidVQPhv8kVmyo=4XF3 zJh8bj-w7#HUh19Erbw@%{C>;LoB-1+D7K(xtpsVrh7B3YXk7cTp$ea(8nx^|; zhfrV_zvw_#dkiwaG+6xd0D)59No9W-Q0-#!dikv`e0|{qjcHWatU5HGEk9WCZMdNGcu4_iGKGhi*#JF*p zP3aXYT4A|pG~>DP0YMv`xK|3z{s+YPoE9Rqy89W-hqs=QWL;KTtT#BGrMsH4jt9fx z?#F}oKF@xMVRkg>j_SQPD%^i-d=uA@*h?5Zb)G1h|}7Pi6>Uq8?qYB#KjlKw$H$;wFi7xQf1 z1ixpd{bNhDFY~g(ly^8CpJo>c{zV-6GRotz&{vuu^PVPSbiuzs2}_ZXr^Vu*ZO}+U zM$bu=_r3jc@}}@SM05!`>YREMSCn(h|xuRJl2R-2H?5VsRg+90vqvT zmHu&=<@xh$JfCEyuFL*2)WtL0CwH6BX>v2{cgVckL&a_;@c)8G6=qyKg_O+qL;B6r z(pUzM5g-V-_|kRn9=%3~lrM4^R8PzE?lP|knb4fPD?1$jY6O3j7oFNNdwEE}g5Pu4 z0uGt3vBYh0izF@6GFeJ3k5u`$k-%4ack@AM`=$M+u zr|P;-P@!}RvEZFAi4zMkmb(ePG6nX{9x8<){#0@|_axLM-kD!uNmEkij}tJG#NwJb zd)z1I_P)x6RYZScFP+lS;a!Gy$zFG>S9ew)e_=yUK2z9-hIF8**0j4)2L*#p0`a}L+yM)gTpa{Up721BF?k3)fJ zSQyC}Uk?>#tPpK>UM(+CabNjc3sYEO+3ENvXru+IRVIHG6Ml1R=ocqSs3Ri5D9BU1 zEpXh!omJ#A@Ho!hFF;L}3BZ)YNjTSkAEQS@tJ<_j?}8(k4T5jcOHhWoyOS!(-fbwj zUJ)dHXCATob|v~O!Qf=Z`A-X+zP`SoKHRrMcI{fJ?MtW<6^~#$tiydkkuKGiA={39 zqaB7BBp83q{A!1*50xf4Bg-4Tf- zdp&$D9H)%WE|fvB^kL#-7Zb{itG=Grm)$t=X0053nTu_3r)FT*XMebyFYJ;2-MSW` zAIrmJ4)%x(!-c}WxQ-wdFn}+27{4qAc@ly(U#5R6l18z-B7(aNk1+6J(;yn_=2{J(A(>M_iV|qq{Q# zGj&rCmT?#+Y9+nQTxhtE{ zy)b`y4*Pv$vRrS5c;aC3@l$(Je*8FzMVEw^kM|aj5@O29*XSWW^eMh)qEtskigz3R zyw%@g8}hEb5#9xQRiL!At~kx7d|3$IyQ|J8X<7CWQqezKJ@w)5FJsj$*HP(C{R5>) zIg`Nl&e3vyoy~L++A^I?u$)V>QjN0Af-c?5&Z`nv>_UmzU9GZTv-3Go zX3kQMMp(!7OIm_<=@Vlepvg{yeF##yAS)YFw zRrVhIJG-LgJvYT%{et&+(u~i%%xYEvE}(&u;L=$JvQ-(aK}I;%ncHbe^5T^)w&jj5 zI7E-=I^7jBs@aHrsAhM1qoo*wa-o61s<5Mcw0Ak1QvJuRq>t9 zjc9nY0!GpnuICU%mH~bhy5M?NT+YB+rp0N*rHTtEKF?-INIPKPIEK64wag?Bw7v21 zY>fALXX*KKw!i6h(+X?RHAqct!4kUR`SXOqnVmYHWof02X)Mb`xQJVvPT7CDuFF^z zdQHx&(lt(MA02K~$E3<-I-h0K-e)O zaQhxf#I1S;^U~9)4h1QSXu}CL>k{-b<%NP7sJ84we^3Vsoeg^6IjJxOZ5EUH)l|Ll zhS_AV;{-*Cejvlh$Y2jS0@#22+(_@_K>j4$HG8f4nQyX3HO!<~YII+z21Y9Gd*>N3 zy_Zl^HCRz9wJUkUc#%$iNpDK^Om~NI&BL~xhfT7dvkALb8{Yzt5{PmXQp$jrSpWzm z?ATQm;DALAJ#s$z(f3cNL8&jZX*NrBmz@+<=?y#F7ST;fCkNz#04_k$za!&+;d~i- zIv(e~%BPjJDqn=Thp&rUA`{g-w z#h(GnyC`^?5dhz+*D0VDMw^ZstejTjNh(X>etoDjY|K@-Af1CqGermPnC*JzVkn-$ z_<>yLWD3Wh>Bmo5bA)by6V6=bq-$+GRnf$M+9o|O_=ykI zaa&*r=0g5?k!O=J*W*(Rp-k~haUpHzV3`j=!XIAC-w5tV?@q@69;L7N8oz8xF_!z! zBI+nUU%#gueJJQ)1#eF9v_ZcI5SA*|DE_9?G3^`uTVG*xP#HQ-ptXaO)8kz{(O0w& z_h;^63!qaPRFKgEYe5lzkYvQa9i^H2jGuwO`5AW~N^|=hRu$LyKkEP$0#439vT^Mp z%so`}%>#gYoS^Pf^1vn@2q*)04|~)AT*~ttT#U^jj*w-W zhq>r;>W6cDH$Y#_q+C8`zbij!c+phZA5OXS-CGP#KcI2{nsl zz7S0RD?KQw9mj@1930E(B*gg$cJg9e*l3!=`r)$5FQJ>LoLg>gXGNEsWth?vbT;ny z`)a?KKCTqH-;b()Ec$MO%SjC~i$*qI|H}0}RO=o+=1`dbg^I0Hxhe6iO2vBAGOMnj ztim#_I}5~9G^DE^e#m)~3xPnX7emcgUZcYBVXdi=K`z`72**Fe(E#t_#y<(4D4#Nk zCd}iGY!bl$rwPnZ$<|^=(ZjYFhZ}pXE8U}c7N*TV7?mD>WDV^Yp{LA;G0iWB>e0*n z#G)UD3G`G1({Kp#v&ZYMX3ObzwoRo6PIfQg!9D&e?&#j z`51(!2T4q>_s2C^!Y_CGG|$d8(i`6!fx~Idnb=OiEQCj=r>ws*rS=X7ShF0G8aDiD z?nb4JPR9a&!x=Z{&pqPd;AKS^N8G8wk+QMx5jD$RhKA!X>lVW~wc2r*R2#Jrw5>_+ zPVHPL^!{f3SkzZ-#&f-EWVE6{QvJ{*86tTs z&^#g`bg@DLuI-wv)W9aOMO3$8qwd zt#@sl38FogFH^p)=wHz~BO6zlWsS=_@a}j_7+pq8B)%Qf-#gF%Sfb1NR8XG1?EQFc zi&tPQ0QsK(0vP>W4(YAm6u*~a4tUSEdlYO=1H|KYMgro-8oD@s*20g7-^+uq2A_}W zDyAxb^byZXejv#G!{O82(cUM6Q!9%9@WSFdiLB$4#&cQ>4U3G=3|M7d-_*V?wZ)Mm z6&&tsC-Gi1df@gIBmL|TDIp~QTPTggkM(w(_DJs(Xw%#bq3;#rtTd0gA_{gD(e1ho663 zuh<{#29%#39-YK%&}cuvH9?~j&$2YNZ$ z{dREr1AK*lzx@1g)Btca*!^m-000_$d<;LSR{F@v2--^GHP*&dc)a@!7TrQAcDiD! zho;|QQ`SyhU1!_h@BDt&Dd*2%vA}tM*7<(t%>=eo=U4c36Tartyvoz6m~{v+AO8Sf zw%&T@oj2ZiXEV74h-*f4wQp|1=MAjH5(Gz@u!g{_Foz<%3iV)P>&?9nPj`=>ZtUhW zHPkc0$Hkmqf#UtF8*oJ{5W1!CVTQcl@s~OEBZFBu9oZ-@CAzZ8`BXgkV~T8lTc8|e zG39(DL#>dSRVy=Ul59W9VQ!ep4csqurw2fNO<$;#r}6ZhfqP9$$lS6P4<|N*!DcZQ ze&a<4_@%7ioiGSr4BpaGYIL%Hg2yJ{dX*}xKghTv5mfx+rtz;Ju(Aq&dF7M8aH8MW zlloS*=jk<)Epa-Zu}b&4d4;qu_V~s0>UK0rph`W*}qWA^TLeMkY1jM3$ABe$WWg9Ia5yCdJ zDU@<^4=wp=Eh`nwdo}8L4GM0jT&B;>p+ z1#Pv{4^JZ4=D7i!7x9!CHA!m#UcdycFOVmyvLt zRnfeJ&}|p|_$%ap{8>{*0&sd;eIeI_N}gDsKsQz6?AiQMmDs#1{VMG`o8g3gHpUm+ zxXKfmn^K(OeTgW4jr5L-q9l3~S}{(9c(rAsx+yj-qg8pm#H>g{;PRIo=L^Ru1ukhD zXBX*wqLasAVL*9t@UzT=pQI~l?(TgJsR#Wm`usU1_-44DJRUqC%83h?)-@>cB(iI%@m)>$&LSRn>~LXV-` zpETvJ-W5O<3s6CV5LaIf(X01WCw13r0Y?G35Xt?hPx1R}4wvVZFY9$UM+hDjhibYE z;7h^~M}<%w=0Tf|B-+sLy43<2hQxFnnx4^kI|ui%7P{p8m7{-D zNmSEi0OtZ+t|R*Qb{1WQ3)&pW@3%2eVM)nT43i~)O~Vzm`9*%Nm4nZ>cWiE0!7?{1 zg6p+95)H0;E#^DmjiEd@X0Kh92}8MHFl4h)XpI-uQU79!sMl3EP- zwI^a40cUh!XNw2k-Pz^*ik>KU)yowP&h&_LqiA(r(3^ia=sKK4?c?Zs2#;{)oFXLZ z6(7uhiYqEpF7@mB-F`>McjVd?{w`k%e-8km?gJq69OR{sfsAS=E;c@0HPjR{&NFap zB|orkC#o}@V2p5_WV4x#`)zs1;wA=9fPtg$bMao2c8qa443J+04d7$`T#ry5ejFI# zth*~^DTh`oX7{$3={80v*LhuokMe2eY`2Mjl}(L3=f4xc5QLN@vJjDQSOcLPXtE|D zs4nChbA~1S?8HcY9bD&?x5i!gzxVnpTjhJNY;TsYY`!_}zfyKzDSI82_{~f#cW|YH z&f=AGiFJ#lzOD;WU?eomW_dcvf6Kf8pnCY9=P>lAO~^XdnQ>YLyCSf_g7apA7ZAvQ z{5a-nR!QS|(&%9!UTq(Tbupf+n^c!2? zO-%!R>rvjwbcX?c*;LD5=^%ffsTM8w(i5$Qu-jn&%cH@mxAw`MYGu#tdfCF=GGL<5 zRx16&hHiP6|6M+2YtuBE_|%w)`BY=B852BYM}_m`KhtB5OY>Z}qx)60B-bi8z zN6%fbwY)5zMU8v29D6KCFaYtOLyOD(<%C1)YY^yoIMfRb3If3Pu#eFK0rcX&I>fcN zKc^FXz`VfaBm9!7_&FcrDvQ)9zznU7Ne%=d4&2I+pJf*?v<92@Oow*z9@rAQoyP$2 z{#A+)*_hXbq%5-rEY2Z+*q8kXs@njYoxy|q78{NGp{5r=s}pnNO=^mG zNeg#A9pcgw1;ItcPMy>Qhh+{I5J;(F{=aiOwi5n}X#p;mz3s;qB2a%EX5d%j()t9C z9O+dtpRyQK&$3#>{*v<9YZ>@Y=6k3yfpo zNIUTsHQ1!MZflZ;_PS6mH+6@B!rH@D&=C{$c#(u|oh08#1M@fOL6N`_zqC#?pN*jfF2EL7BpY%z;Yis1nYL}fEg@w2OFys&J z`X4HY-2W5y3@GbwZmGqZCY!!k9T(Rts5shpS@Tk5PSdOl-oxw^7r^%xsUK6sMS4=e z9InLVc^I01b$XVb|H$K(SbNTxBBZ!Q@N*i9%K4;XBgRedEGcoIb-!L?KGb!s>}kFY zI*U6Op80$Y;R~$)p=Gx;b8S+tLms1UyZL1qwWKC_QVZM3g6Nhsjwre&nnmOn znkD6$UDdTZqaH`^Xl)_Fn6H26zE28p{viXfCOR#Dsz3yy8Ok<}X;x|m0_DNJh+LHZ@1sKq0BABnmyzT%*wRMUv!X8M`< z%HvgkGhrqh-RaZ(pPW>peYRpglU_YsT;%6D*rhgwiPI0HsQJnFRl@jT~wm?nKBO;ovAQ7bwxF?GeiBeRS9VCWPdRH z|EQ7wj~aQHqeg6RV5e^G4g0&JUB5@L1Tz#vUUWN4LvbAgwh$YcW$6ks19TgiHCS8%mRS}z$;=0u zge7q}*OtIT$_5v4;W6@(z?sNBv@j0MRNZf4%l=^gt&hzLpTi>J5h`8}-!%sj$R{O# zTd#KffPSWdzn5EO9k^WPg8HfW?PjT}h^pgK-+=@+1&YGnKce!y`UE5c_gc5%VwnZ(6t+8Mo zEkzTic1I6S)yZ@}OUHf+l+E-WvrFuM!!69rZ&{36U0qLrbc>S_sXI5nI6|d}mqy0@ zDD(2CZkQ|{5P>A+Ny_phN%vyS5zou$`!3Xs5I5qIfiD`AVrKNvm1;?(3KA!JQs*b* zizL&ZdRy1c`6L*mT^A77NY~L(gM3m6d0m|~hbNB^@oSb{_2LfM=I~8$L6Z=Fd}Ay! z9cR~o3E$1B&nU1$XgzxO+qmV6c02nHd94npd+!SF_Ax3mKkqjCmLXby8Dq2Y=7AL8Q%QCThr%v$AtSzSyXUt7Snb?-(3cX51w*rsFc?lo>xj{fq;rzc-N zWdW$*FLnI&xcd^{W>wu~P;Na2Bgp+me@ft-sOTol{eELA%{H*U61{}%5K3m>Iw$#wlpLCFa;}&p^b+%uGvnlOwllE@#%+n9E8=dd}?F+=zuYQ?*D_#dxx>9 z#gODY;a+3lJ$%ED>3I6&|1rIlPoS#)Au*jrWw%2>&m6Pqxe}j?(Fi8{gMDx}&6PoNI#xPya`ZR=%-nH-5-q0apD# zOuPVB7^OdEaOA~ZI`Cf~DYUR_dlb-1CjXBXEnQ^QuKbVz!`SwJ|Cq6MhZsyR@eq#Z z^J>5NWqOw${nv*MDf1fBjoQNB|6|E&uCr=qf5?zhGxa*XhZmLq?>uds2RBZAd3^_~ z{vCXW4ZRN6!EGTcILyDz8HUe`YK7^~HBEk^(${M|u0egav*UlUgitg`B~bHg^Rq1K-w;^TGAM{zkF- zZ%09%L@|h5vpWdy%H2z=?6R2MbbD&Y+??4rg?(zhBdauj1-Hpo?bL}%NN+DJfl6!? zfaC z3z>xFp*qMp?H3^rZ?1N%!a5XF6x_j6jP!0pu-XwcBY@6TTv_NUjT}e?aa^j3qBi1j zaSWr`VM1wtVk{e7h7IAsoYT0{rB2hxC@hzXv5wQihj>F@Bs6@@6+1p$6oh3GMJNtl z7cWKH*zjSTdSl4sScJ+_`|>sxqnwl+oDSutDv*SpC5L!Sp=6F6WaJ>0^=wjaIZhUma)DxhikU zD!W3*OrdoZLcn<+Uve8VdB6=}c&9Qjq&%^i3mZ>e#>(iaHCRDMg%FdcY4x0s0SY4I8b+}h|8x)8albb5=rXFe7HXdygQqv)5{Ex)YfPCmiCbRz32I4-0E}) zKq271Y>0B@t~KVXtqa;E3jj`MkOrkwZOuKs9jv0G!L>XWm<23M@2mXU-A4tFixPuqq7)slN4je6iZGagVhH(@3YDnW?Id>GM{C4(3UmMAZ z-G+mMGC*T#wOZ}2Rx4>GRaaNgeGr9JVkF=D)lxV1RhnPmTUUJZ`l7C$!omhW zJ%jhwms2Q4PyJ7;LX$7SIIt#amCmnh)0*ey1ZZ2*`fF(~-^s;eHmv!Yia)|IIU;qjJq7Zf8xxQ&L#3%J6Hgd>|{Ycb~G7(0;73F zi(6Qt50Z|3iPo$3Nl3elm&oB1YLfX0d;QEK=HMu?^ljCc%Qf(W2uK&9?j3YUDzl(Z zhL$T+LBm(C%MG%8-(;$@Z5kYq^m==v)U6B-Hs_A^<`rJa0xx=V0zfv_J1W#fFF z=^q^kFuYhoVlS{3d29%cO?kXjlY|6Xa^A2}s?nQPvc=gx<~eTfoYw!7xtg;Iy+S6KMSWZ%l5 zGaW{NI=lsaAo&$u;)Q8P2P`v|Y8iOF`WN$}0}n7U;@nGS9f8oa)uU3a zW=f7JK^wM$jfQ*C#_d^ux=50WlQ#EgrYXMFxy3R4$t(@T4r&b3#Zk4eX@@n2Yj<4h zd|Fm&!km1e9&8WKb)(BlV98~iJ-4XIvz}5%`@iJ7|59A@>tlu1@@|>rlEU8HKA+{t zb`?oCngtk(B(gd&NH^EI-$Kak7L+#n;kTRjZ^I3L+1=`wYJ}*2;aT0)f9|2y|5Z<0 zscycu`Q5+nyRWM%)y*xpE$Ouaiv@Zuz{0{66C(2VWOl2gC&7|Fo&;%k?T-#$i0&zJ+dH&bHFw!IHrj6^`e-R@MtCh(&|h}Ly<&* z(Zdc4KX}Hb(twypFlR;Wpq}LO{3+ADqZ@DucEB5dl$b}3{5Re>dUA4nI^Ki5MRoku zp@I|7-+XzXzJiGSQ+2lY)!z8%`$H_Pt>}(F#U~~eJj{4_did4;;n{0ya0QnOdFdK1 zfnr<~bph?xs2s!58*jLJ-yOX>WMBtHW6)(aWq<0e(bXpY<+7`)0fl@zXE>q}r zy_}uKGaSCES!RI*aP%&X_XUvl1rhG9FX6+5OGJIU@kk}RE^fwct|V}yAZ<*aBGxf3J%sbDjz=Rm*nSfx0BU6zwyX4eP{iL>HaKDVs5 zeI>Mkpm=OjN2nqR(isN6<};pPiK5h7^JjTEL;sq8)%dcQE!1_j1g_(R1E(`oMvs&TR3!vf5pu0F~Go*<*nh1pZQW>}k0dPjpdq<}kWrM$e#Glj) zIK{B(5Qc%M?bulX8<_Z6IU$yVij-J!a0Z&?}n z_4vu20y4z%da$SfBQRuWp7PayLVci>WNT4bfKNDxp@vP12Kr4gT^a1k3o@LI>uR#W znWrOF8Cg+20PiX=)q0poj-=QYPCXB?(<3<8FqPBseS;eunmlCM8*f;)ec%fVYl5n} z*EA4|PWpcHff|6O4Hc)U+<8px1)t;#K6krP*e!eHZU`8hFU#2!GBW>v6l|u7Q8Sth z*VX|C=T^}ZZcJ|}_-S=@4mG(_2L*aZWIy=)r}b49Rf(}NbEj1E>3Wo>%lY&Cx*f5_ zRTEqbuEVSIy#6I5@JaP7P;9a^>f2)SK%F3gpip^fFIt)w7v-D>VbXBwa0OwsYg}uq z9am#m_t5CKWA$uPhKe(Pxn>8TW`MkyBDZqarP{FT36yXx;!l+uk0vi`d>^bZ1h#17 zq}IyagtKtTMc>Zy5~43p?U2u~M+PN@dPytukHVrM)< zU@vQDdqW?Wb+Ol=U<3m(nHlx%;r;`oS<88Y9?aDh(8qp@Rv^BAQePI+HuU75I6gjh z?n;`KEm%IUX48;5{1z=`+XZuFK)nXXNu`N!OAjMjP^#}nu=-B+kkh@@y(nw2PuO-& zSx+TE^+IlO$oe|$1Ngeoze7|?{>6z4+dOO%sp(V(!a`RsZP=Dp_oYF;pYgVa+* zf`c*$vitopTy%GTx_5B&%~_jeIlwp1rF;kFn?EHRf<-Z z3KV1uVj5s$i*RcF!zZQI)!eyd?B=W7xPCR3cDD2UnhooJ+PcOSGB&R9iJS40$m zqN@*cufBfMwI|0e2b54w7js?Jdbr84YV(Z@W#ol?x3_=h9T4brb$-$CG&RSS7mZ9H zC>o+K>au`;)v9a7&tne=kf)$T#}#*|at^>(W(Yrr%4moJgnGESLj>f(rJ}ItB|SJw z16DYPzzv*!CeF@cz-%W|ck9yIUdrrtfrtDdE(QF&)PMjxm`(r}L{W@6*We@})3oA| z%=xPf)~TUm292BQHO6&w+?d>i^t;m@zNIb5uFCCy-IH0-Nay6Ts&t`p+laJllGE2+ z*@!+Cv+|BUR=N=z9jrT&Kc*pLLw7U-OQJg_yOuCo4~Oc6RwcM=#)eDIjVDFjpI633QE_lsK6szrEFpo!T7qnOE{eu>Umz;hSEWWIDM+5lfQCW{t^Tw z1o|F0Mdu&`vGh#7h_!g;7WP2CpUDinRt$e3rDz#PC|D6a}l>s!xrekd0l z)N7U7vXTUAp}8$=l1nUQ-Tifw_a}^~-6^tvRT1N#i ztU^p=(Kp`kt9+Mc;I$sH0o8t~+&A#7Xbcf{0j`Y|2JE0ZBT)c54l2dJZ4IN=QfDw2 zPcFa9ukD2Hq^NOVMu(TOK#bSqdr4e|VeeUn9g_}pZsQ=+aC&^mH&;Ebi{fS-*zuy6<9zpK4Gihv zMySJQ`LtjlZ(MOKDJHa>$0NjC0jR2|kXxl>^Ws)cxgTYC14NHzp763@x8@q)j?L}@ zP0bg;u_PZ@NumL(i+sANdE>9D(<0}8kz)*iT8^>x$apg2&=ph5 zY2L1LBhKtPL!YO?=*XI!f8N`5OCC3DK)%t1+#+kEHe4}Xv`Ohm@4Nbs=7`CEjqF;% z8e5^t3v`m$F8|Eg+Qk7q)RSEF#UO%HH|7OaFJDh#5bae~f(;l(VN6{QfzW zn8T0NMMk0|8BzYgj+877i! zBg^Se)GVMvs8cyda2fc@aj(pGQc42g1E>#2y2QGX6gO_zuy zbA2xxMJ%R>6o*TkyA(PdU#+UF_sNy46njjQ^+!H>fNG+wNC>_FU1I68vmgr(f4R=L zH=p9^FAC=La`M0|Eh!X#ACg4$rlg<{cNbBljfcc@8%c0f#tMV(z}a<-@#H#duQ?FU zsNe3_|SrEJED|2 zQtEKF^c~dV4J!vG0YHOWw{PJjKI3yF%wiFhgbqN)t5?rU4gOMpKGQ`f?(Uvf)vU-F zMLUHtqmT3+W(=fFjCq-o0f9+TwKH94tf>`H#Fsn=HyMu~4kY|A6radiFG3dJ0bjEx zwAZeXfDoz+T;azITBbG50XS+LU&Ki{CQhoV-C=3>3uJ!BE^EO?9!yK^F+` z*SWqNDCAp>9eiBk;1Zx-x%JvtFb$i$>PdCc5YxrOh^jlAI(KtC+B}c>=pbeE4D1%A z)}c4rO2wcqXc1jf7Lt8Z=JjE@2xLQ_@OHen}jMt)kbo9!!|P&>h|9|Y`=ul5?q7qD^ znl}1G4(*G7(nCshwF+5DYNW7av6PAMhsOHa2vEW14wl)J-!*?n4M*1)rqO#I^i!Nqp)0^=*PyC)8nJprB||td_w&SzRHu~&L4p$@ zrLy?at9kSvJmuUt15zsX)z;wtVm8gVq(>b z{&*~ZBl}v51bGmENG0>>ebvlr$xEeNw)S-@g+QcL1UL>#wJrAid(;Us0*%_BMpB7H zS)1uOaw|QtA-}r(y>0kB;vK0~0qF=_J~x1Q0?1V-31y}l6DLj;2)8%tveR8 z%Za5eipD}0*&Ssc`4QR#)CNLR-|9glyVIE#D*@{k69 z7vsq>w|*nF6Gw3!#+BdoKO?681l9TM7s*#j^;HY@N}42(qk;*m6*Rc3F4tut&I?jV zCm#j$VaKqURTd2vYtaesxgFW_`--dj+D=T6g{_1;+Dv5A-=}I;ItzR3>5xKEFPbqFbWZM zfiS0sXXCxo@!`R1UEFiB5w13kE`$FlH6OpB3g>ERm;g03$-U>OAH=N~1n8YQ`!ui5 z+(~@KBM*f6{I+Eb7jzqY-bh~2Cqpiz!rEXEt#YRT@?J8U1ck?PSXy2Hd{+^F{Euvl zqq)yi$(BLO?aAQGk=Q;gSj{|8HTMDn>3LM|zP7F=8X;+)nYstx$FiI?37&yd#qqV>P_~I0FUq6oML<2QX({H^}1(DLD_z$A= zkG9`or@Iw5;7E-cws%j-_^#DhkTY8C_22fUGTmJOn^DDU21w;f5=Z-657npquJvdMJ!_COGnsU1jvmG|YxWB^pQ zqlQ#|xMPj?ohw&}%bRt}Z>xyW*`z_>@T?rfFj-2r#1m(oq2Y>FKq|{z_^M3CPz*MK zG7!Oj%rQ=bcEg4AaL8;q<)08NfLwO!gNED7urm z)@Zi~;l?*bueVw(mYm!n}^j@^WSyXLegmVCLgf_-Ex) zd1;1QZMo&Ljg`uOt?qzV9>Il0wDNyM$@qV8;)x;x1w%+lHum$c>U+K_@-O^%$>bx-2Vnvb@Bxsy7E^LIa=w%!Gk2e;_c z9{_9kxa24uF)k?!jswe+e!&V~d{8WsS$sxsKtyfa)CC|nBwL3D1$K0h+7fUwm2t&# zgF!v=C4m7h)`8*53#t<+c0x4-6Qs}*s=%91KQFS{!4dmzuR%U=6h`@ny>bhO3tu+n zz|)ogVZ{)CqE2gr&={c(+ddBZvgroQYXAF+aVI-biY)|E1imfH1<>1g0tuG~*V-vM z8_!|zMBv|fC}}SsO%-tLdr7Chp#}}h)~Q2DP@>0Be@6$HsyiiGTBFg`qerSG^d4B* zy^s&UmtM3WLio^OP9G0CIt1q44DeC^x}O|PPv4AxGm@vvet}}`f6U-PkFzZsWqWry zf!I&5gKkes7GqLIHd9LIrIv{8qT7*&IsVerRkhfjOa#`HTo~X#Bo#VQ)GH#pRVH|7 zYm2e~Y-t%_#(zixct)!y|Jx_5@|tTL4f%FwTi2B@u--MqQT zHBN|zn99WW45xjvTHytLhW9|;DCjv-ki%cZ-9P<&sy_c1xA^5vX# z<+8wQlD4Gq0%uy?`I(F7pyvvosX+vHP=$U)Ra}%+lnhN`wylsq+9zocDV%}8sNSzf8he)8>Vu9t{JjTXF{9{{?Q~b8z zTiV%k(<3I!+@H(=63+oW-1doA&xvPbbr9+(;+w05im)E_}|<|?|$R_{eoZ%Wmmf6n$lKRo#6%fnN;@l0TUN>>(C zAkoQfj*VP!gW;_@**>`Gwe__K<=5E7P&}+4ob`e_A=KEZ4|?uxAXP1o%?RLp3610cida_Kk9+EymWozErm$cF8+@=kh(W- zsf+sYEPpEU%*5SgehY3|s#R#3Ufj z{Z2wsn;8&)w!#UHJd%=@fsKDeh2>q6QFb_T-T7gG%{|B}qWuuXBGOlX6BxROUYkbv z!7oA?X>2=WtctQ0%8Zl!y;mjve%zM?kyKpHa&^bK?>H1dkiywKtHs{`QyswcJGAA zr(6c2sw_a<(k(Z_uk_Vqt*fTf<}$xp?I%r)Efm-GNYY~gpH@hi1oWh??}}-XWnWCg zq||{1YCaU(M-S{|0mt-HEZkqtw&cJgX_2V_NDEP-jO1rC+C}$_{bpZPM2}N@9c{+_4xRI6dwg=ww(ECp?tr&%jpP87HceA+TH%mdFF6aPI<*Nc@&Hv)xp?u zHQ*J2d^S{{mdzC{16|k`k{f`)Mfpk>d|3gXom%Q*1iR4kMBKb;>}!5}g6;}b2b0yT zyy6{VgBHr?PYXeqi*(;RqUW+kOyMCcfq*F#9|6G!Soalw)Tq^E1y>3z(cTfPJ8f4N zpuw8oMJ{s4XTGc@-|tJj9h}{>kLDFj2GoI#!gt80rJjIBw4J+SDSh2s2c+`@<(>d$ z5pR*?GgyJk=M8VkT7vo1UP&+Lz3r(&y6N>lew&_wk^gfmFuL^`#;oX(M=a{EJmPJd zs1Ds=CGfO=Re?_GH2Sr_<1iv=Q69`dEBm<;>V_k;f3Gu9R85x!6IawV9%y`jDo7AYX*=8}IcGZpw#iu%&UXfdmK=A2abpMjy-lH8sCj-ERf$uLWSxTXQB~$Gep8Kj zncvpb>QvZ^n+Q(PTkil*iW zfJFgL9`tBi~w0}#whYme;3a-Na3Exe@HTI7aO@&)Wp*DLueiM_d3 zW8>@I&lB$F3HS4a|MxuM-i5uB3oDt(n!r?r9DGdF%%>$D-{be^L)E%k>V~e@qnDtk z>iilzs8cX4V=>j|xmLx+MKM8^&904q?hsknH2+|KW#d>f?3etlp&>Kho3`qS^R?do z_bohPIf91#?C6Sbzh2>t`%0v9&5o4Mb-s9;GfsmDxl;%p_~Koh@eba&f$rdquXD6J zddcV>dX6O_ZtTySo^Gk-X2eO!MGySX_@tqq+0#Q@VP2?w+xH<43Vd7#!+orOJH)n# zZx@kAdPb^)hbgav@pq{_ICyJPRrR!-lg+Cxd@Xb%Ez{wMxOYbXozAFnkc8X0fFY*P z3loHKmHc^Ft$?a|fl-X`r%w{Wjyzz`Eh+-HsW^EVhX&_C6cq6p3h3N zm^EFZ10XVO{3o655;^dz=o+)N>ItZEIObngGaj>;!t^lYmpRA57E0M-RswR)tdp$GGNk4h+6>Ehz7(lwiaCeBOBMG zdB7#R{c|f;b;i#B#H_tF79omTW9cHg{&;VC6uap}yIwsv;A}2-GxM_xqFaz^Ksu&F z@9a1Fh>I}UuFBh6X_g{9%htiE%SiLG4Hbjlqr(dPR*u9e6<_Lq86a@3Q{rrI+t}w3 zMI>*&R9Gt0=fH5s>02sQAKkG%PL2IJb>Ab)xxXi!)#(nJfK59wB|F`ty>cgZtWFQ# z$<({=sG;CxyjAFKOV1aoq9?S~;Cxwg*9($J$UDxca(X_L>-&jrgmjwiOVZEWruQ; ze5w6wLWf|KtD2qxoxk2Fy<9A+x(TXuPy0@C0Mz$uRsYJhs{4)8`;F84Ww;l$4987= zk}ufMzQoIMD=kSZ%dJ4%FVBe?d(5EwWx9>qZuZqW3M%M-;(6_r^*M~XyMPZbeYW5B zuQz-5-pRdpa_^nodnf;E??l9G4Xly8o6E4lGucihfnOrpknl=G{wAM<2bv=&h;&Xt z_ll$G|HC;EeA?ieSRvXdqW_D7a#~z0iy3gqo27Y?*R)8J&wt@Zc+K$D`O5oS_g+U$ z$K^7p)3+dh(NkPrvX`JL^$SgN_+o9^vSgIM4u43S8Z<^VB1-FVRR?cUXtcqdJj%5j zw(hY>-r?K0gxa!ns+;^;MwRtjJH;l;omN-vMti&hA1Vu?MQM380jXl*>shQH8z*+Q z?KG--n-v24G8HyJkE$)!zYSFcD!qq z+1wjvne2k85=F&CBp=_j#B>a?Ktflxt;7R7r+WuS-<)+?J9mZT13~|)p5~tn z%Di~hDdhdd-mx~fQ3F5of&U=V4>;hMv?;Fw1152(p-nQ0p#uz)x!RZJ!10B_e}$?&5QDc7cXR>yuV1X?L|+Nvl(DbQtU#%Z z%%PV-W6WtpeGyM`%z6$voSsv83OATcrm;qUq>qJ?j4;Mot}E|Lto$m{1f{ZSft>OQ zaD8uKKa>TN#D%hWVMAG%hDyI9`8Fc+h<}OGLDNo2E;oX+cnnOvimxFjj;u4ZbO87) z&iEPsEQu!tuZ4JZhsCOKbZ$$|GClAl$_o)*1~)_^7xJg98Hd>VEC#4JtXDI^F4bUv ziJ#;E*w8ABvA29yw;ki!VSg5Cm-?98Y_AL9>>|xVPOqHut8Yy^djO#TNIEghL3YORGxDE5l0FG=Z6Rb?yr@WN=^D5zz6G z(#vUB-u%)6Wx&nfr0C_tG%Nna>b$&iu$58_e>q&hT9fvDIMXcq@Hic7b*?$IC0r|> zqOaVUI_1hero21l{+gA$ti4BDeIRp%aruN764X=Pp0*AeBqo-Dj;ky<_WC7%(%#<~ zevM}SP9m4qe<5uMJpu5JsdNY#!cJ8#{XFh>K2-0iShN^gT6LYID8ONMTF_hP9N2R} zf7_gt?LvJDI35~F?q0RxKA9I7lQ{R!N4PB=)y%ZXgJ+3pvt7czw%^O<=GDbjc@r;p zB%F9T{ogb3y8KY8gp0HVD_n;GAS#ui_T7BG>iN8!U!jB|c*r+jY@0I>6u->J!2qqz zz=^OBOtP4F5q{|H@{{@cv)tXR#h2rBMoEmZsUsVtOqbT}!kL6yv{-`$CB$6{4|z!xB`^2dC`#40EHtsCvXDW9 zme^mOZ%@#eN@oh$7A8cyPPpefcaB(w*;iNZG5OZxMS2Cc=xR>}u<9ia1rWUCe>?z_ zuRkzb{!9RIhRkY!^kHPtuMdx56R`_AMync(@N@D3#~T%=2k$Gxvw=R4r6cUznam%M z#Tcpm?k>L;lED&!@+qlE&0`h*`EVgj0Ju+ z>vpbD*Lv6N#YiIF&9uLz(}YXrmXiE!Rdz4voMBuubE)bbY=LABdS!Y&RO6d$ z(Zb}a#}OK3tR0rwp9zgU`y*WEhkjC#jwU{iUy!GOKil##6pP-873ww_K!C zh4oh9QZXN83BVUKR8{~;e_i1y6y)p1H%u#l>>S?H3DJbseGTRDJaY-lnM=ce$dL34(!T5~C zt$asm%ctx=%d%g@l9`E{BXtPS!2*yx53bCiQQIv(TSbbjNO ztPEDmerx0%kpHBHy1UDAcbDbvF3THwm*ws$le?!({_Sy~8#STB4N7O^E`PbGnYT?= zP`?Ou=Ji~a9MJjM@7}$0()c?kCCiQWoAn3^OW0aAo*M}`fBm0&1f_K4*PO@2DjrC| zw7Uh=-2&=v0d=>4`j0Q5?ri&8+4gr46~ZOT{8KNtS|Bv^=*wzaP_jy?dj5rT@1B1N zAWGL4w|g9hX?^!N%!+MmVO@)v2OaaGT;Z(pth;+cI`u3|pyYT)l+RU*053Ce3*`md z1-bGGC$Q)_e<&8?>6dS=Ey{$a(Ww0`Ro|(U3X~itQhL*FrG#{4ex=v*R)_v5;qB|- z(|{VY45PS238y%tX;v}TmGMgT#A1`U!XCKH6SkW3z+3wp2cufOXIoh`in7i5QQUiW z{2v~}(E4Qr1Hen90#ch62|&44c`&z7(WosG4s}cKfADc!2;XpCe=KwjUwr)i#yX7u zzqXUsyoYq>^Ik_eqF?p0Crb@G!JA5Iy2FdppiogekpF-`JY-g{fo?vtAPv@dW^o&5 z`O+0i6OQz&n97{vYxzt@UvI#KR_ScZ4`!6!7jV?HWc>fkdCe)~7L#%rAK0LPRG8&D za)Dk9f3K`wr>btHsY2~kc~!MqV>F^LlQplQ^9&C)ns?hC(|r7GP(wGSK2Y9~8W9>w z7pV?ZhJ!mnZv?XU>|lOAqn^~e1HrV{e+4Yr(=(0plG2wXHQ8o{oGYO*HI9C91I?Jo zf!wzy`kc5wMX!XyUJ1Ei<%^FS!e533)Q(yXQYCTO*!GC?BH<+lS5an4?N|N^A|GtuSDP}1Y#6q7AM^*!u#oOjI;a8}e=+Mp znLCrYGnrfP>U(1_%}|4I&W42H70e@3)+u!4H|r`X0WPx?RzO7(dv^NI8&{L) zYU3A3x!*QPInW}ev~8OfOx5$cYUrFINor@VnK`kyJGowX>T zofRpeKV)t+E>%XVo3AVapBQ zrIr}qq@kfptl0+%* zR?uBYkb%vH)m}6%nX-q`e}r81>1l`L53>Q;<>^^xGhUqDf4lhL+(2-mJzf>Cb%xo( z7diCFL|T3>d~BMm_Gm4eW5EK-Vo^T-(0znox$U9b(E?bixsIJ8V7|teAR%hh)9#>u zc%b$T1qj^HBQG+J$XIQ^cn^NK{%B*R?GOuv!SD?zi{&1rN9bzve`k>av}hex&x$Fx zV|IZYlwD@PJlIwrK*;Kk%(k)3S;n7rl_eZ=_V02p|4;szBH* z1TX37EEmpn#9VBN*seJdb6pF~6bB|cC1E8$L}$1%7Hd&asi{+0N61uJ$x^mQrS(x| ze=M!Iz4zTXv+zTOe?${_$!P9b*}vANd*>?FE#y>I#bM(}CF`D~l}b}w5_9@f+Dfb% zF`Jcqxy8hd8l<`*E!oP71z$OkJF)G(ieR(ZyaM*~L$qM^hYNtNZQ*f22JXWT+cE=( z73FN;yG0vwxjYhFKJ+vIq2&W3;RVDzgk|li*&Jusc{pe6e{c9b33?MQ0%WFK4#?ba zVGts&%nla|E*DKA_@FC&XLFsA-RupzRQ$sSA9p^vzy0ASpWOfW{Uo{JA+hpL9O4{}4{uLtfG`FrO?+5ZutO!{r1}up+*Ao(`~32}{_J z7wAe+%Ial-g@puvEd~iGp}dw=35ume385_s-Qg|6NCXd|tXi`HH3$1c3?JZF;lMF| zzDfOeTU-LJ%Jh=mtZRR1y{#!Jm3ctY&`e^;N=r%Rf0r9etkY!{cimU$GT$klu+8l2 zhqJZ@QvE&O0BMCt?5bAoLv1%}<}jAyYgX~n=wZ-0R*!JYzHVP6&M%{vc+ARkoLtrL zUNR4lU@sP_V@e_C2^csoGiEx2cl883v{|IhT$(i~dM$O&0`Qd#tQzeux;hBHtn@d! zT%v_`e+ewiTVf|UZ*8hgHA;i=&-WN@acH#*hk(Gg2@V`^(kz20tx@fA`+0YqTtTig zvBN5vrUIuRY@s(}p%odb+6_j|jpu{XF@yCJ^=cZdh zPr0Du!Jn4j<*2IC(eQMu6!|X9>0WoxMa%lpe@WRWAjn|I0M!jxOKgfdbR7ebvoA{i zGxov>&o36hs|Lgm%!LckZuSn-UaC%pS#nvZA?MUsS7^%~%5qU@_QU+CD+&6g(@nXS z#SmWjL(+po3bxm+&_S2;+w71F&99y*CQXNl4uEx5# ze?TF#hp2ItiG=U7BG*IGB}wk1SMCj8Crc8clO?sump2t&mFjll~l6SF-~~ct!YlaOtc!uNrIN+rUieg;W*0c`R(ZS`PcD_gmx)?haGap zGMlcDHH40mJ2uC`>kvHDEDI&M+OBxYe{K}iP=*|+K&Y{R#Yr&Gt3s!2sltbV0y6(R z%DHLV3-*ZZugE@UXxi8&cSl++T<3)N41qF%g#z!l5mS)i?=feDAQVoND3(lSOdC5Y z_JPaY3>~yM(3U2lR%fKvr{fV{KcIOg9`S7FO1V++h1s-*y@%m>OUa3&tu{LEf8E>Q z_9SPnoHIBCF8ljYK79^H>aYZRpv2435?}ZN1T0+|9=1eFV`FrE<~-3f17JJ${kg-KnJ->XW$0U_O{J&WG!zy8Hr&UkPpQ7 zyu)L%WpKZzw(iRzRgRSm$uMn6tkiJvlYWTx6yuiTAwx;K-k@b<$a zwV^s4<LbYweblpG=!}l^^~-dJ#5gVXx-;f7H*hq{Bl- z+~M%zSe+4Uu$mo&Yji+H#XEIx*k6 zJlbBbwUvbw0E5WTwG)ONC@1dX&98YPuZg(zy>ZHzAqnl^ALVhue;sP!9c}*EffAi$ z)PX*>=ThO)C?GV0fk!nI`G2N7U*Rm=2i zYo3g5c*rc30f#uyuqe79aderQUW{!>G4R6m%~lOe1EOlZjf^_VfRVnb>fpFH`2P6d zbiaSxdkyMfVeKnZe+OR8D^dq0goF)}(3FXAcp1OpdH^ZVtP%i>Z>$P9JnFqR1psxw zmf;Weu5|EwuL-7?czqbpsAdf*0FGC)pT)0P1*~d#Q~v-yiyIu_mS}4t*1v0vYwLIa zxYxME^Fz0d8@z*q^f-_=Ovi&%#a9uYuh|s?)P`>gf7gp5Sx4?YGOmYwuS4#8 z-Q7VS#2fw_Jch49*)Ry9ItPcRCbj8N0gN5R`Z)0t!&P0;@o7BC|ef4`SPHysPTAG&+Jm8=?KkC$fFxI({tBo6pcrSbGCYi#29L1TU+Mn)wy z8?>o6hlf}n-Ye*?;)5!bU!J@=mWPENYt^a4rK z`7Hz3c6H2&TnN#S)R~rY3+Xm?SXbMk+>OR#-2ZHCqTj@ZYN7vx%|(LYh|sy48;kuZ zkk2RZ+hcN(DyYSAnMbr>7DxTRyo{qvkvoygin2KBguu_yAIL?Z9qN7vFG~A*7+qlC z9FCsKf8l5In64~%)zyoFunws!m#jewv1wnYcp>byV*ZGlxY$FbR8FuW03JD6dBa5I z$0kMPI3E4mMFpC88&P>ap2lyitTd`tz8+6s>$FuzSg?&Zl@?=F+{wsd8F46fiDvh9 zpY(eN1N}vXhx{{T7s4za#>o}5tER9qqEfqrf3yBoVrN?GnpQ1 zx6tZB2LpyuhRgXQ*JN<+J(<#Z8CrH0l8pV1f#^*D*)XPo!rA#{JWS4#A;FRVE)O_? ze*kz=SR9Y3Im}~*a4R7T^fa0P*9g%@USL1~kZFNegL;47?*Q3}9T{vXW-&JOA}-F; zQBL_=rT@ zr(gYPueWeX?v#CdU_{}b3j`(w#dR|se@qipi!XGz6u!xlZ*sir(G2eIC#cV6iXbQP z%RmfJE2>=ImuUGHaZZl9&knSBZTci12+>#Xy*El@;y;fLq86=GHs5@0%5VTW zY`&QzBqx8LCd1#xGrb-d!@k=@f0Nye7NLzm_(->PP(1zupLvBpRAh_D*FfAY7(*Hs zkSO3=8UC+lC@hWC0-O~j>pwj@JRWop29Fd*|2lbm_&vBm9`t_b9jlY>0YugMsfVa@ zP1(b*zwPY~)G=)OALF+F$vdir@5@+*2E&0EzUj|Cod=uPAOc5Ws?vX&f2UGevo@IK z@rdUuJfj)UjN*EFcnBAb<^+MRrkzP0%E)LZD9hsfGG*h4rBUlSdJKXtJQgWEC;$-C zBtHi{c>;ApeY13$0SbN*5Ma)9r=eu=GRDaLwwGwNu~<8H*z`8l=q$EzToiF;lqt80 z=Ff4SLV?Sqh{hBlPMxG}e;lzfhtg@wVaNqRmLP?uWBdcd>1lbQT2Y&0*^77rQvi)I zNxmqz()f)jDjB-7sZK7^-=O;aF|da!7hDZlTRmKTMVlj5)Ej4ncZzs5`JINdt)n)8 z&5rGB%hYc&;07j()WZy7<&;3fBC#q_%-N{4xQ*_ue5Rk2EBG3xe;K|9S;VB!sSpoM zE+nVZ;S>r_@MdMMcPXWQ<-XHBNRdu~g-O=wIiDDVnPxyPeKpe7%Iz-TPnr*t$uxc^ zpeC}?(M=>HEyBcS=SdNV$v?)Zc_Ez|EfhZQ!>4CwDq;>B>P1OLL%I$rbx}4ifrwj( zFF#KU8f-~n9}rK-f9ncpGQ;ewunQ6)%MUlz6a8?9I@0vlp*%c^zNK8J&vE9Kyv7

>E)X39@+vsP$lvd^jU0K+Obble?o@JCJ(? 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 z%0D@Jk~wLo!05X-_fdGy)>)=#WBY8_+gPksj{}+g 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 z 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