Add range property to all air defense generators.

This commit is contained in:
Dan Albert 2020-11-27 16:52:05 -08:00
parent e73cf68def
commit fcdb22db5b
33 changed files with 327 additions and 89 deletions

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class BoforsGenerator(GroupGenerator):
class BoforsGenerator(AirDefenseGroupGenerator):
"""
This generate a Bofors flak artillery group
"""
@ -25,4 +28,8 @@ class BoforsGenerator(GroupGenerator):
index = index+1
self.add_unit(AirDefence.AAA_Bofors_40mm, "AAA#" + str(index),
self.position.x + spacing*i,
self.position.y + spacing*j, self.heading)
self.position.y + spacing*j, self.heading)
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -2,11 +2,22 @@ import random
from dcs.vehicles import AirDefence, Unarmed
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
GFLAK = [AirDefence.AAA_Flak_Vierling_38, AirDefence.AAA_8_8cm_Flak_18, AirDefence.AAA_8_8cm_Flak_36, AirDefence.AAA_8_8cm_Flak_37, AirDefence.AAA_8_8cm_Flak_41, AirDefence.AAA_Flak_38]
GFLAK = [
AirDefence.AAA_Flak_Vierling_38,
AirDefence.AAA_8_8cm_Flak_18,
AirDefence.AAA_8_8cm_Flak_36,
AirDefence.AAA_8_8cm_Flak_37,
AirDefence.AAA_8_8cm_Flak_41,
AirDefence.AAA_Flak_38,
]
class FlakGenerator(GroupGenerator):
class FlakGenerator(AirDefenseGroupGenerator):
"""
This generate a German flak artillery group
"""
@ -53,4 +64,8 @@ class FlakGenerator(GroupGenerator):
for j in range(int(max(1,grid_x/2))):
self.add_unit(Unarmed.Blitz_3_6_6700A, "AAA#" + str(index),
self.position.x + 200 + 15*i + random.randint(1,5),
self.position.y + 15*j + random.randint(1,5), 90)
self.position.y + 15*j + random.randint(1,5), 90)
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence, Unarmed
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class Flak18Generator(GroupGenerator):
class Flak18Generator(AirDefenseGroupGenerator):
"""
This generate a German flak artillery group using only free units, thus not requiring the WW2 asset pack
"""
@ -27,3 +30,7 @@ class Flak18Generator(GroupGenerator):
# Add a commander truck
self.add_unit(Unarmed.Blitz_3_6_6700A, "Blitz#", self.position.x - 35, self.position.y - 20, self.heading)
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -1,11 +1,14 @@
import random
from dcs.vehicles import AirDefence, Unarmed, Armor
from dcs.vehicles import AirDefence, Armor, Unarmed
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class AllyWW2FlakGenerator(GroupGenerator):
class AllyWW2FlakGenerator(AirDefenseGroupGenerator):
"""
This generate an ally flak artillery group
"""
@ -32,3 +35,7 @@ class AllyWW2FlakGenerator(GroupGenerator):
self.add_unit(Armor.M30_Cargo_Carrier, "LOG#1", self.position.x, self.position.y + 20, random.randint(0, 360))
self.add_unit(Armor.M4_Tractor, "LOG#2", self.position.x + 20, self.position.y, random.randint(0, 360))
self.add_unit(Unarmed.Bedford_MWD, "LOG#3", self.position.x - 20, self.position.y, random.randint(0, 360))
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class ZU23InsurgentGenerator(GroupGenerator):
class ZU23InsurgentGenerator(AirDefenseGroupGenerator):
"""
This generate a ZU23 insurgent flak artillery group
"""
@ -25,4 +28,8 @@ class ZU23InsurgentGenerator(GroupGenerator):
index = index+1
self.add_unit(AirDefence.AAA_ZU_23_Insurgent_Closed, "AAA#" + str(index),
self.position.x + spacing*i,
self.position.y + spacing*j, self.heading)
self.position.y + spacing*j, self.heading)
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -1,11 +1,18 @@
from abc import ABC
from abc import ABC, abstractmethod
from enum import Enum
from game import Game
from gen.sam.group_generator import GroupGenerator
from game.theater.theatergroundobject import SamGroundObject
class GenericSamGroupGenerator(GroupGenerator, ABC):
class AirDefenseRange(Enum):
Short = "short"
Medium = "medium"
Long = "long"
class AirDefenseGroupGenerator(GroupGenerator, ABC):
"""
This is the base for all SAM group generators
"""
@ -13,3 +20,8 @@ class GenericSamGroupGenerator(GroupGenerator, ABC):
def __init__(self, game: Game, ground_object: SamGroundObject) -> None:
ground_object.skynet_capable = True
super().__init__(game, ground_object)
@classmethod
@abstractmethod
def range(cls) -> AirDefenseRange:
...

View File

@ -2,10 +2,14 @@ import random
from dcs.vehicles import AirDefence, Unarmed
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
from gen.sam.group_generator import GroupGenerator
class EarlyColdWarFlakGenerator(GroupGenerator):
class EarlyColdWarFlakGenerator(AirDefenseGroupGenerator):
"""
This generator attempt to mimic an early cold-war era flak AAA site.
The Flak 18 88mm is used as the main long range gun and 2 Bofors 40mm guns provide short range protection.
@ -38,8 +42,12 @@ class EarlyColdWarFlakGenerator(GroupGenerator):
# Add a truck
self.add_unit(Unarmed.Transport_KAMAZ_43101, "Truck#", self.position.x - 60, self.position.y - 20, self.heading)
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short
class ColdWarFlakGenerator(GroupGenerator):
class ColdWarFlakGenerator(AirDefenseGroupGenerator):
"""
This generator attempt to mimic a cold-war era flak AAA site.
The Flak 18 88mm is used as the main long range gun while 2 Zu-23 guns provide short range protection.
@ -70,3 +78,7 @@ class ColdWarFlakGenerator(GroupGenerator):
# Add a P19 Radar for EWR
self.add_unit(AirDefence.SAM_SR_P_19, "SR#0", self.position.x - 60, self.position.y - 20, self.heading)
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -1,11 +1,12 @@
import random
from dcs.vehicles import AirDefence, Infantry, Unarmed
from dcs.vehicles import AirDefence, Unarmed, Infantry
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class FreyaGenerator(GroupGenerator):
class FreyaGenerator(AirDefenseGroupGenerator):
"""
This generate a German flak artillery group using only free units, thus not requiring the WW2 asset pack
"""
@ -36,4 +37,8 @@ class FreyaGenerator(GroupGenerator):
self.add_unit(AirDefence.AAA_Kdo_G_40, "Telemeter#1", self.position.x + 20, self.position.y - 10, self.heading)
self.add_unit(Infantry.Infantry_Mauser_98, "Inf#1", self.position.x + 20, self.position.y - 14, self.heading)
self.add_unit(Infantry.Infantry_Mauser_98, "Inf#2", self.position.x + 20, self.position.y - 22, self.heading)
self.add_unit(Infantry.Infantry_Mauser_98, "Inf#3", self.position.x + 20, self.position.y - 24, self.heading + 45)
self.add_unit(Infantry.Infantry_Mauser_98, "Inf#3", self.position.x + 20, self.position.y - 24, self.heading + 45)
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence, Unarmed
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class AvengerGenerator(GroupGenerator):
class AvengerGenerator(AirDefenseGroupGenerator):
"""
This generate an Avenger group
"""
@ -20,3 +23,7 @@ class AvengerGenerator(GroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=110, coverage=180)
for i, position in enumerate(positions):
self.add_unit(AirDefence.SAM_Avenger_M1097, "SPAA#" + str(i), position[0], position[1], position[2])
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence, Unarmed
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class ChaparralGenerator(GroupGenerator):
class ChaparralGenerator(AirDefenseGroupGenerator):
"""
This generate a Chaparral group
"""
@ -20,3 +23,7 @@ class ChaparralGenerator(GroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=110, coverage=180)
for i, position in enumerate(positions):
self.add_unit(AirDefence.SAM_Chaparral_M48, "SPAA#" + str(i), position[0], position[1], position[2])
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence, Unarmed
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class GepardGenerator(GroupGenerator):
class GepardGenerator(AirDefenseGroupGenerator):
"""
This generate a Gepard group
"""
@ -19,3 +22,6 @@ class GepardGenerator(GroupGenerator):
self.add_unit(AirDefence.SPAAA_Gepard, "SPAAA2", self.position.x, self.position.y, self.heading)
self.add_unit(Unarmed.Transport_M818, "TRUCK", self.position.x + 80, self.position.y, self.heading)
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -1,5 +1,5 @@
import random
from typing import Iterable, List, Optional, Type
from typing import Dict, Iterable, List, Optional, Type
from dcs.unitgroup import VehicleGroup
from dcs.vehicles import AirDefence
@ -30,6 +30,7 @@ from gen.sam.ewrs import (
TallRackGenerator,
)
from gen.sam.freya_ewr import FreyaGenerator
from gen.sam.airdefensegroupgenerator import AirDefenseGroupGenerator
from gen.sam.group_generator import GroupGenerator
from gen.sam.sam_avenger import AvengerGenerator
from gen.sam.sam_chaparral import ChaparralGenerator
@ -60,7 +61,7 @@ from gen.sam.sam_zu23 import ZU23Generator
from gen.sam.sam_zu23_ural import ZU23UralGenerator
from gen.sam.sam_zu23_ural_insurgent import ZU23UralInsurgentGenerator
SAM_MAP = {
SAM_MAP: Dict[str, Type[AirDefenseGroupGenerator]] = {
"HawkGenerator": HawkGenerator,
"ZU23Generator": ZU23Generator,
"ZU23UralGenerator": ZU23UralGenerator,

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence
from gen.sam.genericsam_group_generator import GenericSamGroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class HawkGenerator(GenericSamGroupGenerator):
class HawkGenerator(AirDefenseGroupGenerator):
"""
This generate an HAWK group
"""
@ -25,4 +28,8 @@ class HawkGenerator(GenericSamGroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=120, coverage=180)
for i, position in enumerate(positions):
self.add_unit(AirDefence.SAM_Hawk_LN_M192, "LN#" + str(i), position[0], position[1], position[2])
self.add_unit(AirDefence.SAM_Hawk_LN_M192, "LN#" + str(i), position[0], position[1], position[2])
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Medium

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence
from gen.sam.genericsam_group_generator import GenericSamGroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class HQ7Generator(GenericSamGroupGenerator):
class HQ7Generator(AirDefenseGroupGenerator):
"""
This generate an HQ7 group
"""
@ -25,4 +28,8 @@ class HQ7Generator(GenericSamGroupGenerator):
if num_launchers > 0:
positions = self.get_circular_position(num_launchers, launcher_distance=120, coverage=360)
for i, position in enumerate(positions):
self.add_unit(AirDefence.HQ_7_Self_Propelled_LN, "LN#" + str(i), position[0], position[1], position[2])
self.add_unit(AirDefence.HQ_7_Self_Propelled_LN, "LN#" + str(i), position[0], position[1], position[2])
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence, Unarmed
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class LinebackerGenerator(GroupGenerator):
class LinebackerGenerator(AirDefenseGroupGenerator):
"""
This generate an m6 linebacker group
"""
@ -20,3 +23,7 @@ class LinebackerGenerator(GroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=110, coverage=180)
for i, position in enumerate(positions):
self.add_unit(AirDefence.SAM_Linebacker_M6, "M6#" + str(i), position[0], position[1], position[2])
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence
from gen.sam.genericsam_group_generator import GenericSamGroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class PatriotGenerator(GenericSamGroupGenerator):
class PatriotGenerator(AirDefenseGroupGenerator):
"""
This generate a Patriot group
"""
@ -30,4 +33,8 @@ class PatriotGenerator(GenericSamGroupGenerator):
num_launchers = random.randint(3, 4)
positions = self.get_circular_position(num_launchers, launcher_distance=200, coverage=360)
for i, position in enumerate(positions):
self.add_unit(AirDefence.AAA_Vulcan_M163, "SPAAA#" + str(i), position[0], position[1], position[2])
self.add_unit(AirDefence.AAA_Vulcan_M163, "SPAAA#" + str(i), position[0], position[1], position[2])
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Long

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence
from gen.sam.genericsam_group_generator import GenericSamGroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class RapierGenerator(GenericSamGroupGenerator):
class RapierGenerator(AirDefenseGroupGenerator):
"""
This generate a Rapier Group
"""
@ -21,4 +24,8 @@ class RapierGenerator(GenericSamGroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=80, coverage=240)
for i, position in enumerate(positions):
self.add_unit(AirDefence.Rapier_FSA_Launcher, "LN#" + str(i), position[0], position[1], position[2])
self.add_unit(AirDefence.Rapier_FSA_Launcher, "LN#" + str(i), position[0], position[1], position[2])
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -1,9 +1,12 @@
from dcs.vehicles import AirDefence, Unarmed
from gen.sam.genericsam_group_generator import GenericSamGroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class RolandGenerator(GenericSamGroupGenerator):
class RolandGenerator(AirDefenseGroupGenerator):
"""
This generate a Roland group
"""
@ -16,3 +19,6 @@ class RolandGenerator(GenericSamGroupGenerator):
self.add_unit(AirDefence.SAM_Roland_ADS, "ADS", self.position.x, self.position.y, self.heading)
self.add_unit(Unarmed.Transport_M818, "TRUCK", self.position.x + 80, self.position.y, self.heading)
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence
from gen.sam.genericsam_group_generator import GenericSamGroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class SA10Generator(GenericSamGroupGenerator):
class SA10Generator(AirDefenseGroupGenerator):
"""
This generate a SA-10 group
"""
@ -40,6 +43,10 @@ class SA10Generator(GenericSamGroupGenerator):
self.generate_defensive_groups()
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Long
def generate_defensive_groups(self) -> None:
# AAA for defending against close targets.
num_launchers = random.randint(6, 8)

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence
from gen.sam.genericsam_group_generator import GenericSamGroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class SA11Generator(GenericSamGroupGenerator):
class SA11Generator(AirDefenseGroupGenerator):
"""
This generate a SA-11 group
"""
@ -21,4 +24,8 @@ class SA11Generator(GenericSamGroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=140, coverage=180)
for i, position in enumerate(positions):
self.add_unit(AirDefence.SAM_SA_11_Buk_LN_9A310M1, "LN#" + str(i), position[0], position[1], position[2])
self.add_unit(AirDefence.SAM_SA_11_Buk_LN_9A310M1, "LN#" + str(i), position[0], position[1], position[2])
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Medium

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence, Unarmed
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class SA13Generator(GroupGenerator):
class SA13Generator(AirDefenseGroupGenerator):
"""
This generate a SA-13 group
"""
@ -20,4 +23,8 @@ class SA13Generator(GroupGenerator):
num_launchers = random.randint(2, 3)
positions = self.get_circular_position(num_launchers, launcher_distance=120, coverage=360)
for i, position in enumerate(positions):
self.add_unit(AirDefence.SAM_SA_13_Strela_10M3_9A35M3, "LN#" + str(i), position[0], position[1], position[2])
self.add_unit(AirDefence.SAM_SA_13_Strela_10M3_9A35M3, "LN#" + str(i), position[0], position[1], position[2])
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -1,9 +1,12 @@
from dcs.vehicles import AirDefence, Unarmed
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class SA15Generator(GroupGenerator):
class SA15Generator(AirDefenseGroupGenerator):
"""
This generate a SA-15 group
"""
@ -14,4 +17,8 @@ class SA15Generator(GroupGenerator):
def generate(self):
self.add_unit(AirDefence.SAM_SA_15_Tor_9A331, "ADS", self.position.x, self.position.y, self.heading)
self.add_unit(Unarmed.Transport_UAZ_469, "EWR", self.position.x + 40, self.position.y, self.heading)
self.add_unit(Unarmed.Transport_KAMAZ_43101, "TRUCK", self.position.x + 80, self.position.y, self.heading)
self.add_unit(Unarmed.Transport_KAMAZ_43101, "TRUCK", self.position.x + 80, self.position.y, self.heading)
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Medium

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class SA19Generator(GroupGenerator):
class SA19Generator(AirDefenseGroupGenerator):
"""
This generate a SA-19 group
"""
@ -22,3 +25,7 @@ class SA19Generator(GroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=120, coverage=180)
for i, position in enumerate(positions):
self.add_unit(AirDefence.SAM_SA_19_Tunguska_2S6, "LN#" + str(i), position[0], position[1], position[2])
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence
from gen.sam.genericsam_group_generator import GenericSamGroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class SA2Generator(GenericSamGroupGenerator):
class SA2Generator(AirDefenseGroupGenerator):
"""
This generate a SA-2 group
"""
@ -21,4 +24,8 @@ class SA2Generator(GenericSamGroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=120, coverage=180)
for i, position in enumerate(positions):
self.add_unit(AirDefence.SAM_SA_2_LN_SM_90, "LN#" + str(i), position[0], position[1], position[2])
self.add_unit(AirDefence.SAM_SA_2_LN_SM_90, "LN#" + str(i), position[0], position[1], position[2])
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Medium

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence
from gen.sam.genericsam_group_generator import GenericSamGroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class SA3Generator(GenericSamGroupGenerator):
class SA3Generator(AirDefenseGroupGenerator):
"""
This generate a SA-3 group
"""
@ -21,4 +24,8 @@ class SA3Generator(GenericSamGroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=120, coverage=180)
for i, position in enumerate(positions):
self.add_unit(AirDefence.SAM_SA_3_S_125_LN_5P73, "LN#" + str(i), position[0], position[1], position[2])
self.add_unit(AirDefence.SAM_SA_3_S_125_LN_5P73, "LN#" + str(i), position[0], position[1], position[2])
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Medium

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence
from gen.sam.genericsam_group_generator import GenericSamGroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class SA6Generator(GenericSamGroupGenerator):
class SA6Generator(AirDefenseGroupGenerator):
"""
This generate a SA-6 group
"""
@ -20,4 +23,8 @@ class SA6Generator(GenericSamGroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=120, coverage=360)
for i, position in enumerate(positions):
self.add_unit(AirDefence.SAM_SA_6_Kub_LN_2P25, "LN#" + str(i), position[0], position[1], position[2])
self.add_unit(AirDefence.SAM_SA_6_Kub_LN_2P25, "LN#" + str(i), position[0], position[1], position[2])
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Medium

View File

@ -1,11 +1,12 @@
import random
from dcs.vehicles import AirDefence
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class SA8Generator(GroupGenerator):
class SA8Generator(AirDefenseGroupGenerator):
"""
This generate a SA-8 group
"""
@ -16,3 +17,7 @@ class SA8Generator(GroupGenerator):
def generate(self):
self.add_unit(AirDefence.SAM_SA_8_Osa_9A33, "OSA", self.position.x, self.position.y, self.heading)
self.add_unit(AirDefence.SAM_SA_8_Osa_LD_9T217, "LD", self.position.x + 20, self.position.y, self.heading)
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Medium

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence, Unarmed
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class SA9Generator(GroupGenerator):
class SA9Generator(AirDefenseGroupGenerator):
"""
This generate a SA-9 group
"""
@ -20,4 +23,8 @@ class SA9Generator(GroupGenerator):
num_launchers = random.randint(2, 3)
positions = self.get_circular_position(num_launchers, launcher_distance=120, coverage=360)
for i, position in enumerate(positions):
self.add_unit(AirDefence.SAM_SA_9_Strela_1_9P31, "LN#" + str(i), position[0], position[1], position[2])
self.add_unit(AirDefence.SAM_SA_9_Strela_1_9P31, "LN#" + str(i), position[0], position[1], position[2])
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence, Unarmed
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class VulcanGenerator(GroupGenerator):
class VulcanGenerator(AirDefenseGroupGenerator):
"""
This generate a Vulcan group
"""
@ -19,3 +22,7 @@ class VulcanGenerator(GroupGenerator):
self.add_unit(AirDefence.AAA_Vulcan_M163, "SPAAA2", self.position.x, self.position.y, self.heading)
self.add_unit(Unarmed.Transport_M818, "TRUCK", self.position.x + 80, self.position.y, self.heading)
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class ZSU23Generator(GroupGenerator):
class ZSU23Generator(AirDefenseGroupGenerator):
"""
This generate a ZSU 23 group
"""
@ -19,3 +22,7 @@ class ZSU23Generator(GroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=120, coverage=180)
for i, position in enumerate(positions):
self.add_unit(AirDefence.SPAAA_ZSU_23_4_Shilka, "SPAA#" + str(i), position[0], position[1], position[2])
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class ZU23Generator(GroupGenerator):
class ZU23Generator(AirDefenseGroupGenerator):
"""
This generate a ZU23 flak artillery group
"""
@ -25,4 +28,8 @@ class ZU23Generator(GroupGenerator):
index = index+1
self.add_unit(AirDefence.AAA_ZU_23_Closed, "AAA#" + str(index),
self.position.x + spacing*i,
self.position.y + spacing*j, self.heading)
self.position.y + spacing*j, self.heading)
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class ZU23UralGenerator(GroupGenerator):
class ZU23UralGenerator(AirDefenseGroupGenerator):
"""
This generate a Zu23 Ural group
"""
@ -19,3 +22,7 @@ class ZU23UralGenerator(GroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=80, coverage=360)
for i, position in enumerate(positions):
self.add_unit(AirDefence.AAA_ZU_23_on_Ural_375, "SPAA#" + str(i), position[0], position[1], position[2])
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence
from gen.sam.group_generator import GroupGenerator
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
class ZU23UralInsurgentGenerator(GroupGenerator):
class ZU23UralInsurgentGenerator(AirDefenseGroupGenerator):
"""
This generate a Zu23 Ural group
"""
@ -19,3 +22,8 @@ class ZU23UralInsurgentGenerator(GroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=80, coverage=360)
for i, position in enumerate(positions):
self.add_unit(AirDefence.AAA_ZU_23_Insurgent_on_Ural_375, "SPAA#" + str(i), position[0], position[1], position[2])
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Short