diff --git a/Moose Development/Moose/Core/Database.lua b/Moose Development/Moose/Core/Database.lua index bf8ef630e..2dad882c9 100644 --- a/Moose Development/Moose/Core/Database.lua +++ b/Moose Development/Moose/Core/Database.lua @@ -1155,3 +1155,5 @@ end + + diff --git a/Moose Development/Moose/Functional/AirbasePolice.lua b/Moose Development/Moose/Functional/AirbasePolice.lua index 3e95d65ec..35fa2ca46 100644 --- a/Moose Development/Moose/Functional/AirbasePolice.lua +++ b/Moose Development/Moose/Functional/AirbasePolice.lua @@ -23,13 +23,16 @@ AIRBASEPOLICE_BASE = { AirbaseNames = nil, } +--- @type AIRBASEPOLICE_BASE.AirbaseNames +-- @list <#string> + --- Creates a new AIRBASEPOLICE_BASE object. -- @param #AIRBASEPOLICE_BASE self -- @param SetClient A SET_CLIENT object that will contain the CLIENT objects to be monitored if they follow the rules of the airbase. -- @param Airbases A table of Airbase Names. -- @return #AIRBASEPOLICE_BASE self -function AIRBASEPOLICE_BASE:New( SetClient, Airbases ) +function AIRBASEPOLICE_BASE:New( SetClient, Airbases, AirbaseList ) -- Inherits from BASE local self = BASE:Inherit( self, BASE:New() ) @@ -37,12 +40,21 @@ function AIRBASEPOLICE_BASE:New( SetClient, Airbases ) self.SetClient = SetClient self.Airbases = Airbases + + self.AirbaseList = AirbaseList for AirbaseID, Airbase in pairs( self.Airbases ) do - Airbase.ZoneBoundary = ZONE_POLYGON_BASE:New( "Boundary", Airbase.PointsBoundary ):SmokeZone(SMOKECOLOR.White):Flush() + Airbase.ZoneBoundary = _DATABASE:FindAirbase( AirbaseID ):GetZone() + Airbase.ZoneRunways = {} for PointsRunwayID, PointsRunway in pairs( Airbase.PointsRunways ) do - Airbase.ZoneRunways[PointsRunwayID] = ZONE_POLYGON_BASE:New( "Runway " .. PointsRunwayID, PointsRunway ):SmokeZone(SMOKECOLOR.Red):Flush() - end + Airbase.ZoneRunways[PointsRunwayID] = ZONE_POLYGON_BASE:New( "Runway " .. PointsRunwayID, PointsRunway ) + end + Airbase.Monitor = self.AirbaseList and false or true -- When AirbaseList is not given, monitor every Airbase, otherwise don't monitor any (yet). + end + + -- Now activate the monitoring for the airbases that need to be monitored. + for AirbaseID, AirbaseName in pairs( self.AirbaseList or {} ) do + self.Airbases[AirbaseName].Monitor = true end -- -- Template @@ -70,34 +82,31 @@ function AIRBASEPOLICE_BASE:New( SetClient, Airbases ) return self end ---- @type AIRBASEPOLICE_BASE.AirbaseNames --- @list <#string> ---- Monitor a table of airbase names. +--- Smoke the airbases runways. -- @param #AIRBASEPOLICE_BASE self --- @param #AIRBASEPOLICE_BASE.AirbaseNames AirbaseNames A list of AirbaseNames to monitor. If this parameters is nil, then all airbases will be monitored. +-- @param Utilities.Utils#SMOKECOLOR SmokeColor The color of the smoke around the runways. -- @return #AIRBASEPOLICE_BASE self -function AIRBASEPOLICE_BASE:Monitor( AirbaseNames ) +function AIRBASEPOLICE_BASE:SmokeRunways( SmokeColor ) - if AirbaseNames then - if type( AirbaseNames ) == "table" then - self.AirbaseNames = AirbaseNames - else - self.AirbaseNames = { AirbaseNames } - end + for AirbaseID, Airbase in pairs( self.Airbases ) do + for PointsRunwayID, PointsRunway in pairs( Airbase.PointsRunways ) do + Airbase.ZoneRunways[PointsRunwayID]:SmokeZone( SmokeColor ) + end end end + --- @param #AIRBASEPOLICE_BASE self function AIRBASEPOLICE_BASE:_AirbaseMonitor() - for AirbaseID, Airbase in pairs( self.Airbases ) do + for AirbaseID, AirbaseMeta in pairs( self.Airbases ) do - if not self.AirbaseNames or self.AirbaseNames[AirbaseID] then + if AirbaseMeta.Monitor == true then self:E( AirbaseID ) - self.SetClient:ForEachClientInZone( Airbase.ZoneBoundary, + self.SetClient:ForEachClientInZone( AirbaseMeta.ZoneBoundary, --- @param Wrapper.Client#CLIENT Client function( Client ) @@ -105,7 +114,7 @@ function AIRBASEPOLICE_BASE:_AirbaseMonitor() self:E( Client.UnitName ) if Client:IsAlive() then local NotInRunwayZone = true - for ZoneRunwayID, ZoneRunway in pairs( Airbase.ZoneRunways ) do + for ZoneRunwayID, ZoneRunway in pairs( AirbaseMeta.ZoneRunways ) do NotInRunwayZone = ( Client:IsNotInZone( ZoneRunway ) == true ) and NotInRunwayZone or false end @@ -113,7 +122,7 @@ function AIRBASEPOLICE_BASE:_AirbaseMonitor() local Taxi = self:GetState( self, "Taxi" ) self:E( Taxi ) if Taxi == false then - Client:Message( "Welcome at " .. AirbaseID .. ". The maximum taxiing speed is " .. Airbase.MaximumSpeed " km/h.", 20, "ATC" ) + Client:Message( "Welcome at " .. AirbaseID .. ". The maximum taxiing speed is " .. AirbaseMeta.MaximumSpeed " km/h.", 20, "ATC" ) self:SetState( self, "Taxi", true ) end @@ -128,7 +137,7 @@ function AIRBASEPOLICE_BASE:_AirbaseMonitor() if IsAboveRunway and IsOnGround then - if Velocity > Airbase.MaximumSpeed then + if Velocity > AirbaseMeta.MaximumSpeed then local IsSpeeding = Client:GetState( self, "Speeding" ) if IsSpeeding == true then @@ -136,10 +145,11 @@ function AIRBASEPOLICE_BASE:_AirbaseMonitor() self:T( SpeedingWarnings ) if SpeedingWarnings <= 3 then - Client:Message( "You are speeding on the taxiway! Slow down or you will be removed from this airbase! Your current velocity is " .. string.format( "%2.0f km/h", Velocity ), 5, "Warning " .. SpeedingWarnings .. " / 3" ) + Client:Message( "Warning " .. SpeedingWarnings .. "/3! Airbase traffic rule violation! Slow down now! Your speed is " .. + string.format( "%2.0f km/h", Velocity ), 5, "ATC" ) Client:SetState( self, "Warnings", SpeedingWarnings + 1 ) else - MESSAGE:New( "Player " .. Client:GetPlayerName() .. " is being kicked from the airbase, due to a speeding violation ...", 10, "Airbase Police" ):ToAll() + MESSAGE:New( "Penalty! Player " .. Client:GetPlayerName() .. " is kicked, due to a severe airbase traffic rule violation ...", 10, "ATC" ):ToAll() --- @param Wrapper.Client#CLIENT Client Client:Destroy() Client:SetState( self, "Speeding", false ) @@ -147,7 +157,7 @@ function AIRBASEPOLICE_BASE:_AirbaseMonitor() end else - Client:Message( "You are speeding on the taxiway, slow down now! Your current velocity is " .. string.format( "%2.0f km/h", Velocity ), 5, "Attention! " ) + Client:Message( "Attention! You are speeding on the taxiway, slow down! Your speed is " .. string.format( "%2.0f km/h", Velocity ), 5, "ATC" ) Client:SetState( self, "Speeding", true ) Client:SetState( self, "Warnings", 1 ) end @@ -257,16 +267,7 @@ end AIRBASEPOLICE_CAUCASUS = { ClassName = "AIRBASEPOLICE_CAUCASUS", Airbases = { - AnapaVityazevo = { - PointsBoundary = { - [1]={["y"]=242234.85714287,["x"]=-6616.5714285726,}, - [2]={["y"]=241060.57142858,["x"]=-5585.142857144,}, - [3]={["y"]=243806.2857143,["x"]=-3962.2857142868,}, - [4]={["y"]=245240.57142858,["x"]=-4816.5714285726,}, - [5]={["y"]=244783.42857144,["x"]=-5630.8571428583,}, - [6]={["y"]=243800.57142858,["x"]=-5065.142857144,}, - [7]={["y"]=242232.00000001,["x"]=-6622.2857142868,}, - }, + [AIRBASE.Caucasus.Anapa_Vityazevo] = { PointsRunways = { [1] = { [1]={["y"]=242140.57142858,["x"]=-6478.8571428583,}, @@ -276,19 +277,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=242140.57142858,["x"]=-6480.0000000011,} }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - Batumi = { - PointsBoundary = { - [1]={["y"]=617567.14285714,["x"]=-355313.14285715,}, - [2]={["y"]=616181.42857142,["x"]=-354800.28571429,}, - [3]={["y"]=616007.14285714,["x"]=-355128.85714286,}, - [4]={["y"]=618230,["x"]=-356914.57142858,}, - [5]={["y"]=618727.14285714,["x"]=-356166,}, - [6]={["y"]=617572.85714285,["x"]=-355308.85714286,}, - }, + [AIRBASE.Caucasus.Batumi] = { PointsRunways = { [1] = { [1]={["y"]=616442.28571429,["x"]=-355090.28571429,}, @@ -307,20 +298,9 @@ AIRBASEPOLICE_CAUCASUS = { [14]={["y"]=616441.42857142,["x"]=-355092.57142858,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - Beslan = { - PointsBoundary = { - [1]={["y"]=842082.57142857,["x"]=-148445.14285715,}, - [2]={["y"]=845237.71428572,["x"]=-148639.71428572,}, - [3]={["y"]=845232,["x"]=-148765.42857143,}, - [4]={["y"]=844220.57142857,["x"]=-149168.28571429,}, - [5]={["y"]=843274.85714286,["x"]=-149125.42857143,}, - [6]={["y"]=842077.71428572,["x"]=-148554,}, - [7]={["y"]=842083.42857143,["x"]=-148445.42857143,}, - }, + [AIRBASE.Caucasus.Beslan] = { PointsRunways = { [1] = { [1]={["y"]=842104.57142857,["x"]=-148460.57142857,}, @@ -330,20 +310,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=842104,["x"]=-148460.28571429,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - Gelendzhik = { - PointsBoundary = { - [1]={["y"]=297856.00000001,["x"]=-51151.428571429,}, - [2]={["y"]=299044.57142858,["x"]=-49720.000000001,}, - [3]={["y"]=298861.71428572,["x"]=-49580.000000001,}, - [4]={["y"]=298198.85714286,["x"]=-49842.857142858,}, - [5]={["y"]=297990.28571429,["x"]=-50151.428571429,}, - [6]={["y"]=297696.00000001,["x"]=-51054.285714286,}, - [7]={["y"]=297850.28571429,["x"]=-51160.000000001,}, - }, + [AIRBASE.Caucasus.Gelendzhik] = { PointsRunways = { [1] = { [1]={["y"]=297834.00000001,["x"]=-51107.428571429,}, @@ -353,20 +322,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=297835.14285715,["x"]=-51107.714285715,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - Gudauta = { - PointsBoundary = { - [1]={["y"]=517246.57142857,["x"]=-197850.28571429,}, - [2]={["y"]=516749.42857142,["x"]=-198070.28571429,}, - [3]={["y"]=515755.14285714,["x"]=-197598.85714286,}, - [4]={["y"]=515369.42857142,["x"]=-196538.85714286,}, - [5]={["y"]=515623.71428571,["x"]=-195618.85714286,}, - [6]={["y"]=515946.57142857,["x"]=-195510.28571429,}, - [7]={["y"]=517243.71428571,["x"]=-197858.85714286,}, - }, + [AIRBASE.Caucasus.Gudauta] = { PointsRunways = { [1] = { [1]={["y"]=517096.57142857,["x"]=-197804.57142857,}, @@ -376,20 +334,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=517097.99999999,["x"]=-197807.42857143,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - Kobuleti = { - PointsBoundary = { - [1]={["y"]=634427.71428571,["x"]=-318290.28571429,}, - [2]={["y"]=635033.42857143,["x"]=-317550.2857143,}, - [3]={["y"]=635864.85714286,["x"]=-317333.14285715,}, - [4]={["y"]=636967.71428571,["x"]=-317261.71428572,}, - [5]={["y"]=637144.85714286,["x"]=-317913.14285715,}, - [6]={["y"]=634630.57142857,["x"]=-318687.42857144,}, - [7]={["y"]=634424.85714286,["x"]=-318290.2857143,}, - }, + [AIRBASE.Caucasus.Kobuleti] = { PointsRunways = { [1] = { [1]={["y"]=634509.71428571,["x"]=-318339.42857144,}, @@ -399,20 +346,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=634510.28571429,["x"]=-318339.71428572,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - KrasnodarCenter = { - PointsBoundary = { - [1]={["y"]=366680.28571429,["x"]=11699.142857142,}, - [2]={["y"]=366654.28571429,["x"]=11225.142857142,}, - [3]={["y"]=367497.14285715,["x"]=11082.285714285,}, - [4]={["y"]=368025.71428572,["x"]=10396.57142857,}, - [5]={["y"]=369854.28571429,["x"]=11367.999999999,}, - [6]={["y"]=369840.00000001,["x"]=11910.857142856,}, - [7]={["y"]=366682.57142858,["x"]=11697.999999999,}, - }, + [AIRBASE.Caucasus.Krasnodar_Center] = { PointsRunways = { [1] = { [1]={["y"]=369205.42857144,["x"]=11789.142857142,}, @@ -422,24 +358,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=369208.85714286,["x"]=11788.57142857,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - KrasnodarPashkovsky = { - PointsBoundary = { - [1]={["y"]=386754,["x"]=6476.5714285703,}, - [2]={["y"]=389182.57142858,["x"]=8722.2857142846,}, - [3]={["y"]=388832.57142858,["x"]=9086.5714285703,}, - [4]={["y"]=386961.14285715,["x"]=7707.9999999989,}, - [5]={["y"]=385404,["x"]=9179.4285714274,}, - [6]={["y"]=383239.71428572,["x"]=7386.5714285703,}, - [7]={["y"]=383954,["x"]=6486.5714285703,}, - [8]={["y"]=385775.42857143,["x"]=8097.9999999989,}, - [9]={["y"]=386804,["x"]=7319.4285714274,}, - [10]={["y"]=386375.42857143,["x"]=6797.9999999989,}, - [11]={["y"]=386746.85714286,["x"]=6472.2857142846,}, - }, + [AIRBASE.Caucasus.Krasnodar_Pashkovsky] = { PointsRunways = { [1] = { [1]={["y"]=385891.14285715,["x"]=8416.5714285703,}, @@ -456,18 +377,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=386714.57142858,["x"]=6674.5714285703,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - Krymsk = { - PointsBoundary = { - [1]={["y"]=293338.00000001,["x"]=-7575.4285714297,}, - [2]={["y"]=295199.42857144,["x"]=-5434.0000000011,}, - [3]={["y"]=295595.14285715,["x"]=-6239.7142857154,}, - [4]={["y"]=294152.2857143,["x"]=-8325.4285714297,}, - [5]={["y"]=293345.14285715,["x"]=-7596.8571428582,}, - }, + [AIRBASE.Caucasus.Krymsk] = { PointsRunways = { [1] = { [1]={["y"]=293522.00000001,["x"]=-7567.4285714297,}, @@ -477,18 +389,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=293523.14285715,["x"]=-7568.2857142868,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - Kutaisi = { - PointsBoundary = { - [1]={["y"]=682087.42857143,["x"]=-284512.85714286,}, - [2]={["y"]=685387.42857143,["x"]=-283662.85714286,}, - [3]={["y"]=685294.57142857,["x"]=-284977.14285715,}, - [4]={["y"]=682744.57142857,["x"]=-286505.71428572,}, - [5]={["y"]=682094.57142857,["x"]=-284527.14285715,}, - }, + [AIRBASE.Caucasus.Kutaisi] = { PointsRunways = { [1] = { [1]={["y"]=682638,["x"]=-285202.28571429,}, @@ -498,19 +401,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=682638.28571429,["x"]=-285202.85714286,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - MaykopKhanskaya = { - PointsBoundary = { - [1]={["y"]=456876.28571429,["x"]=-27665.42857143,}, - [2]={["y"]=457800,["x"]=-28392.857142858,}, - [3]={["y"]=459368.57142857,["x"]=-26378.571428573,}, - [4]={["y"]=459425.71428572,["x"]=-25242.857142858,}, - [5]={["y"]=458961.42857143,["x"]=-24964.285714287,}, - [6]={["y"]=456878.57142857,["x"]=-27667.714285715,}, - }, + [AIRBASE.Caucasus.Maykop_Khanskaya] = { PointsRunways = { [1] = { [1]={["y"]=457005.42857143,["x"]=-27668.000000001,}, @@ -520,22 +413,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=457004.57142857,["x"]=-27669.714285715,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - MineralnyeVody = { - PointsBoundary = { - [1]={["y"]=703857.14285714,["x"]=-50226.000000002,}, - [2]={["y"]=707385.71428571,["x"]=-51911.714285716,}, - [3]={["y"]=707595.71428571,["x"]=-51434.857142859,}, - [4]={["y"]=707900,["x"]=-51568.857142859,}, - [5]={["y"]=707542.85714286,["x"]=-52326.000000002,}, - [6]={["y"]=706628.57142857,["x"]=-52568.857142859,}, - [7]={["y"]=705142.85714286,["x"]=-51790.285714288,}, - [8]={["y"]=703678.57142857,["x"]=-50611.714285716,}, - [9]={["y"]=703857.42857143,["x"]=-50226.857142859,}, - }, + [AIRBASE.Caucasus.Mineralnye_Vody] = { PointsRunways = { [1] = { [1]={["y"]=703904,["x"]=-50352.571428573,}, @@ -545,20 +425,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=703902,["x"]=-50352.000000002,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - Mozdok = { - PointsBoundary = { - [1]={["y"]=832123.42857143,["x"]=-83608.571428573,}, - [2]={["y"]=835916.28571429,["x"]=-83144.285714288,}, - [3]={["y"]=835474.28571429,["x"]=-84170.571428573,}, - [4]={["y"]=832911.42857143,["x"]=-84470.571428573,}, - [5]={["y"]=832487.71428572,["x"]=-85565.714285716,}, - [6]={["y"]=831573.42857143,["x"]=-85351.42857143,}, - [7]={["y"]=832123.71428572,["x"]=-83610.285714288,}, - }, + [AIRBASE.Caucasus.Mozdok] = { PointsRunways = { [1] = { [1]={["y"]=832201.14285715,["x"]=-83699.428571431,}, @@ -568,20 +437,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=832200.57142857,["x"]=-83700.000000002,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - Nalchik = { - PointsBoundary = { - [1]={["y"]=759370,["x"]=-125502.85714286,}, - [2]={["y"]=761384.28571429,["x"]=-124177.14285714,}, - [3]={["y"]=761472.85714286,["x"]=-124325.71428572,}, - [4]={["y"]=761092.85714286,["x"]=-125048.57142857,}, - [5]={["y"]=760295.71428572,["x"]=-125685.71428572,}, - [6]={["y"]=759444.28571429,["x"]=-125734.28571429,}, - [7]={["y"]=759375.71428572,["x"]=-125511.42857143,}, - }, + [AIRBASE.Caucasus.Nalchik] = { PointsRunways = { [1] = { [1]={["y"]=759454.28571429,["x"]=-125551.42857143,}, @@ -591,19 +449,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=759456,["x"]=-125552.57142857,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - Novorossiysk = { - PointsBoundary = { - [1]={["y"]=278677.71428573,["x"]=-41656.571428572,}, - [2]={["y"]=278446.2857143,["x"]=-41453.714285715,}, - [3]={["y"]=278989.14285716,["x"]=-40188.000000001,}, - [4]={["y"]=279717.71428573,["x"]=-39968.000000001,}, - [5]={["y"]=280020.57142859,["x"]=-40208.000000001,}, - [6]={["y"]=278674.85714287,["x"]=-41660.857142858,}, - }, + [AIRBASE.Caucasus.Novorossiysk] = { PointsRunways = { [1] = { [1]={["y"]=278673.14285716,["x"]=-41615.142857144,}, @@ -613,20 +461,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=278672.00000001,["x"]=-41614.857142858,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - SenakiKolkhi = { - PointsBoundary = { - [1]={["y"]=646036.57142857,["x"]=-281778.85714286,}, - [2]={["y"]=646045.14285714,["x"]=-281191.71428571,}, - [3]={["y"]=647032.28571429,["x"]=-280598.85714285,}, - [4]={["y"]=647669.42857143,["x"]=-281273.14285714,}, - [5]={["y"]=648323.71428571,["x"]=-281370.28571428,}, - [6]={["y"]=648520.85714286,["x"]=-281978.85714285,}, - [7]={["y"]=646039.42857143,["x"]=-281783.14285714,}, - }, + [AIRBASE.Caucasus.Senaki_Kolkhi] = { PointsRunways = { [1] = { [1]={["y"]=646060.85714285,["x"]=-281736,}, @@ -636,20 +473,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=646063.71428571,["x"]=-281738.85714286,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - SochiAdler = { - PointsBoundary = { - [1]={["y"]=460642.28571428,["x"]=-164861.71428571,}, - [2]={["y"]=462820.85714285,["x"]=-163368.85714286,}, - [3]={["y"]=463649.42857142,["x"]=-163340.28571429,}, - [4]={["y"]=463835.14285714,["x"]=-164040.28571429,}, - [5]={["y"]=462535.14285714,["x"]=-165654.57142857,}, - [6]={["y"]=460678,["x"]=-165247.42857143,}, - [7]={["y"]=460635.14285714,["x"]=-164876,}, - }, + [AIRBASE.Caucasus.Sochi_Adler] = { PointsRunways = { [1] = { [1]={["y"]=460831.42857143,["x"]=-165180,}, @@ -666,18 +492,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=460831.42857143,["x"]=-165177.14285714,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - Soganlug = { - PointsBoundary = { - [1]={["y"]=894530.85714286,["x"]=-316928.28571428,}, - [2]={["y"]=896422.28571428,["x"]=-318622.57142857,}, - [3]={["y"]=896090.85714286,["x"]=-318934,}, - [4]={["y"]=894019.42857143,["x"]=-317119.71428571,}, - [5]={["y"]=894533.71428571,["x"]=-316925.42857143,}, - }, + [AIRBASE.Caucasus.Soganlug] = { PointsRunways = { [1] = { [1]={["y"]=894525.71428571,["x"]=-316964,}, @@ -687,19 +504,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=894524.57142857,["x"]=-316963.71428571,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - SukhumiBabushara = { - PointsBoundary = { - [1]={["y"]=562541.14285714,["x"]=-219852.28571429,}, - [2]={["y"]=562691.14285714,["x"]=-219395.14285714,}, - [3]={["y"]=564326.85714286,["x"]=-219523.71428571,}, - [4]={["y"]=566262.57142857,["x"]=-221166.57142857,}, - [5]={["y"]=566069.71428571,["x"]=-221580.85714286,}, - [6]={["y"]=562534,["x"]=-219873.71428571,}, - }, + [AIRBASE.Caucasus.Sukhumi_Babushara] = { PointsRunways = { [1] = { [1]={["y"]=562684,["x"]=-219779.71428571,}, @@ -709,20 +516,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=562684.57142857,["x"]=-219782.57142857,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - TbilisiLochini = { - PointsBoundary = { - [1]={["y"]=895172.85714286,["x"]=-314667.42857143,}, - [2]={["y"]=895337.42857143,["x"]=-314143.14285714,}, - [3]={["y"]=895990.28571429,["x"]=-314036,}, - [4]={["y"]=897730.28571429,["x"]=-315284.57142857,}, - [5]={["y"]=897901.71428571,["x"]=-316284.57142857,}, - [6]={["y"]=897684.57142857,["x"]=-316618.85714286,}, - [7]={["y"]=895173.14285714,["x"]=-314667.42857143,}, - }, + [AIRBASE.Caucasus.Tbilisi_Lochini] = { PointsRunways = { [1] = { [1]={["y"]=895261.14285715,["x"]=-314652.28571428,}, @@ -739,21 +535,9 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=895606,["x"]=-314724.85714286,} }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - Vaziani = { - PointsBoundary = { - [1]={["y"]=902122,["x"]=-318163.71428572,}, - [2]={["y"]=902678.57142857,["x"]=-317594,}, - [3]={["y"]=903275.71428571,["x"]=-317405.42857143,}, - [4]={["y"]=903418.57142857,["x"]=-317891.14285714,}, - [5]={["y"]=904292.85714286,["x"]=-318748.28571429,}, - [6]={["y"]=904542,["x"]=-319740.85714286,}, - [7]={["y"]=904042,["x"]=-320166.57142857,}, - [8]={["y"]=902121.42857143,["x"]=-318164.85714286,}, - }, + [AIRBASE.Caucasus.Vaziani] = { PointsRunways = { [1] = { [1]={["y"]=902239.14285714,["x"]=-318190.85714286,}, @@ -763,8 +547,6 @@ AIRBASEPOLICE_CAUCASUS = { [5]={["y"]=902247.71428571,["x"]=-318190.85714286,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, }, @@ -773,11 +555,14 @@ AIRBASEPOLICE_CAUCASUS = { --- Creates a new AIRBASEPOLICE_CAUCASUS object. -- @param #AIRBASEPOLICE_CAUCASUS self -- @param SetClient A SET_CLIENT object that will contain the CLIENT objects to be monitored if they follow the rules of the airbase. +-- @param AirbaseNames A list {} of airbase names (Use AIRBASE.Caucasus enumerator). -- @return #AIRBASEPOLICE_CAUCASUS self -function AIRBASEPOLICE_CAUCASUS:New( SetClient ) +function AIRBASEPOLICE_CAUCASUS:New( SetClient, AirbaseNames ) -- Inherits from BASE - local self = BASE:Inherit( self, AIRBASEPOLICE_BASE:New( SetClient, self.Airbases ) ) + local self = BASE:Inherit( self, AIRBASEPOLICE_BASE:New( SetClient, self.Airbases, AirbaseNames ) ) + + -- -- AnapaVityazevo -- local AnapaVityazevoBoundary = GROUP:FindByName( "AnapaVityazevo Boundary" ) @@ -1053,27 +838,7 @@ end AIRBASEPOLICE_NEVADA = { ClassName = "AIRBASEPOLICE_NEVADA", Airbases = { - Nellis = { - PointsBoundary = { - [1]={["y"]=-17814.714285714,["x"]=-399823.14285714,}, - [2]={["y"]=-16875.857142857,["x"]=-398763.14285714,}, - [3]={["y"]=-16251.571428571,["x"]=-398988.85714286,}, - [4]={["y"]=-16163,["x"]=-398693.14285714,}, - [5]={["y"]=-16328.714285714,["x"]=-398034.57142857,}, - [6]={["y"]=-15943,["x"]=-397571.71428571,}, - [7]={["y"]=-15711.571428571,["x"]=-397551.71428571,}, - [8]={["y"]=-15748.714285714,["x"]=-396806,}, - [9]={["y"]=-16288.714285714,["x"]=-396517.42857143,}, - [10]={["y"]=-16751.571428571,["x"]=-396308.85714286,}, - [11]={["y"]=-17263,["x"]=-396234.57142857,}, - [12]={["y"]=-17577.285714286,["x"]=-396640.28571429,}, - [13]={["y"]=-17614.428571429,["x"]=-397400.28571429,}, - [14]={["y"]=-19405.857142857,["x"]=-399428.85714286,}, - [15]={["y"]=-19234.428571429,["x"]=-399683.14285714,}, - [16]={["y"]=-18708.714285714,["x"]=-399408.85714286,}, - [17]={["y"]=-18397.285714286,["x"]=-399657.42857143,}, - [18]={["y"]=-17814.428571429,["x"]=-399823.42857143,}, - }, + [AIRBASE.Nevada.Nellis_AFB] = { PointsRunways = { [1] = { [1]={["y"]=-18687,["x"]=-399380.28571429,}, @@ -1090,28 +855,9 @@ AIRBASEPOLICE_NEVADA = { [5]={["y"]=-18451.571428572,["x"]=-399580.85714285,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - McCarran = { - PointsBoundary = { - [1]={["y"]=-29455.285714286,["x"]=-416277.42857142,}, - [2]={["y"]=-28860.142857143,["x"]=-416492,}, - [3]={["y"]=-25044.428571429,["x"]=-416344.85714285,}, - [4]={["y"]=-24580.142857143,["x"]=-415959.14285714,}, - [5]={["y"]=-25073,["x"]=-415630.57142857,}, - [6]={["y"]=-25087.285714286,["x"]=-415130.57142857,}, - [7]={["y"]=-25830.142857143,["x"]=-414866.28571428,}, - [8]={["y"]=-26658.714285715,["x"]=-414880.57142857,}, - [9]={["y"]=-26973,["x"]=-415273.42857142,}, - [10]={["y"]=-27380.142857143,["x"]=-415187.71428571,}, - [11]={["y"]=-27715.857142857,["x"]=-414144.85714285,}, - [12]={["y"]=-27551.571428572,["x"]=-413473.42857142,}, - [13]={["y"]=-28630.142857143,["x"]=-413201.99999999,}, - [14]={["y"]=-29494.428571429,["x"]=-415437.71428571,}, - [15]={["y"]=-29455.571428572,["x"]=-416277.71428571,}, - }, + [AIRBASE.Nevada.McCarran_International_Airport] = { PointsRunways = { [1] = { [1]={["y"]=-29408.428571429,["x"]=-416016.28571428,}, @@ -1142,28 +888,9 @@ AIRBASEPOLICE_NEVADA = { [5]={["y"]=-29073.000000001,["x"]=-416386.85714284,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - Creech = { - PointsBoundary = { - [1]={["y"]=-74522.714285715,["x"]=-360887.99999998,}, - [2]={["y"]=-74197,["x"]=-360556.57142855,}, - [3]={["y"]=-74402.714285715,["x"]=-359639.42857141,}, - [4]={["y"]=-74637,["x"]=-359279.42857141,}, - [5]={["y"]=-75759.857142857,["x"]=-359005.14285712,}, - [6]={["y"]=-75834.142857143,["x"]=-359045.14285712,}, - [7]={["y"]=-75902.714285714,["x"]=-359782.28571427,}, - [8]={["y"]=-76099.857142857,["x"]=-360399.42857141,}, - [9]={["y"]=-77314.142857143,["x"]=-360219.42857141,}, - [10]={["y"]=-77728.428571429,["x"]=-360445.14285713,}, - [11]={["y"]=-77585.571428571,["x"]=-360585.14285713,}, - [12]={["y"]=-76471.285714286,["x"]=-360819.42857141,}, - [13]={["y"]=-76325.571428571,["x"]=-360942.28571427,}, - [14]={["y"]=-74671.857142857,["x"]=-360927.7142857,}, - [15]={["y"]=-74522.714285714,["x"]=-360888.85714284,}, - }, + [AIRBASE.Nevada.Creech_AFB] = { PointsRunways = { [1] = { [1]={["y"]=-74237.571428571,["x"]=-360591.7142857,}, @@ -1180,24 +907,9 @@ AIRBASEPOLICE_NEVADA = { [5]={["y"]=-75807.285714287,["x"]=-359073.42857142,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, - GroomLake = { - PointsBoundary = { - [1]={["y"]=-88916.714285714,["x"]=-289102.28571425,}, - [2]={["y"]=-87023.571428572,["x"]=-290388.57142857,}, - [3]={["y"]=-85916.428571429,["x"]=-290674.28571428,}, - [4]={["y"]=-87645.000000001,["x"]=-286567.14285714,}, - [5]={["y"]=-88380.714285715,["x"]=-286388.57142857,}, - [6]={["y"]=-89670.714285715,["x"]=-283524.28571428,}, - [7]={["y"]=-89797.857142858,["x"]=-283567.14285714,}, - [8]={["y"]=-88635.000000001,["x"]=-286749.99999999,}, - [9]={["y"]=-89177.857142858,["x"]=-287207.14285714,}, - [10]={["y"]=-89092.142857144,["x"]=-288892.85714285,}, - [11]={["y"]=-88917.000000001,["x"]=-289102.85714285,}, - }, + [AIRBASE.Nevada.Groom_Lake_AFB] = { PointsRunways = { [1] = { [1]={["y"]=-86039.000000001,["x"]=-290606.28571428,}, @@ -1214,8 +926,6 @@ AIRBASEPOLICE_NEVADA = { [5]={["y"]=-86808.142857143,["x"]=-290375.7142857,}, }, }, - ZoneBoundary = {}, - ZoneRunways = {}, MaximumSpeed = 50, }, }, @@ -1224,11 +934,12 @@ AIRBASEPOLICE_NEVADA = { --- Creates a new AIRBASEPOLICE_NEVADA object. -- @param #AIRBASEPOLICE_NEVADA self -- @param SetClient A SET_CLIENT object that will contain the CLIENT objects to be monitored if they follow the rules of the airbase. +-- @param AirbaseNames A list {} of airbase names (Use AIRBASE.Nevada enumerator). -- @return #AIRBASEPOLICE_NEVADA self -function AIRBASEPOLICE_NEVADA:New( SetClient ) +function AIRBASEPOLICE_NEVADA:New( SetClient, AirbaseNames ) -- Inherits from BASE - local self = BASE:Inherit( self, AIRBASEPOLICE_BASE:New( SetClient, self.Airbases ) ) + local self = BASE:Inherit( self, AIRBASEPOLICE_BASE:New( SetClient, self.Airbases, AirbaseNames ) ) -- -- Nellis -- local NellisBoundary = GROUP:FindByName( "Nellis Boundary" ) diff --git a/Moose Mission Setup/Moose.lua b/Moose Mission Setup/Moose.lua index c80cf58af..f5c80b970 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: 20171010_2141' ) +env.info( 'Moose Generation Timestamp: 20171021_1203' ) local base = _G diff --git a/Moose Mission Setup/Moose_.lua b/Moose Mission Setup/Moose_.lua index 03468a43a..f76d65845 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: 20171010_2141') +env.info('Moose Generation Timestamp: 20171021_1203') local base=_G __Moose={} __Moose.Include=function(IncludeFile) diff --git a/docs/Documentation/AI_A2A.html b/docs/Documentation/AI_A2A.html index 67ca9d37e..54b845efc 100644 --- a/docs/Documentation/AI_A2A.html +++ b/docs/Documentation/AI_A2A.html @@ -671,7 +671,6 @@
AIRBASEPOLICE_BASE| AIRBASEPOLICE_BASE.AirbaseNames | -- - | -||||||||
| AIRBASEPOLICE_BASE:Monitor(AirbaseNames) | -
- Monitor a table of airbase names. - |
- ||||||||
| AIRBASEPOLICE_BASE:New(SetClient, Airbases) | +AIRBASEPOLICE_BASE:New(SetClient, Airbases, AirbaseList) |
Creates a new AIRBASEPOLICE_BASE object. |
@@ -186,6 +174,12 @@
AIRBASEPOLICE_BASE.SetClient | + | +|||||
| AIRBASEPOLICE_BASE:SmokeRunways(SmokeColor) | +
+ Smoke the airbases runways. |
||||||||
| AIRBASEPOLICE_CAUCASUS:New(SetClient) | +AIRBASEPOLICE_CAUCASUS:New(SetClient, AirbaseNames) |
Creates a new AIRBASEPOLICE_CAUCASUS object. |
@@ -209,7 +203,7 @@
| AIRBASEPOLICE_NEVADA:New(SetClient) | +AIRBASEPOLICE_NEVADA:New(SetClient, AirbaseNames) |
Creates a new AIRBASEPOLICE_NEVADA object. |
@@ -418,49 +412,8 @@ AirbasePoliceCaucasus = AIRBASEPOLICE_NEVADA:New( AllClientsSet )
SPAWN:_TranslateRotate(SpawnIndex, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle) | - | -
| SPAWN.uncontrolled | -- |
Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning.
+Overwrite unit names by default with group name.
+When the first Spawn executes, all the Groups need to be made visible before start.
+Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned.