From 6952401238cea7d70ade9837f5872d18d3088e3f Mon Sep 17 00:00:00 2001 From: funkyfranky Date: Wed, 4 Oct 2017 16:45:27 +0200 Subject: [PATCH 1/4] Added airports from zone (untested) --- Moose Development/Moose/Functional/RAT.lua | 60 +++++++++++++++------- 1 file changed, 42 insertions(+), 18 deletions(-) diff --git a/Moose Development/Moose/Functional/RAT.lua b/Moose Development/Moose/Functional/RAT.lua index 472cb2374..dacf6a85e 100644 --- a/Moose Development/Moose/Functional/RAT.lua +++ b/Moose Development/Moose/Functional/RAT.lua @@ -284,6 +284,8 @@ RAT={ departure_ports={}, -- Array containing the names of the departure airports. destination_ports={}, -- Array containing the names of the destination airports. excluded_ports={}, -- Array containing the names of explicitly excluded airports. + departure_Azone=nil, -- Zone containing the departure airports. + destination_Azone=nil, -- Zone containing the destination airports. ratcraft={}, -- Array with the spawned RAT aircraft. Tinactive=300, -- Time in seconds after which inactive units will be destroyed. Default is 300 seconds. reportstatus=false, -- Aircraft report status. @@ -498,6 +500,17 @@ function RAT:Spawn(naircraft) self.SubMenuName=self.alias end + -- Get all departure airports inside a Moose zone. + if self.departure_Azone~=nil then + self.departure_ports=self:_GetAirportsInZone(self.departure_Azone) + end + + -- Get all destination airports inside a Moose zone. + if self.destination_Azone~=nil then + self.destination_ports=self:_GetAirportsInZone(self.destination_Azone) + end + + -- debug message local text=string.format("\n******************************************************\n") text=text..string.format("Spawning %i aircraft from template %s of type %s.\n", self.ngroups, self.SpawnTemplatePrefix, self.aircraft.type) @@ -719,6 +732,17 @@ function RAT:SetDestination(names) end +--- Airports, FARPs and ships explicitly excluded as departures and destinations. +-- @param #RAT self +-- @param #string ports Name or table of names of excluded airports. +function RAT:SetDestinationFromZone(zone) + + -- Random departure is deactivated now that user specified departure ports. + self.random_destination=false + + self.destination_Azone=zone +end + --- Airports, FARPs and ships explicitly excluded as departures and destinations. -- @param #RAT self -- @param #string ports Name or table of names of excluded airports. @@ -1555,7 +1579,7 @@ function RAT:_PickDeparture(takeoff) -- All airports specified by user for _,name in pairs(self.departure_ports) do - if not self:_Excluded(name) then + if self:_IsFriendly(name) and not self:_Excluded(name) then table.insert(departures, AIRBASE:FindByName(name)) end end @@ -1591,23 +1615,6 @@ end -- @param #boolean _random (Optional) Switch to activate a random selection of airports. -- @return Wrapper.Airbase#AIRBASE Destination airport. function RAT:_PickDestination(destinations, _random) - - --[[ - -- Take destinations from user input. - if not (self.random_destination or _random) then - - destinations=nil - destinations={} - - -- All airports specified by user. - for _,name in pairs(self.destination_ports) do - if not self:_Excluded(name) then - table.insert(destinations, AIRBASE:FindByName(name)) - end - end - - end - ]] -- Randomly select one possible destination. local destination=nil @@ -1702,6 +1709,23 @@ function RAT:_GetDestinations(departure, q, minrange, maxrange) end +--- Find airports within a zone. +-- @param #RAT self +-- @param Core.Zone#ZONE zone +-- @return #list Table with airport names that lie within the zone. +function RAT:_GetAirportsInZone(zone) + local airports={} + for _,airport in self.airports do + local name=airport:GetName() + local coord=airport:GetCoordinate() + + if zone:IsPointVec3InZone(coord) then + table.insert(airports, name) + end + end + return airports +end + --- Check if airport is excluded from possible departures and destinations. -- @param #RAT self -- @param #string port Name of airport, FARP or ship to check. From 6061883194b68b0d8ebf4c1ec918973c6c8e341f Mon Sep 17 00:00:00 2001 From: funkyfranky Date: Thu, 5 Oct 2017 00:08:48 +0200 Subject: [PATCH 2/4] Added airport selection by zone. --- Moose Development/Moose/Functional/RAT.lua | 20 +++++++++++++++----- Moose Mission Setup/Moose.lua | 2 +- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Moose Development/Moose/Functional/RAT.lua b/Moose Development/Moose/Functional/RAT.lua index dacf6a85e..ec24b97fa 100644 --- a/Moose Development/Moose/Functional/RAT.lua +++ b/Moose Development/Moose/Functional/RAT.lua @@ -510,7 +510,6 @@ function RAT:Spawn(naircraft) self.destination_ports=self:_GetAirportsInZone(self.destination_Azone) end - -- debug message local text=string.format("\n******************************************************\n") text=text..string.format("Spawning %i aircraft from template %s of type %s.\n", self.ngroups, self.SpawnTemplatePrefix, self.aircraft.type) @@ -732,10 +731,10 @@ function RAT:SetDestination(names) end ---- Airports, FARPs and ships explicitly excluded as departures and destinations. +--- Include all airports which lie in a zone as possible destinations. -- @param #RAT self --- @param #string ports Name or table of names of excluded airports. -function RAT:SetDestinationFromZone(zone) +-- @param Core.Zone#ZONE zone Zone in which the airports lie. +function RAT:SetDestinationsFromZone(zone) -- Random departure is deactivated now that user specified departure ports. self.random_destination=false @@ -743,6 +742,17 @@ function RAT:SetDestinationFromZone(zone) self.destination_Azone=zone end +--- Include all airports which lie in a zone as possible destinations. +-- @param #RAT self +-- @param Core.Zone#ZONE zone Zone in which the airports lie. +function RAT:SetDeparturesFromZone(zone) + -- Random departure is deactivated now that user specified departure ports. + self.random_departure=false + + self.departure_Azone=zone +end + + --- Airports, FARPs and ships explicitly excluded as departures and destinations. -- @param #RAT self -- @param #string ports Name or table of names of excluded airports. @@ -1715,7 +1725,7 @@ end -- @return #list Table with airport names that lie within the zone. function RAT:_GetAirportsInZone(zone) local airports={} - for _,airport in self.airports do + for _,airport in pairs(self.airports) do local name=airport:GetName() local coord=airport:GetCoordinate() diff --git a/Moose Mission Setup/Moose.lua b/Moose Mission Setup/Moose.lua index a510dd4d5..b9a0b6e20 100644 --- a/Moose Mission Setup/Moose.lua +++ b/Moose Mission Setup/Moose.lua @@ -1,5 +1,5 @@ env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20171003_1348' ) +env.info( 'Moose Generation Timestamp: 20171004_1944' ) local base = _G From 0a325efeaf10d57576def9e923e00605a7b9e5b4 Mon Sep 17 00:00:00 2001 From: funkyfranky Date: Thu, 5 Oct 2017 15:42:57 +0200 Subject: [PATCH 3/4] Minor fixes. --- Moose Development/Moose/Functional/RAT.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Moose Development/Moose/Functional/RAT.lua b/Moose Development/Moose/Functional/RAT.lua index ec24b97fa..c4286842b 100644 --- a/Moose Development/Moose/Functional/RAT.lua +++ b/Moose Development/Moose/Functional/RAT.lua @@ -88,6 +88,9 @@ -- @field #table departure_zones Array containing the names of the departure zones. -- @field #table departure_ports Array containing the names of the destination airports. -- @field #table destination_ports Array containing the names of the destination airports. +-- @field #table excluded_ports Array containing the names of explicitly excluded airports. +-- @field Core.Zone#ZONE departure_Azone Zone containing the departure airports. +-- @field Core.Zone#ZONE destination_Azone Zone containing the destination airports. -- @field #table ratcraft Array with the spawned RAT aircraft. -- @field #number Tinactive Time in seconds after which inactive units will be destroyed. Default is 300 seconds. -- @field #boolean reportstatus Aircraft report status. @@ -619,7 +622,7 @@ end --- Set country of RAT group. This overrules the coalition settings. -- @param #RAT self -- @param #number id DCS country enumerator ID. For example country.id.USA or country.id.RUSSIA. -function RAT:SetCoalition2(id) +function RAT:SetCountry(id) self.country=id end From c4fbdb32c4175056db0fbdabe33968a7050664b2 Mon Sep 17 00:00:00 2001 From: funkyfranky Date: Sun, 8 Oct 2017 19:00:06 +0200 Subject: [PATCH 4/4] Moose.lua --- Moose Mission Setup/Moose.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Moose Mission Setup/Moose.lua b/Moose Mission Setup/Moose.lua index b9a0b6e20..3ac2aae22 100644 --- a/Moose Mission Setup/Moose.lua +++ b/Moose Mission Setup/Moose.lua @@ -1,5 +1,5 @@ env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20171004_1944' ) +env.info( 'Moose Generation Timestamp: 20171006_1917' ) local base = _G @@ -38,6 +38,7 @@ __Moose.Include( 'Core/Message.lua' ) __Moose.Include( 'Core/Fsm.lua' ) __Moose.Include( 'Core/Radio.lua' ) __Moose.Include( 'Core/SpawnStatic.lua' ) +__Moose.Include( 'Core/Goal.lua' ) __Moose.Include( 'Core/Cargo.lua' ) __Moose.Include( 'Core/Spot.lua' ) __Moose.Include( 'Wrapper/Object.lua' ) @@ -61,6 +62,9 @@ __Moose.Include( 'Functional/AirbasePolice.lua' ) __Moose.Include( 'Functional/Detection.lua' ) __Moose.Include( 'Functional/Designate.lua' ) __Moose.Include( 'Functional/RAT.lua' ) +__Moose.Include( 'Functional/ZoneGoal.lua' ) +__Moose.Include( 'Functional/ZoneGoalCoalition.lua' ) +__Moose.Include( 'Functional/ZoneCaptureCoalition.lua' ) __Moose.Include( 'AI/AI_Balancer.lua' ) __Moose.Include( 'AI/AI_A2A.lua' ) __Moose.Include( 'AI/AI_A2A_Patrol.lua' ) @@ -85,6 +89,7 @@ __Moose.Include( 'Tasking/Task_A2G.lua' ) __Moose.Include( 'Tasking/Task_A2A_Dispatcher.lua' ) __Moose.Include( 'Tasking/Task_A2A.lua' ) __Moose.Include( 'Tasking/Task_Cargo.lua' ) +__Moose.Include( 'Tasking/TaskZoneCapture.lua' ) __Moose.Include( 'Moose.lua' ) BASE:TraceOnOff( true ) env.info( '*** MOOSE INCLUDE END *** ' )