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 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 This generate a Bofors flak artillery group
""" """
@ -26,3 +29,7 @@ class BoforsGenerator(GroupGenerator):
self.add_unit(AirDefence.AAA_Bofors_40mm, "AAA#" + str(index), self.add_unit(AirDefence.AAA_Bofors_40mm, "AAA#" + str(index),
self.position.x + spacing*i, 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 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 This generate a German flak artillery group
""" """
@ -54,3 +65,7 @@ class FlakGenerator(GroupGenerator):
self.add_unit(Unarmed.Blitz_3_6_6700A, "AAA#" + str(index), self.add_unit(Unarmed.Blitz_3_6_6700A, "AAA#" + str(index),
self.position.x + 200 + 15*i + random.randint(1,5), 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 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 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 # Add a commander truck
self.add_unit(Unarmed.Blitz_3_6_6700A, "Blitz#", self.position.x - 35, self.position.y - 20, self.heading) 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 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 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.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(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)) 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 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 This generate a ZU23 insurgent flak artillery group
""" """
@ -26,3 +29,7 @@ class ZU23InsurgentGenerator(GroupGenerator):
self.add_unit(AirDefence.AAA_ZU_23_Insurgent_Closed, "AAA#" + str(index), self.add_unit(AirDefence.AAA_ZU_23_Insurgent_Closed, "AAA#" + str(index),
self.position.x + spacing*i, 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 game import Game
from gen.sam.group_generator import GroupGenerator from gen.sam.group_generator import GroupGenerator
from game.theater.theatergroundobject import SamGroundObject 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 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: def __init__(self, game: Game, ground_object: SamGroundObject) -> None:
ground_object.skynet_capable = True ground_object.skynet_capable = True
super().__init__(game, ground_object) 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 dcs.vehicles import AirDefence, Unarmed
from gen.sam.airdefensegroupgenerator import (
AirDefenseRange,
AirDefenseGroupGenerator,
)
from gen.sam.group_generator import GroupGenerator 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. 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. 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 # Add a truck
self.add_unit(Unarmed.Transport_KAMAZ_43101, "Truck#", self.position.x - 60, self.position.y - 20, self.heading) 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. 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. 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 # 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) 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.airdefensegroupgenerator import (
AirDefenseRange,
from gen.sam.group_generator import GroupGenerator 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 This generate a German flak artillery group using only free units, thus not requiring the WW2 asset pack
""" """
@ -37,3 +38,7 @@ class FreyaGenerator(GroupGenerator):
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#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#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 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 This generate an Avenger group
""" """
@ -20,3 +23,7 @@ class AvengerGenerator(GroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=110, coverage=180) positions = self.get_circular_position(num_launchers, launcher_distance=110, coverage=180)
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit(AirDefence.SAM_Avenger_M1097, "SPAA#" + str(i), position[0], position[1], position[2]) 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 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 This generate a Chaparral group
""" """
@ -20,3 +23,7 @@ class ChaparralGenerator(GroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=110, coverage=180) positions = self.get_circular_position(num_launchers, launcher_distance=110, coverage=180)
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit(AirDefence.SAM_Chaparral_M48, "SPAA#" + str(i), position[0], position[1], position[2]) 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 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 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(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) 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 import random
from typing import Iterable, List, Optional, Type from typing import Dict, Iterable, List, Optional, Type
from dcs.unitgroup import VehicleGroup from dcs.unitgroup import VehicleGroup
from dcs.vehicles import AirDefence from dcs.vehicles import AirDefence
@ -30,6 +30,7 @@ from gen.sam.ewrs import (
TallRackGenerator, TallRackGenerator,
) )
from gen.sam.freya_ewr import FreyaGenerator from gen.sam.freya_ewr import FreyaGenerator
from gen.sam.airdefensegroupgenerator import AirDefenseGroupGenerator
from gen.sam.group_generator import GroupGenerator from gen.sam.group_generator import GroupGenerator
from gen.sam.sam_avenger import AvengerGenerator from gen.sam.sam_avenger import AvengerGenerator
from gen.sam.sam_chaparral import ChaparralGenerator 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 import ZU23UralGenerator
from gen.sam.sam_zu23_ural_insurgent import ZU23UralInsurgentGenerator from gen.sam.sam_zu23_ural_insurgent import ZU23UralInsurgentGenerator
SAM_MAP = { SAM_MAP: Dict[str, Type[AirDefenseGroupGenerator]] = {
"HawkGenerator": HawkGenerator, "HawkGenerator": HawkGenerator,
"ZU23Generator": ZU23Generator, "ZU23Generator": ZU23Generator,
"ZU23UralGenerator": ZU23UralGenerator, "ZU23UralGenerator": ZU23UralGenerator,

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence 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 This generate an HAWK group
""" """
@ -26,3 +29,7 @@ class HawkGenerator(GenericSamGroupGenerator):
for i, position in enumerate(positions): 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 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 This generate an HQ7 group
""" """
@ -26,3 +29,7 @@ class HQ7Generator(GenericSamGroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=120, coverage=360) positions = self.get_circular_position(num_launchers, launcher_distance=120, coverage=360)
for i, position in enumerate(positions): 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 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 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) positions = self.get_circular_position(num_launchers, launcher_distance=110, coverage=180)
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit(AirDefence.SAM_Linebacker_M6, "M6#" + str(i), position[0], position[1], position[2]) 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 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 This generate a Patriot group
""" """
@ -31,3 +34,7 @@ class PatriotGenerator(GenericSamGroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=200, coverage=360) positions = self.get_circular_position(num_launchers, launcher_distance=200, coverage=360)
for i, position in enumerate(positions): 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 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 This generate a Rapier Group
""" """
@ -22,3 +25,7 @@ class RapierGenerator(GenericSamGroupGenerator):
for i, position in enumerate(positions): 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 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 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(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) 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 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 This generate a SA-10 group
""" """
@ -40,6 +43,10 @@ class SA10Generator(GenericSamGroupGenerator):
self.generate_defensive_groups() self.generate_defensive_groups()
@classmethod
def range(cls) -> AirDefenseRange:
return AirDefenseRange.Long
def generate_defensive_groups(self) -> None: def generate_defensive_groups(self) -> None:
# AAA for defending against close targets. # AAA for defending against close targets.
num_launchers = random.randint(6, 8) num_launchers = random.randint(6, 8)

View File

@ -2,10 +2,13 @@ import random
from dcs.vehicles import AirDefence 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 This generate a SA-11 group
""" """
@ -22,3 +25,7 @@ class SA11Generator(GenericSamGroupGenerator):
for i, position in enumerate(positions): 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 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 This generate a SA-13 group
""" """
@ -21,3 +24,7 @@ class SA13Generator(GroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=120, coverage=360) positions = self.get_circular_position(num_launchers, launcher_distance=120, coverage=360)
for i, position in enumerate(positions): 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 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 This generate a SA-15 group
""" """
@ -15,3 +18,7 @@ class SA15Generator(GroupGenerator):
self.add_unit(AirDefence.SAM_SA_15_Tor_9A331, "ADS", self.position.x, self.position.y, self.heading) 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_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 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 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) positions = self.get_circular_position(num_launchers, launcher_distance=120, coverage=180)
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit(AirDefence.SAM_SA_19_Tunguska_2S6, "LN#" + str(i), position[0], position[1], position[2]) 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 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 This generate a SA-2 group
""" """
@ -22,3 +25,7 @@ class SA2Generator(GenericSamGroupGenerator):
for i, position in enumerate(positions): 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 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 This generate a SA-3 group
""" """
@ -22,3 +25,7 @@ class SA3Generator(GenericSamGroupGenerator):
for i, position in enumerate(positions): 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 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 This generate a SA-6 group
""" """
@ -21,3 +24,7 @@ class SA6Generator(GenericSamGroupGenerator):
for i, position in enumerate(positions): 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 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 This generate a SA-8 group
""" """
@ -16,3 +17,7 @@ class SA8Generator(GroupGenerator):
def generate(self): 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_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) 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 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 This generate a SA-9 group
""" """
@ -21,3 +24,7 @@ class SA9Generator(GroupGenerator):
positions = self.get_circular_position(num_launchers, launcher_distance=120, coverage=360) positions = self.get_circular_position(num_launchers, launcher_distance=120, coverage=360)
for i, position in enumerate(positions): 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 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 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(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) 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 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 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) positions = self.get_circular_position(num_launchers, launcher_distance=120, coverage=180)
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit(AirDefence.SPAAA_ZSU_23_4_Shilka, "SPAA#" + str(i), position[0], position[1], position[2]) 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 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 This generate a ZU23 flak artillery group
""" """
@ -26,3 +29,7 @@ class ZU23Generator(GroupGenerator):
self.add_unit(AirDefence.AAA_ZU_23_Closed, "AAA#" + str(index), self.add_unit(AirDefence.AAA_ZU_23_Closed, "AAA#" + str(index),
self.position.x + spacing*i, 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 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 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) positions = self.get_circular_position(num_launchers, launcher_distance=80, coverage=360)
for i, position in enumerate(positions): 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]) 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 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 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) positions = self.get_circular_position(num_launchers, launcher_distance=80, coverage=360)
for i, position in enumerate(positions): 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]) 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