mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Prepare the generators for template migration
adopt armor and ship generators for randomization
This commit is contained in:
parent
9e6b1cf716
commit
6baf36c587
@ -1,40 +0,0 @@
|
|||||||
import logging
|
|
||||||
import random
|
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
from dcs.unitgroup import VehicleGroup
|
|
||||||
|
|
||||||
from game import Game
|
|
||||||
from game.factions import FACTIONS
|
|
||||||
from game.theater.theatergroundobject import CoastalSiteGroundObject
|
|
||||||
from gen.coastal.silkworm import SilkwormGenerator
|
|
||||||
|
|
||||||
COASTAL_MAP = {
|
|
||||||
"SilkwormGenerator": SilkwormGenerator,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def generate_coastal_group(
|
|
||||||
game: Game, ground_object: CoastalSiteGroundObject, faction_name: str
|
|
||||||
) -> Optional[VehicleGroup]:
|
|
||||||
"""
|
|
||||||
This generate a coastal defenses group
|
|
||||||
:return: The generated group, or None if this faction does not support coastal
|
|
||||||
defenses.
|
|
||||||
"""
|
|
||||||
faction = FACTIONS[faction_name]
|
|
||||||
if len(faction.coastal_defenses) > 0:
|
|
||||||
generators = faction.coastal_defenses
|
|
||||||
if len(generators) > 0:
|
|
||||||
gen = random.choice(generators)
|
|
||||||
if gen in COASTAL_MAP.keys():
|
|
||||||
generator = COASTAL_MAP[gen](game, ground_object, faction)
|
|
||||||
generator.generate()
|
|
||||||
return generator.get_generated_group()
|
|
||||||
else:
|
|
||||||
logging.info(
|
|
||||||
"Unable to generate missile group, generator : "
|
|
||||||
+ str(gen)
|
|
||||||
+ "does not exists"
|
|
||||||
)
|
|
||||||
return None
|
|
||||||
@ -1,124 +0,0 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from gen.sam.group_generator import ShipGroupGenerator
|
|
||||||
from game.utils import Heading
|
|
||||||
|
|
||||||
from dcs.ships import USS_Arleigh_Burke_IIa, TICONDEROG
|
|
||||||
|
|
||||||
|
|
||||||
class CarrierGroupGenerator(ShipGroupGenerator):
|
|
||||||
def generate(self) -> None:
|
|
||||||
|
|
||||||
# Carrier Strike Group 8
|
|
||||||
if self.faction.carrier_names[0] == "Carrier Strike Group 8":
|
|
||||||
carrier_type = random.choice(self.faction.aircraft_carrier)
|
|
||||||
|
|
||||||
self.add_unit(
|
|
||||||
carrier_type,
|
|
||||||
"CVN-75 Harry S. Truman",
|
|
||||||
self.position.x,
|
|
||||||
self.position.y,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
|
|
||||||
# Add Arleigh Burke escort
|
|
||||||
self.add_unit(
|
|
||||||
USS_Arleigh_Burke_IIa,
|
|
||||||
"USS Ramage",
|
|
||||||
self.position.x + 6482,
|
|
||||||
self.position.y + 6667,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.add_unit(
|
|
||||||
USS_Arleigh_Burke_IIa,
|
|
||||||
"USS Mitscher",
|
|
||||||
self.position.x - 7963,
|
|
||||||
self.position.y + 7037,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.add_unit(
|
|
||||||
USS_Arleigh_Burke_IIa,
|
|
||||||
"USS Forrest Sherman",
|
|
||||||
self.position.x - 7408,
|
|
||||||
self.position.y - 7408,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.add_unit(
|
|
||||||
USS_Arleigh_Burke_IIa,
|
|
||||||
"USS Lassen",
|
|
||||||
self.position.x + 8704,
|
|
||||||
self.position.y - 6296,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
|
|
||||||
# Add Ticonderoga escort
|
|
||||||
if self.heading >= Heading.from_degrees(180):
|
|
||||||
self.add_unit(
|
|
||||||
TICONDEROG,
|
|
||||||
"USS Hué City",
|
|
||||||
self.position.x + 2222,
|
|
||||||
self.position.y - 3333,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
self.add_unit(
|
|
||||||
TICONDEROG,
|
|
||||||
"USS Hué City",
|
|
||||||
self.position.x - 3333,
|
|
||||||
self.position.y + 2222,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.get_generated_group().points[0].speed = 20
|
|
||||||
##################################################################################################
|
|
||||||
# Add carrier for normal generation
|
|
||||||
else:
|
|
||||||
if len(self.faction.aircraft_carrier) > 0:
|
|
||||||
carrier_type = random.choice(self.faction.aircraft_carrier)
|
|
||||||
self.add_unit(
|
|
||||||
carrier_type,
|
|
||||||
"Carrier",
|
|
||||||
self.position.x,
|
|
||||||
self.position.y,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
return
|
|
||||||
|
|
||||||
# Add destroyers escort
|
|
||||||
if len(self.faction.destroyers) > 0:
|
|
||||||
dd_type = random.choice(self.faction.destroyers)
|
|
||||||
self.add_unit(
|
|
||||||
dd_type,
|
|
||||||
"DD1",
|
|
||||||
self.position.x + 2500,
|
|
||||||
self.position.y + 4500,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
self.add_unit(
|
|
||||||
dd_type,
|
|
||||||
"DD2",
|
|
||||||
self.position.x + 2500,
|
|
||||||
self.position.y - 4500,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.add_unit(
|
|
||||||
dd_type,
|
|
||||||
"DD3",
|
|
||||||
self.position.x + 4500,
|
|
||||||
self.position.y + 8500,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
self.add_unit(
|
|
||||||
dd_type,
|
|
||||||
"DD4",
|
|
||||||
self.position.x + 4500,
|
|
||||||
self.position.y - 8500,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.get_generated_group().points[0].speed = 20
|
|
||||||
@ -1,70 +0,0 @@
|
|||||||
from __future__ import annotations
|
|
||||||
|
|
||||||
import random
|
|
||||||
from typing import TYPE_CHECKING
|
|
||||||
|
|
||||||
from dcs.ships import (
|
|
||||||
Type_052C,
|
|
||||||
Type_052B,
|
|
||||||
Type_054A,
|
|
||||||
)
|
|
||||||
|
|
||||||
from game.factions.faction import Faction
|
|
||||||
from game.theater.theatergroundobject import ShipGroundObject
|
|
||||||
from gen.fleet.dd_group import DDGroupGenerator
|
|
||||||
from gen.sam.group_generator import ShipGroupGenerator
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
|
||||||
from game.game import Game
|
|
||||||
|
|
||||||
|
|
||||||
class ChineseNavyGroupGenerator(ShipGroupGenerator):
|
|
||||||
def generate(self) -> None:
|
|
||||||
|
|
||||||
include_frigate = random.choice([True, True, False])
|
|
||||||
include_dd = random.choice([True, False])
|
|
||||||
|
|
||||||
if not any([include_frigate, include_dd]):
|
|
||||||
include_frigate = True
|
|
||||||
|
|
||||||
if include_frigate:
|
|
||||||
self.add_unit(
|
|
||||||
Type_054A,
|
|
||||||
"FF1",
|
|
||||||
self.position.x + 1200,
|
|
||||||
self.position.y + 900,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
self.add_unit(
|
|
||||||
Type_054A,
|
|
||||||
"FF2",
|
|
||||||
self.position.x + 1200,
|
|
||||||
self.position.y - 900,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
|
|
||||||
if include_dd:
|
|
||||||
dd_type = random.choice([Type_052C, Type_052B])
|
|
||||||
self.add_unit(
|
|
||||||
dd_type,
|
|
||||||
"DD1",
|
|
||||||
self.position.x + 2400,
|
|
||||||
self.position.y + 900,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
self.add_unit(
|
|
||||||
dd_type,
|
|
||||||
"DD2",
|
|
||||||
self.position.x + 2400,
|
|
||||||
self.position.y - 900,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.get_generated_group().points[0].speed = 20
|
|
||||||
|
|
||||||
|
|
||||||
class Type54GroupGenerator(DDGroupGenerator):
|
|
||||||
def __init__(self, game: Game, ground_object: ShipGroundObject, faction: Faction):
|
|
||||||
super(Type54GroupGenerator, self).__init__(
|
|
||||||
game, ground_object, faction, Type_054A
|
|
||||||
)
|
|
||||||
@ -1,34 +0,0 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from gen.sam.group_generator import ShipGroupGenerator
|
|
||||||
|
|
||||||
|
|
||||||
class LHAGroupGenerator(ShipGroupGenerator):
|
|
||||||
def generate(self) -> None:
|
|
||||||
|
|
||||||
# Add carrier
|
|
||||||
if len(self.faction.helicopter_carrier) > 0:
|
|
||||||
carrier_type = random.choice(self.faction.helicopter_carrier)
|
|
||||||
self.add_unit(
|
|
||||||
carrier_type, "LHA", self.position.x, self.position.y, self.heading
|
|
||||||
)
|
|
||||||
|
|
||||||
# Add destroyers escort
|
|
||||||
if len(self.faction.destroyers) > 0:
|
|
||||||
dd_type = random.choice(self.faction.destroyers)
|
|
||||||
self.add_unit(
|
|
||||||
dd_type,
|
|
||||||
"DD1",
|
|
||||||
self.position.x + 1250,
|
|
||||||
self.position.y + 1450,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
self.add_unit(
|
|
||||||
dd_type,
|
|
||||||
"DD2",
|
|
||||||
self.position.x + 1250,
|
|
||||||
self.position.y - 1450,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.get_generated_group().points[0].speed = 20
|
|
||||||
@ -1,108 +0,0 @@
|
|||||||
from __future__ import annotations
|
|
||||||
|
|
||||||
import random
|
|
||||||
from typing import TYPE_CHECKING
|
|
||||||
|
|
||||||
from dcs.ships import (
|
|
||||||
ALBATROS,
|
|
||||||
MOLNIYA,
|
|
||||||
NEUSTRASH,
|
|
||||||
REZKY,
|
|
||||||
MOSCOW,
|
|
||||||
KILO,
|
|
||||||
SOM,
|
|
||||||
)
|
|
||||||
|
|
||||||
from game.factions.faction import Faction
|
|
||||||
from game.theater.theatergroundobject import ShipGroundObject
|
|
||||||
from gen.fleet.dd_group import DDGroupGenerator
|
|
||||||
from gen.sam.group_generator import ShipGroupGenerator
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
|
||||||
from game.game import Game
|
|
||||||
|
|
||||||
|
|
||||||
class RussianNavyGroupGenerator(ShipGroupGenerator):
|
|
||||||
def generate(self) -> None:
|
|
||||||
|
|
||||||
include_frigate = random.choice([True, True, False])
|
|
||||||
include_dd = random.choice([True, False])
|
|
||||||
|
|
||||||
if include_dd:
|
|
||||||
include_cc = random.choice([True, False])
|
|
||||||
else:
|
|
||||||
include_cc = False
|
|
||||||
|
|
||||||
if not any([include_frigate, include_dd, include_cc]):
|
|
||||||
include_frigate = True
|
|
||||||
|
|
||||||
if include_frigate:
|
|
||||||
frigate_type = random.choice([ALBATROS, MOLNIYA])
|
|
||||||
self.add_unit(
|
|
||||||
frigate_type,
|
|
||||||
"FF1",
|
|
||||||
self.position.x + 1200,
|
|
||||||
self.position.y + 900,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
self.add_unit(
|
|
||||||
frigate_type,
|
|
||||||
"FF2",
|
|
||||||
self.position.x + 1200,
|
|
||||||
self.position.y - 900,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
|
|
||||||
if include_dd:
|
|
||||||
dd_type = random.choice([NEUSTRASH, REZKY])
|
|
||||||
self.add_unit(
|
|
||||||
dd_type,
|
|
||||||
"DD1",
|
|
||||||
self.position.x + 2400,
|
|
||||||
self.position.y + 900,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
self.add_unit(
|
|
||||||
dd_type,
|
|
||||||
"DD2",
|
|
||||||
self.position.x + 2400,
|
|
||||||
self.position.y - 900,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
|
|
||||||
if include_cc:
|
|
||||||
# Only include the Moskva for now, the Pyotry Velikiy is an unkillable monster.
|
|
||||||
# See https://github.com/dcs-liberation/dcs_liberation/issues/567
|
|
||||||
self.add_unit(
|
|
||||||
MOSCOW,
|
|
||||||
"CC1",
|
|
||||||
self.position.x,
|
|
||||||
self.position.y,
|
|
||||||
self.heading,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.get_generated_group().points[0].speed = 20
|
|
||||||
|
|
||||||
|
|
||||||
class GrishaGroupGenerator(DDGroupGenerator):
|
|
||||||
def __init__(self, game: Game, ground_object: ShipGroundObject, faction: Faction):
|
|
||||||
super(GrishaGroupGenerator, self).__init__(
|
|
||||||
game, ground_object, faction, ALBATROS
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class MolniyaGroupGenerator(DDGroupGenerator):
|
|
||||||
def __init__(self, game: Game, ground_object: ShipGroundObject, faction: Faction):
|
|
||||||
super(MolniyaGroupGenerator, self).__init__(
|
|
||||||
game, ground_object, faction, MOLNIYA
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class KiloSubGroupGenerator(DDGroupGenerator):
|
|
||||||
def __init__(self, game: Game, ground_object: ShipGroundObject, faction: Faction):
|
|
||||||
super(KiloSubGroupGenerator, self).__init__(game, ground_object, faction, KILO)
|
|
||||||
|
|
||||||
|
|
||||||
class TangoSubGroupGenerator(DDGroupGenerator):
|
|
||||||
def __init__(self, game: Game, ground_object: ShipGroundObject, faction: Faction):
|
|
||||||
super(TangoSubGroupGenerator, self).__init__(game, ground_object, faction, SOM)
|
|
||||||
@ -1,106 +0,0 @@
|
|||||||
from __future__ import annotations
|
|
||||||
|
|
||||||
import logging
|
|
||||||
import random
|
|
||||||
from typing import Optional, TYPE_CHECKING
|
|
||||||
|
|
||||||
from dcs.unitgroup import ShipGroup
|
|
||||||
|
|
||||||
from game.factions import FACTIONS
|
|
||||||
from game.theater.theatergroundobject import (
|
|
||||||
CarrierGroundObject,
|
|
||||||
LhaGroundObject,
|
|
||||||
ShipGroundObject,
|
|
||||||
)
|
|
||||||
from gen.fleet.carrier_group import CarrierGroupGenerator
|
|
||||||
from gen.fleet.cn_dd_group import ChineseNavyGroupGenerator, Type54GroupGenerator
|
|
||||||
from gen.fleet.dd_group import (
|
|
||||||
ArleighBurkeGroupGenerator,
|
|
||||||
OliverHazardPerryGroupGenerator,
|
|
||||||
)
|
|
||||||
from gen.fleet.lacombattanteII import LaCombattanteIIGroupGenerator
|
|
||||||
from gen.fleet.lha_group import LHAGroupGenerator
|
|
||||||
from gen.fleet.ru_dd_group import (
|
|
||||||
GrishaGroupGenerator,
|
|
||||||
KiloSubGroupGenerator,
|
|
||||||
MolniyaGroupGenerator,
|
|
||||||
RussianNavyGroupGenerator,
|
|
||||||
TangoSubGroupGenerator,
|
|
||||||
)
|
|
||||||
from gen.fleet.schnellboot import SchnellbootGroupGenerator
|
|
||||||
from gen.fleet.uboat import UBoatGroupGenerator
|
|
||||||
from gen.fleet.ww2lst import WW2LSTGroupGenerator
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
|
||||||
from game import Game
|
|
||||||
|
|
||||||
|
|
||||||
SHIP_MAP = {
|
|
||||||
"SchnellbootGroupGenerator": SchnellbootGroupGenerator,
|
|
||||||
"WW2LSTGroupGenerator": WW2LSTGroupGenerator,
|
|
||||||
"UBoatGroupGenerator": UBoatGroupGenerator,
|
|
||||||
"OliverHazardPerryGroupGenerator": OliverHazardPerryGroupGenerator,
|
|
||||||
"ArleighBurkeGroupGenerator": ArleighBurkeGroupGenerator,
|
|
||||||
"RussianNavyGroupGenerator": RussianNavyGroupGenerator,
|
|
||||||
"ChineseNavyGroupGenerator": ChineseNavyGroupGenerator,
|
|
||||||
"GrishaGroupGenerator": GrishaGroupGenerator,
|
|
||||||
"MolniyaGroupGenerator": MolniyaGroupGenerator,
|
|
||||||
"KiloSubGroupGenerator": KiloSubGroupGenerator,
|
|
||||||
"TangoSubGroupGenerator": TangoSubGroupGenerator,
|
|
||||||
"Type54GroupGenerator": Type54GroupGenerator,
|
|
||||||
"LaCombattanteIIGroupGenerator": LaCombattanteIIGroupGenerator,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def generate_ship_group(
|
|
||||||
game: Game, ground_object: ShipGroundObject, faction_name: str
|
|
||||||
) -> Optional[ShipGroup]:
|
|
||||||
"""
|
|
||||||
This generate a ship group
|
|
||||||
:return: The generated group, or None if this faction does not support ships.
|
|
||||||
"""
|
|
||||||
faction = FACTIONS[faction_name]
|
|
||||||
if len(faction.navy_generators) > 0:
|
|
||||||
gen = random.choice(faction.navy_generators)
|
|
||||||
if gen in SHIP_MAP.keys():
|
|
||||||
generator = SHIP_MAP[gen](game, ground_object, faction)
|
|
||||||
print(generator.position)
|
|
||||||
generator.generate()
|
|
||||||
return generator.get_generated_group()
|
|
||||||
else:
|
|
||||||
logging.info(
|
|
||||||
"Unable to generate ship group, generator : "
|
|
||||||
+ str(gen)
|
|
||||||
+ "does not exists"
|
|
||||||
)
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
def generate_carrier_group(
|
|
||||||
faction: str, game: Game, ground_object: CarrierGroundObject
|
|
||||||
) -> ShipGroup:
|
|
||||||
"""Generates a carrier group.
|
|
||||||
|
|
||||||
:param faction: The faction the TGO belongs to.
|
|
||||||
:param game: The Game the group is being generated for.
|
|
||||||
:param ground_object: The ground object which will own the ship group
|
|
||||||
:return: The generated group.
|
|
||||||
"""
|
|
||||||
generator = CarrierGroupGenerator(game, ground_object, FACTIONS[faction])
|
|
||||||
generator.generate()
|
|
||||||
return generator.get_generated_group()
|
|
||||||
|
|
||||||
|
|
||||||
def generate_lha_group(
|
|
||||||
faction: str, game: Game, ground_object: LhaGroundObject
|
|
||||||
) -> ShipGroup:
|
|
||||||
"""Generate an LHA group.
|
|
||||||
|
|
||||||
:param faction: The faction the TGO belongs to.
|
|
||||||
:param game: The Game the group is being generated for.
|
|
||||||
:param ground_object: The ground object which will own the ship group
|
|
||||||
:return: The generated group.
|
|
||||||
"""
|
|
||||||
generator = LHAGroupGenerator(game, ground_object, FACTIONS[faction])
|
|
||||||
generator.generate()
|
|
||||||
return generator.get_generated_group()
|
|
||||||
@ -4,7 +4,7 @@ import logging
|
|||||||
import math
|
import math
|
||||||
import operator
|
import operator
|
||||||
from collections.abc import Iterable
|
from collections.abc import Iterable
|
||||||
from typing import Any, Generic, TYPE_CHECKING, Type, TypeVar
|
from typing import Any, Generic, TYPE_CHECKING, Type, TypeVar, Iterator
|
||||||
|
|
||||||
from dcs import unitgroup
|
from dcs import unitgroup
|
||||||
from dcs.mapping import Point
|
from dcs.mapping import Point
|
||||||
@ -26,7 +26,7 @@ if TYPE_CHECKING:
|
|||||||
GroupT = TypeVar("GroupT", VehicleGroup, ShipGroup)
|
GroupT = TypeVar("GroupT", VehicleGroup, ShipGroup)
|
||||||
UnitT = TypeVar("UnitT", bound=Unit)
|
UnitT = TypeVar("UnitT", bound=Unit)
|
||||||
UnitTypeT = TypeVar("UnitTypeT", bound=Type[UnitType])
|
UnitTypeT = TypeVar("UnitTypeT", bound=Type[UnitType])
|
||||||
TgoT = TypeVar("TgoT", bound=TheaterGroundObject[Any])
|
TgoT = TypeVar("TgoT", bound=TheaterGroundObject)
|
||||||
|
|
||||||
|
|
||||||
# TODO: Generate a group description rather than a pydcs group.
|
# TODO: Generate a group description rather than a pydcs group.
|
||||||
@ -42,6 +42,7 @@ class GroupGenerator(Generic[GroupT, UnitT, UnitTypeT, TgoT]):
|
|||||||
self.heading: Heading = Heading.random()
|
self.heading: Heading = Heading.random()
|
||||||
self.price = 0
|
self.price = 0
|
||||||
self.vg: GroupT = group
|
self.vg: GroupT = group
|
||||||
|
self.auxiliary_groups: list[GroupT] = []
|
||||||
|
|
||||||
def generate(self) -> None:
|
def generate(self) -> None:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
@ -49,6 +50,11 @@ class GroupGenerator(Generic[GroupT, UnitT, UnitTypeT, TgoT]):
|
|||||||
def get_generated_group(self) -> GroupT:
|
def get_generated_group(self) -> GroupT:
|
||||||
return self.vg
|
return self.vg
|
||||||
|
|
||||||
|
@property
|
||||||
|
def groups(self) -> Iterator[GroupT]:
|
||||||
|
yield self.vg
|
||||||
|
yield from self.auxiliary_groups
|
||||||
|
|
||||||
def add_unit(
|
def add_unit(
|
||||||
self,
|
self,
|
||||||
unit_type: UnitTypeT,
|
unit_type: UnitTypeT,
|
||||||
@ -107,6 +113,12 @@ class VehicleGroupGenerator(
|
|||||||
wp = self.vg.add_waypoint(self.position, PointAction.OffRoad, 0)
|
wp = self.vg.add_waypoint(self.position, PointAction.OffRoad, 0)
|
||||||
wp.ETA_locked = True
|
wp.ETA_locked = True
|
||||||
|
|
||||||
|
def add_vehicle_group(self) -> VehicleGroup:
|
||||||
|
gid = self.game.next_group_id()
|
||||||
|
group = VehicleGroup(gid, f"{self.go.group_name} #{len(self.auxiliary_groups)}")
|
||||||
|
self.auxiliary_groups.append(group)
|
||||||
|
return group
|
||||||
|
|
||||||
def generate(self) -> None:
|
def generate(self) -> None:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
@ -187,6 +199,12 @@ class ShipGroupGenerator(
|
|||||||
wp = self.vg.add_waypoint(self.position, 0)
|
wp = self.vg.add_waypoint(self.position, 0)
|
||||||
wp.ETA_locked = True
|
wp.ETA_locked = True
|
||||||
|
|
||||||
|
def add_auxiliary_group(self) -> ShipGroup:
|
||||||
|
gid = self.game.next_group_id()
|
||||||
|
group = ShipGroup(gid, f"{self.go.group_name} #{len(self.auxiliary_groups)}")
|
||||||
|
self.auxiliary_groups.append(group)
|
||||||
|
return group
|
||||||
|
|
||||||
def generate(self) -> None:
|
def generate(self) -> None:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
@ -1,38 +0,0 @@
|
|||||||
import logging
|
|
||||||
import random
|
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
from dcs.unitgroup import VehicleGroup
|
|
||||||
|
|
||||||
from game import Game
|
|
||||||
from game.factions import FACTIONS
|
|
||||||
from game.theater.theatergroundobject import MissileSiteGroundObject
|
|
||||||
from gen.missiles.scud_site import ScudGenerator
|
|
||||||
from gen.missiles.v1_group import V1GroupGenerator
|
|
||||||
|
|
||||||
MISSILES_MAP = {"V1GroupGenerator": V1GroupGenerator, "ScudGenerator": ScudGenerator}
|
|
||||||
|
|
||||||
|
|
||||||
def generate_missile_group(
|
|
||||||
game: Game, ground_object: MissileSiteGroundObject, faction_name: str
|
|
||||||
) -> Optional[VehicleGroup]:
|
|
||||||
"""
|
|
||||||
This generate a missiles group
|
|
||||||
:return: Nothing, but put the group reference inside the ground object
|
|
||||||
"""
|
|
||||||
faction = FACTIONS[faction_name]
|
|
||||||
if len(faction.missiles) > 0:
|
|
||||||
generators = faction.missiles
|
|
||||||
if len(generators) > 0:
|
|
||||||
gen = random.choice(generators)
|
|
||||||
if gen in MISSILES_MAP.keys():
|
|
||||||
generator = MISSILES_MAP[gen](game, ground_object, faction)
|
|
||||||
generator.generate()
|
|
||||||
return generator.get_generated_group()
|
|
||||||
else:
|
|
||||||
logging.info(
|
|
||||||
"Unable to generate missile group, generator : "
|
|
||||||
+ str(gen)
|
|
||||||
+ "does not exists"
|
|
||||||
)
|
|
||||||
return None
|
|
||||||
@ -1,65 +0,0 @@
|
|||||||
import random
|
|
||||||
from typing import List, Optional, Type
|
|
||||||
|
|
||||||
from dcs.unitgroup import VehicleGroup
|
|
||||||
|
|
||||||
from game import Game
|
|
||||||
from game.factions.faction import Faction
|
|
||||||
from game.theater.theatergroundobject import EwrGroundObject
|
|
||||||
from gen.sam.ewrs import (
|
|
||||||
BigBirdGenerator,
|
|
||||||
BoxSpringGenerator,
|
|
||||||
DogEarGenerator,
|
|
||||||
FlatFaceGenerator,
|
|
||||||
HawkEwrGenerator,
|
|
||||||
PatriotEwrGenerator,
|
|
||||||
RolandEwrGenerator,
|
|
||||||
SnowDriftGenerator,
|
|
||||||
StraightFlushGenerator,
|
|
||||||
TallRackGenerator,
|
|
||||||
EwrGenerator,
|
|
||||||
TinShieldGenerator,
|
|
||||||
)
|
|
||||||
|
|
||||||
EWR_MAP = {
|
|
||||||
"BoxSpringGenerator": BoxSpringGenerator,
|
|
||||||
"TallRackGenerator": TallRackGenerator,
|
|
||||||
"DogEarGenerator": DogEarGenerator,
|
|
||||||
"RolandEwrGenerator": RolandEwrGenerator,
|
|
||||||
"FlatFaceGenerator": FlatFaceGenerator,
|
|
||||||
"PatriotEwrGenerator": PatriotEwrGenerator,
|
|
||||||
"BigBirdGenerator": BigBirdGenerator,
|
|
||||||
"SnowDriftGenerator": SnowDriftGenerator,
|
|
||||||
"StraightFlushGenerator": StraightFlushGenerator,
|
|
||||||
"HawkEwrGenerator": HawkEwrGenerator,
|
|
||||||
"TinShieldGenerator": TinShieldGenerator,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def get_faction_possible_ewrs_generator(
|
|
||||||
faction: Faction,
|
|
||||||
) -> List[Type[EwrGenerator]]:
|
|
||||||
"""
|
|
||||||
Return the list of possible EWR generators for the given faction
|
|
||||||
:param faction: Faction name to search units for
|
|
||||||
"""
|
|
||||||
return [EWR_MAP[s] for s in faction.ewrs]
|
|
||||||
|
|
||||||
|
|
||||||
def generate_ewr_group(
|
|
||||||
game: Game, ground_object: EwrGroundObject, faction: Faction
|
|
||||||
) -> Optional[VehicleGroup]:
|
|
||||||
"""Generates an early warning radar group.
|
|
||||||
|
|
||||||
:param game: The Game.
|
|
||||||
:param ground_object: The ground object which will own the EWR group.
|
|
||||||
:param faction: Owner faction.
|
|
||||||
:return: The generated group, or None if one could not be generated.
|
|
||||||
"""
|
|
||||||
generators = get_faction_possible_ewrs_generator(faction)
|
|
||||||
if len(generators) > 0:
|
|
||||||
generator_class = random.choice(generators)
|
|
||||||
generator = generator_class(game, ground_object)
|
|
||||||
generator.generate()
|
|
||||||
return generator.get_generated_group()
|
|
||||||
return None
|
|
||||||
@ -2,8 +2,8 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -2,8 +2,8 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
from game.utils import Heading
|
from game.utils import Heading
|
||||||
@ -2,8 +2,8 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
import random
|
import random
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
from pydcs_extensions.highdigitsams import highdigitsams
|
from pydcs_extensions.highdigitsams import highdigitsams
|
||||||
@ -1,9 +1,7 @@
|
|||||||
import random
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from dcs.vehicles import AirDefence, Armor, Unarmed
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
|
||||||
AirDefenseRange,
|
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
from game.utils import Heading
|
from game.utils import Heading
|
||||||
@ -1,7 +1,7 @@
|
|||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -2,8 +2,8 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1,41 +1,17 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from enum import Enum
|
|
||||||
from typing import Iterator, List
|
from typing import Iterator, List
|
||||||
|
|
||||||
from dcs.unitgroup import VehicleGroup
|
from dcs.unitgroup import VehicleGroup
|
||||||
|
|
||||||
from game import Game
|
from game import Game
|
||||||
from game.theater.theatergroundobject import SamGroundObject
|
from game.theater.theatergroundobject import (
|
||||||
from gen.sam.group_generator import VehicleGroupGenerator
|
SamGroundObject,
|
||||||
|
SkynetRole,
|
||||||
|
AirDefenseRange,
|
||||||
class SkynetRole(Enum):
|
)
|
||||||
#: A radar SAM that should be controlled by Skynet.
|
from gen.group_generator import VehicleGroupGenerator
|
||||||
Sam = "Sam"
|
|
||||||
|
|
||||||
#: A radar SAM that should be controlled and used as an EWR by Skynet.
|
|
||||||
SamAsEwr = "SamAsEwr"
|
|
||||||
|
|
||||||
#: An air defense unit that should be used as point defense by Skynet.
|
|
||||||
PointDefense = "PD"
|
|
||||||
|
|
||||||
#: All other types of groups that might be present in a SAM TGO. This includes
|
|
||||||
#: SHORADS, AAA, supply trucks, etc. Anything that shouldn't be controlled by Skynet
|
|
||||||
#: should use this role.
|
|
||||||
NoSkynetBehavior = "NoSkynetBehavior"
|
|
||||||
|
|
||||||
|
|
||||||
class AirDefenseRange(Enum):
|
|
||||||
AAA = ("AAA", SkynetRole.NoSkynetBehavior)
|
|
||||||
Short = ("short", SkynetRole.NoSkynetBehavior)
|
|
||||||
Medium = ("medium", SkynetRole.Sam)
|
|
||||||
Long = ("long", SkynetRole.SamAsEwr)
|
|
||||||
|
|
||||||
def __init__(self, description: str, default_role: SkynetRole) -> None:
|
|
||||||
self.range_name = description
|
|
||||||
self.default_role = default_role
|
|
||||||
|
|
||||||
|
|
||||||
class AirDefenseGroupGenerator(VehicleGroupGenerator[SamGroundObject], ABC):
|
class AirDefenseGroupGenerator(VehicleGroupGenerator[SamGroundObject], ABC):
|
||||||
@ -48,7 +24,6 @@ class AirDefenseGroupGenerator(VehicleGroupGenerator[SamGroundObject], ABC):
|
|||||||
|
|
||||||
self.vg.name = self.group_name_for_role(self.vg.id, self.primary_group_role())
|
self.vg.name = self.group_name_for_role(self.vg.id, self.primary_group_role())
|
||||||
self.auxiliary_groups: List[VehicleGroup] = []
|
self.auxiliary_groups: List[VehicleGroup] = []
|
||||||
self.heading = self.heading_to_conflict()
|
|
||||||
|
|
||||||
def add_auxiliary_group(self, role: SkynetRole) -> VehicleGroup:
|
def add_auxiliary_group(self, role: SkynetRole) -> VehicleGroup:
|
||||||
gid = self.game.next_group_id()
|
gid = self.game.next_group_id()
|
||||||
@ -67,9 +42,7 @@ class AirDefenseGroupGenerator(VehicleGroupGenerator[SamGroundObject], ABC):
|
|||||||
# that the PD will know which group it's protecting. We then append the role so
|
# that the PD will know which group it's protecting. We then append the role so
|
||||||
# our config knows what to do with the group, and finally the GID of *this*
|
# our config knows what to do with the group, and finally the GID of *this*
|
||||||
# group to ensure no conflicts.
|
# group to ensure no conflicts.
|
||||||
return "|".join(
|
return "|".join([self.go.faction_color, "SAM", role.value, str(gid)])
|
||||||
[self.go.faction_color, "SAM", str(self.go.group_id), role.value, str(gid)]
|
|
||||||
)
|
|
||||||
|
|
||||||
def get_generated_group(self) -> VehicleGroup:
|
def get_generated_group(self) -> VehicleGroup:
|
||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
@ -4,11 +4,11 @@ from typing import Optional
|
|||||||
from dcs.unitgroup import VehicleGroup
|
from dcs.unitgroup import VehicleGroup
|
||||||
|
|
||||||
from game import Game
|
from game import Game
|
||||||
from game.data.groundunitclass import GroundUnitClass
|
from game.data.units import UnitClass
|
||||||
from game.dcs.groundunittype import GroundUnitType
|
from game.dcs.groundunittype import GroundUnitType
|
||||||
from game.factions import FACTIONS
|
from game.factions import FACTIONS
|
||||||
from game.theater.theatergroundobject import VehicleGroupGroundObject
|
from game.theater.theatergroundobject import VehicleGroupGroundObject
|
||||||
from gen.defenses.armored_group_generator import (
|
from gen.to_remove.armored_group_generator import (
|
||||||
ArmoredGroupGenerator,
|
ArmoredGroupGenerator,
|
||||||
FixedSizeArmorGroupGenerator,
|
FixedSizeArmorGroupGenerator,
|
||||||
)
|
)
|
||||||
@ -22,10 +22,10 @@ def generate_armor_group(
|
|||||||
:return: Generated group
|
:return: Generated group
|
||||||
"""
|
"""
|
||||||
armor_types = (
|
armor_types = (
|
||||||
GroundUnitClass.Apc,
|
UnitClass.Apc,
|
||||||
GroundUnitClass.Atgm,
|
UnitClass.Atgm,
|
||||||
GroundUnitClass.Ifv,
|
UnitClass.Ifv,
|
||||||
GroundUnitClass.Tank,
|
UnitClass.Tank,
|
||||||
)
|
)
|
||||||
possible_unit = [
|
possible_unit = [
|
||||||
u for u in FACTIONS[faction].frontline_units if u.unit_class in armor_types
|
u for u in FACTIONS[faction].frontline_units if u.unit_class in armor_types
|
||||||
@ -1,9 +1,13 @@
|
|||||||
import random
|
import random
|
||||||
|
|
||||||
|
import dcs.vehicles
|
||||||
|
from dcs import Point
|
||||||
|
|
||||||
from game import Game
|
from game import Game
|
||||||
from game.dcs.groundunittype import GroundUnitType
|
from game.dcs.groundunittype import GroundUnitType
|
||||||
from game.theater.theatergroundobject import VehicleGroupGroundObject
|
from game.theater.theatergroundobject import VehicleGroupGroundObject
|
||||||
from gen.sam.group_generator import VehicleGroupGenerator
|
from game.utils import Heading
|
||||||
|
from gen.group_generator import VehicleGroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class ArmoredGroupGenerator(VehicleGroupGenerator[VehicleGroupGroundObject]):
|
class ArmoredGroupGenerator(VehicleGroupGenerator[VehicleGroupGroundObject]):
|
||||||
@ -15,6 +19,7 @@ class ArmoredGroupGenerator(VehicleGroupGenerator[VehicleGroupGroundObject]):
|
|||||||
) -> None:
|
) -> None:
|
||||||
super().__init__(game, ground_object)
|
super().__init__(game, ground_object)
|
||||||
self.unit_type = unit_type
|
self.unit_type = unit_type
|
||||||
|
self.heading = Heading.from_degrees(0)
|
||||||
|
|
||||||
def generate(self) -> None:
|
def generate(self) -> None:
|
||||||
grid_x = random.randint(2, 3)
|
grid_x = random.randint(2, 3)
|
||||||
@ -46,9 +51,10 @@ class FixedSizeArmorGroupGenerator(VehicleGroupGenerator[VehicleGroupGroundObjec
|
|||||||
super().__init__(game, ground_object)
|
super().__init__(game, ground_object)
|
||||||
self.unit_type = unit_type
|
self.unit_type = unit_type
|
||||||
self.size = size
|
self.size = size
|
||||||
|
self.spacing = random.randint(20, 70)
|
||||||
|
self.heading = Heading.from_degrees(0)
|
||||||
|
|
||||||
def generate(self) -> None:
|
def generate(self) -> None:
|
||||||
spacing = random.randint(20, 70)
|
|
||||||
|
|
||||||
index = 0
|
index = 0
|
||||||
for i in range(self.size):
|
for i in range(self.size):
|
||||||
@ -56,7 +62,23 @@ class FixedSizeArmorGroupGenerator(VehicleGroupGenerator[VehicleGroupGroundObjec
|
|||||||
self.add_unit(
|
self.add_unit(
|
||||||
self.unit_type.dcs_unit_type,
|
self.unit_type.dcs_unit_type,
|
||||||
"Armor#" + str(index),
|
"Armor#" + str(index),
|
||||||
self.position.x + spacing * i,
|
self.position.x + self.spacing * i,
|
||||||
self.position.y,
|
self.position.y,
|
||||||
self.heading,
|
self.heading,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class FixedSizeArmorGroupGeneratorWithAA(FixedSizeArmorGroupGenerator):
|
||||||
|
def generate(self) -> None:
|
||||||
|
super(FixedSizeArmorGroupGeneratorWithAA, self).generate()
|
||||||
|
aux_group = self.add_vehicle_group()
|
||||||
|
index = 0
|
||||||
|
for i in [1, 2]:
|
||||||
|
index = index + 1
|
||||||
|
self.add_unit_to_group(
|
||||||
|
aux_group,
|
||||||
|
dcs.vehicles.AirDefence.M6_Linebacker,
|
||||||
|
"Anti Air#" + str(index),
|
||||||
|
Point(self.position.x - self.spacing * i, self.position.y),
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
124
gen/to_remove/carrier_group.py
Normal file
124
gen/to_remove/carrier_group.py
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
import random
|
||||||
|
|
||||||
|
import dcs.ships
|
||||||
|
from dcs import Point
|
||||||
|
|
||||||
|
from gen.group_generator import ShipGroupGenerator
|
||||||
|
from game.utils import Heading
|
||||||
|
|
||||||
|
from dcs.ships import USS_Arleigh_Burke_IIa, TICONDEROG
|
||||||
|
|
||||||
|
|
||||||
|
class CarrierGroupGenerator(ShipGroupGenerator):
|
||||||
|
def generate(self) -> None:
|
||||||
|
self.add_unit(
|
||||||
|
dcs.ships.Stennis,
|
||||||
|
"Carrier",
|
||||||
|
self.position.x,
|
||||||
|
self.position.y,
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
|
||||||
|
aux_group = self.add_auxiliary_group()
|
||||||
|
# Add destroyers escort
|
||||||
|
dd_type = dcs.ships.USS_Arleigh_Burke_IIa
|
||||||
|
self.add_unit_to_group(
|
||||||
|
aux_group,
|
||||||
|
dd_type,
|
||||||
|
"DD1",
|
||||||
|
Point(self.position.x + 2500, self.position.y + 4500),
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
self.add_unit_to_group(
|
||||||
|
aux_group,
|
||||||
|
dd_type,
|
||||||
|
"DD2",
|
||||||
|
Point(self.position.x + 2500, self.position.y - 4500),
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.add_unit_to_group(
|
||||||
|
aux_group,
|
||||||
|
dd_type,
|
||||||
|
"DD3",
|
||||||
|
Point(self.position.x + 4500, self.position.y + 8500),
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
self.add_unit_to_group(
|
||||||
|
aux_group,
|
||||||
|
dd_type,
|
||||||
|
"DD4",
|
||||||
|
Point(self.position.x + 4500, self.position.y - 8500),
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.get_generated_group().points[0].speed = 20
|
||||||
|
|
||||||
|
|
||||||
|
class CarrierStrikeGroup8Generator(ShipGroupGenerator):
|
||||||
|
def generate(self) -> None:
|
||||||
|
# Carrier Strike Group 8
|
||||||
|
carrier_type = dcs.ships.Stennis
|
||||||
|
|
||||||
|
self.add_unit(
|
||||||
|
carrier_type,
|
||||||
|
"CVN-75 Harry S. Truman",
|
||||||
|
self.position.x,
|
||||||
|
self.position.y,
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
|
||||||
|
aux_group = self.add_auxiliary_group()
|
||||||
|
|
||||||
|
# Add Arleigh Burke escort
|
||||||
|
self.add_unit_to_group(
|
||||||
|
aux_group,
|
||||||
|
USS_Arleigh_Burke_IIa,
|
||||||
|
"USS Ramage",
|
||||||
|
Point(self.position.x + 6482, self.position.y + 6667),
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.add_unit_to_group(
|
||||||
|
aux_group,
|
||||||
|
USS_Arleigh_Burke_IIa,
|
||||||
|
"USS Mitscher",
|
||||||
|
Point(self.position.x - 7963, self.position.y + 7037),
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.add_unit_to_group(
|
||||||
|
aux_group,
|
||||||
|
USS_Arleigh_Burke_IIa,
|
||||||
|
"USS Forrest Sherman",
|
||||||
|
Point(self.position.x - 7408, self.position.y - 7408),
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.add_unit_to_group(
|
||||||
|
aux_group,
|
||||||
|
USS_Arleigh_Burke_IIa,
|
||||||
|
"USS Lassen",
|
||||||
|
Point(self.position.x + 8704, self.position.y - 6296),
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Add Ticonderoga escort
|
||||||
|
if self.heading >= Heading.from_degrees(180):
|
||||||
|
self.add_unit_to_group(
|
||||||
|
aux_group,
|
||||||
|
TICONDEROG,
|
||||||
|
"USS Hué City",
|
||||||
|
Point(self.position.x + 2222, self.position.y - 3333),
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
self.add_unit_to_group(
|
||||||
|
aux_group,
|
||||||
|
TICONDEROG,
|
||||||
|
"USS Hué City",
|
||||||
|
Point(self.position.x - 3333, self.position.y + 2222),
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.get_generated_group().points[0].speed = 20
|
||||||
59
gen/to_remove/cn_dd_group.py
Normal file
59
gen/to_remove/cn_dd_group.py
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import random
|
||||||
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
|
from dcs.ships import (
|
||||||
|
Type_052C,
|
||||||
|
Type_052B,
|
||||||
|
Type_054A,
|
||||||
|
)
|
||||||
|
|
||||||
|
from game.factions.faction import Faction
|
||||||
|
from game.theater.theatergroundobject import ShipGroundObject
|
||||||
|
from gen.to_remove.dd_group import DDGroupGenerator
|
||||||
|
from gen.group_generator import ShipGroupGenerator
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from game.game import Game
|
||||||
|
|
||||||
|
|
||||||
|
class ChineseNavyGroupGenerator(ShipGroupGenerator):
|
||||||
|
def generate(self) -> None:
|
||||||
|
self.add_unit(
|
||||||
|
Type_054A,
|
||||||
|
"FF1",
|
||||||
|
self.position.x + 1200,
|
||||||
|
self.position.y + 900,
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
self.add_unit(
|
||||||
|
Type_054A,
|
||||||
|
"FF2",
|
||||||
|
self.position.x + 1200,
|
||||||
|
self.position.y - 900,
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
self.add_unit(
|
||||||
|
Type_052C,
|
||||||
|
"DD1",
|
||||||
|
self.position.x + 2400,
|
||||||
|
self.position.y + 900,
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
self.add_unit(
|
||||||
|
Type_052C,
|
||||||
|
"DD2",
|
||||||
|
self.position.x + 2400,
|
||||||
|
self.position.y - 900,
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.get_generated_group().points[0].speed = 20
|
||||||
|
|
||||||
|
|
||||||
|
class Type54GroupGenerator(DDGroupGenerator):
|
||||||
|
def __init__(self, game: Game, ground_object: ShipGroundObject, faction: Faction):
|
||||||
|
super(Type54GroupGenerator, self).__init__(
|
||||||
|
game, ground_object, faction, Type_054A
|
||||||
|
)
|
||||||
13
gen/to_remove/coastal_group_generator.py
Normal file
13
gen/to_remove/coastal_group_generator.py
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import logging
|
||||||
|
import random
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
from dcs.unitgroup import VehicleGroup
|
||||||
|
|
||||||
|
from game import db, Game
|
||||||
|
from game.theater.theatergroundobject import CoastalSiteGroundObject
|
||||||
|
from gen.to_remove.silkworm import SilkwormGenerator
|
||||||
|
|
||||||
|
COASTAL_MAP = {
|
||||||
|
"SilkwormGenerator": SilkwormGenerator,
|
||||||
|
}
|
||||||
@ -2,8 +2,8 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -7,7 +7,7 @@ from dcs.unittype import ShipType
|
|||||||
|
|
||||||
from game.factions.faction import Faction
|
from game.factions.faction import Faction
|
||||||
from game.theater.theatergroundobject import ShipGroundObject
|
from game.theater.theatergroundobject import ShipGroundObject
|
||||||
from gen.sam.group_generator import ShipGroupGenerator
|
from gen.group_generator import ShipGroupGenerator
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from game.game import Game
|
from game.game import Game
|
||||||
27
gen/to_remove/ewr_group_generator.py
Normal file
27
gen/to_remove/ewr_group_generator.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
from gen.to_remove.ewrs import (
|
||||||
|
BigBirdGenerator,
|
||||||
|
BoxSpringGenerator,
|
||||||
|
DogEarGenerator,
|
||||||
|
FlatFaceGenerator,
|
||||||
|
HawkEwrGenerator,
|
||||||
|
PatriotEwrGenerator,
|
||||||
|
RolandEwrGenerator,
|
||||||
|
SnowDriftGenerator,
|
||||||
|
StraightFlushGenerator,
|
||||||
|
TallRackGenerator,
|
||||||
|
TinShieldGenerator,
|
||||||
|
)
|
||||||
|
|
||||||
|
EWR_MAP = {
|
||||||
|
"BoxSpringGenerator": BoxSpringGenerator,
|
||||||
|
"TallRackGenerator": TallRackGenerator,
|
||||||
|
"DogEarGenerator": DogEarGenerator,
|
||||||
|
"RolandEwrGenerator": RolandEwrGenerator,
|
||||||
|
"FlatFaceGenerator": FlatFaceGenerator,
|
||||||
|
"PatriotEwrGenerator": PatriotEwrGenerator,
|
||||||
|
"BigBirdGenerator": BigBirdGenerator,
|
||||||
|
"SnowDriftGenerator": SnowDriftGenerator,
|
||||||
|
"StraightFlushGenerator": StraightFlushGenerator,
|
||||||
|
"HawkEwrGenerator": HawkEwrGenerator,
|
||||||
|
"TinShieldGenerator": TinShieldGenerator,
|
||||||
|
}
|
||||||
@ -4,11 +4,11 @@ from dcs.unittype import VehicleType
|
|||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from game.theater.theatergroundobject import EwrGroundObject
|
from game.theater.theatergroundobject import EwrGroundObject
|
||||||
from gen.sam.group_generator import VehicleGroupGenerator
|
from gen.group_generator import VehicleGroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class EwrGenerator(VehicleGroupGenerator[EwrGroundObject]):
|
class EwrGenerator(VehicleGroupGenerator[EwrGroundObject]):
|
||||||
unit_type: Type[VehicleType]
|
unit_type: Type[VehicleType] = AirDefence.P_19_s_125_sr
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def name(cls) -> str:
|
def name(cls) -> str:
|
||||||
@ -20,7 +20,7 @@ class EwrGenerator(VehicleGroupGenerator[EwrGroundObject]):
|
|||||||
"EWR",
|
"EWR",
|
||||||
self.position.x,
|
self.position.x,
|
||||||
self.position.y,
|
self.position.y,
|
||||||
self.heading_to_conflict(),
|
self.heading,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
from dcs.vehicles import AirDefence, Infantry, Unarmed
|
from dcs.vehicles import AirDefence, Infantry, Unarmed
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
from game.utils import Heading
|
from game.utils import Heading
|
||||||
@ -3,7 +3,7 @@ from dcs.ships import La_Combattante_II
|
|||||||
from game import Game
|
from game import Game
|
||||||
from game.factions.faction import Faction
|
from game.factions.faction import Faction
|
||||||
from game.theater.theatergroundobject import ShipGroundObject
|
from game.theater.theatergroundobject import ShipGroundObject
|
||||||
from gen.fleet.dd_group import DDGroupGenerator
|
from gen.to_remove.dd_group import DDGroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class LaCombattanteIIGroupGenerator(DDGroupGenerator):
|
class LaCombattanteIIGroupGenerator(DDGroupGenerator):
|
||||||
39
gen/to_remove/lha_group.py
Normal file
39
gen/to_remove/lha_group.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
import random
|
||||||
|
|
||||||
|
import dcs.ships
|
||||||
|
from dcs import Point
|
||||||
|
|
||||||
|
from gen.group_generator import ShipGroupGenerator
|
||||||
|
|
||||||
|
|
||||||
|
class LHAGroupGenerator(ShipGroupGenerator):
|
||||||
|
def generate(self) -> None:
|
||||||
|
|
||||||
|
# Add carrier
|
||||||
|
self.add_unit(
|
||||||
|
dcs.ships.LHA_Tarawa,
|
||||||
|
"LHA",
|
||||||
|
self.position.x,
|
||||||
|
self.position.y,
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Add destroyers escort
|
||||||
|
aux_group = self.add_auxiliary_group()
|
||||||
|
dd_type = dcs.ships.USS_Arleigh_Burke_IIa
|
||||||
|
self.add_unit_to_group(
|
||||||
|
aux_group,
|
||||||
|
dd_type,
|
||||||
|
"DD1",
|
||||||
|
Point(self.position.x + 1250, self.position.y + 1450),
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
self.add_unit_to_group(
|
||||||
|
aux_group,
|
||||||
|
dd_type,
|
||||||
|
"DD2",
|
||||||
|
Point(self.position.x + 1250, self.position.y - 1450),
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.get_generated_group().points[0].speed = 20
|
||||||
12
gen/to_remove/missiles_group_generator.py
Normal file
12
gen/to_remove/missiles_group_generator.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import logging
|
||||||
|
import random
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
from dcs.unitgroup import VehicleGroup
|
||||||
|
|
||||||
|
from game import db, Game
|
||||||
|
from game.theater.theatergroundobject import MissileSiteGroundObject
|
||||||
|
from gen.to_remove.scud_site import ScudGenerator
|
||||||
|
from gen.to_remove.v1_group import V1GroupGenerator
|
||||||
|
|
||||||
|
MISSILES_MAP = {"V1GroupGenerator": V1GroupGenerator, "ScudGenerator": ScudGenerator}
|
||||||
92
gen/to_remove/ru_dd_group.py
Normal file
92
gen/to_remove/ru_dd_group.py
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import random
|
||||||
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
|
from dcs.ships import (
|
||||||
|
ALBATROS,
|
||||||
|
MOLNIYA,
|
||||||
|
NEUSTRASH,
|
||||||
|
REZKY,
|
||||||
|
MOSCOW,
|
||||||
|
KILO,
|
||||||
|
SOM,
|
||||||
|
)
|
||||||
|
|
||||||
|
from game.factions.faction import Faction
|
||||||
|
from game.theater.theatergroundobject import ShipGroundObject
|
||||||
|
from gen.to_remove.dd_group import DDGroupGenerator
|
||||||
|
from gen.group_generator import ShipGroupGenerator
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from game.game import Game
|
||||||
|
|
||||||
|
|
||||||
|
class RussianNavyGroupGenerator(ShipGroupGenerator):
|
||||||
|
def generate(self) -> None:
|
||||||
|
|
||||||
|
self.add_unit(
|
||||||
|
ALBATROS,
|
||||||
|
"FF1",
|
||||||
|
self.position.x + 1200,
|
||||||
|
self.position.y + 900,
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
self.add_unit(
|
||||||
|
ALBATROS,
|
||||||
|
"FF2",
|
||||||
|
self.position.x + 1200,
|
||||||
|
self.position.y - 900,
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.add_unit(
|
||||||
|
NEUSTRASH,
|
||||||
|
"DD1",
|
||||||
|
self.position.x + 2400,
|
||||||
|
self.position.y + 900,
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
self.add_unit(
|
||||||
|
NEUSTRASH,
|
||||||
|
"DD2",
|
||||||
|
self.position.x + 2400,
|
||||||
|
self.position.y - 900,
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Only include the Moskva for now, the Pyotry Velikiy is an unkillable monster.
|
||||||
|
# See https://github.com/dcs-liberation/dcs_liberation/issues/567
|
||||||
|
self.add_unit(
|
||||||
|
MOSCOW,
|
||||||
|
"CC1",
|
||||||
|
self.position.x,
|
||||||
|
self.position.y,
|
||||||
|
self.heading,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.get_generated_group().points[0].speed = 20
|
||||||
|
|
||||||
|
|
||||||
|
class GrishaGroupGenerator(DDGroupGenerator):
|
||||||
|
def __init__(self, game: Game, ground_object: ShipGroundObject, faction: Faction):
|
||||||
|
super(GrishaGroupGenerator, self).__init__(
|
||||||
|
game, ground_object, faction, ALBATROS
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class MolniyaGroupGenerator(DDGroupGenerator):
|
||||||
|
def __init__(self, game: Game, ground_object: ShipGroundObject, faction: Faction):
|
||||||
|
super(MolniyaGroupGenerator, self).__init__(
|
||||||
|
game, ground_object, faction, MOLNIYA
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class KiloSubGroupGenerator(DDGroupGenerator):
|
||||||
|
def __init__(self, game: Game, ground_object: ShipGroundObject, faction: Faction):
|
||||||
|
super(KiloSubGroupGenerator, self).__init__(game, ground_object, faction, KILO)
|
||||||
|
|
||||||
|
|
||||||
|
class TangoSubGroupGenerator(DDGroupGenerator):
|
||||||
|
def __init__(self, game: Game, ground_object: ShipGroundObject, faction: Faction):
|
||||||
|
super(TangoSubGroupGenerator, self).__init__(game, ground_object, faction, SOM)
|
||||||
@ -1,9 +1,7 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1,9 +1,7 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1,9 +1,7 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -5,34 +5,33 @@ from dcs.unitgroup import VehicleGroup
|
|||||||
|
|
||||||
from game import Game
|
from game import Game
|
||||||
from game.factions.faction import Faction
|
from game.factions.faction import Faction
|
||||||
from game.theater.theatergroundobject import SamGroundObject
|
from game.theater.theatergroundobject import SamGroundObject, AirDefenseRange
|
||||||
from gen.sam.aaa_bofors import BoforsGenerator
|
from gen.to_remove.aaa_bofors import BoforsGenerator
|
||||||
from gen.sam.aaa_flak import FlakGenerator
|
from gen.to_remove.aaa_flak import FlakGenerator
|
||||||
from gen.sam.aaa_flak18 import Flak18Generator
|
from gen.to_remove.aaa_flak18 import Flak18Generator
|
||||||
from gen.sam.aaa_ks19 import KS19Generator
|
from gen.to_remove.aaa_ks19 import KS19Generator
|
||||||
from gen.sam.aaa_ww2_ally_flak import AllyWW2FlakGenerator
|
from gen.to_remove.aaa_ww2_ally_flak import AllyWW2FlakGenerator
|
||||||
from gen.sam.aaa_zsu57 import ZSU57Generator
|
from gen.to_remove.aaa_zsu57 import ZSU57Generator
|
||||||
from gen.sam.aaa_zu23_insurgent import ZU23InsurgentGenerator
|
from gen.to_remove.aaa_zu23_insurgent import ZU23InsurgentGenerator
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
AirDefenseRange,
|
|
||||||
)
|
)
|
||||||
from gen.sam.cold_war_flak import (
|
from gen.to_remove.cold_war_flak import (
|
||||||
ColdWarFlakGenerator,
|
ColdWarFlakGenerator,
|
||||||
EarlyColdWarFlakGenerator,
|
EarlyColdWarFlakGenerator,
|
||||||
)
|
)
|
||||||
from gen.sam.freya_ewr import FreyaGenerator
|
from gen.to_remove.freya_ewr import FreyaGenerator
|
||||||
from gen.sam.sam_avenger import AvengerGenerator
|
from gen.to_remove.sam_avenger import AvengerGenerator
|
||||||
from gen.sam.sam_chaparral import ChaparralGenerator
|
from gen.to_remove.sam_chaparral import ChaparralGenerator
|
||||||
from gen.sam.sam_gepard import GepardGenerator
|
from gen.to_remove.sam_gepard import GepardGenerator
|
||||||
from gen.sam.sam_hawk import HawkGenerator
|
from gen.to_remove.sam_hawk import HawkGenerator
|
||||||
from gen.sam.sam_hq7 import HQ7Generator
|
from gen.to_remove.sam_hq7 import HQ7Generator
|
||||||
from gen.sam.sam_linebacker import LinebackerGenerator
|
from gen.to_remove.sam_linebacker import LinebackerGenerator
|
||||||
from gen.sam.sam_nasams import NasamBGenerator, NasamCGenerator
|
from gen.to_remove.sam_nasams import NasamBGenerator, NasamCGenerator
|
||||||
from gen.sam.sam_patriot import PatriotGenerator
|
from gen.to_remove.sam_patriot import PatriotGenerator
|
||||||
from gen.sam.sam_rapier import RapierGenerator
|
from gen.to_remove.sam_rapier import RapierGenerator
|
||||||
from gen.sam.sam_roland import RolandGenerator
|
from gen.to_remove.sam_roland import RolandGenerator
|
||||||
from gen.sam.sam_sa10 import (
|
from gen.to_remove.sam_sa10 import (
|
||||||
SA10Generator,
|
SA10Generator,
|
||||||
Tier2SA10Generator,
|
Tier2SA10Generator,
|
||||||
Tier3SA10Generator,
|
Tier3SA10Generator,
|
||||||
@ -42,22 +41,22 @@ from gen.sam.sam_sa10 import (
|
|||||||
SA20BGenerator,
|
SA20BGenerator,
|
||||||
SA23Generator,
|
SA23Generator,
|
||||||
)
|
)
|
||||||
from gen.sam.sam_sa11 import SA11Generator
|
from gen.to_remove.sam_sa11 import SA11Generator
|
||||||
from gen.sam.sam_sa13 import SA13Generator
|
from gen.to_remove.sam_sa13 import SA13Generator
|
||||||
from gen.sam.sam_sa15 import SA15Generator
|
from gen.to_remove.sam_sa15 import SA15Generator
|
||||||
from gen.sam.sam_sa17 import SA17Generator
|
from gen.to_remove.sam_sa17 import SA17Generator
|
||||||
from gen.sam.sam_sa19 import SA19Generator
|
from gen.to_remove.sam_sa19 import SA19Generator
|
||||||
from gen.sam.sam_sa2 import SA2Generator
|
from gen.to_remove.sam_sa2 import SA2Generator
|
||||||
from gen.sam.sam_sa3 import SA3Generator
|
from gen.to_remove.sam_sa3 import SA3Generator
|
||||||
from gen.sam.sam_sa5 import SA5Generator, SA5FlatFaceGenerator
|
from gen.to_remove.sam_sa5 import SA5Generator, SA5FlatFaceGenerator
|
||||||
from gen.sam.sam_sa6 import SA6Generator
|
from gen.to_remove.sam_sa6 import SA6Generator
|
||||||
from gen.sam.sam_sa8 import SA8Generator
|
from gen.to_remove.sam_sa8 import SA8Generator
|
||||||
from gen.sam.sam_sa9 import SA9Generator
|
from gen.to_remove.sam_sa9 import SA9Generator
|
||||||
from gen.sam.sam_vulcan import VulcanGenerator
|
from gen.to_remove.sam_vulcan import VulcanGenerator
|
||||||
from gen.sam.sam_zsu23 import ZSU23Generator
|
from gen.to_remove.sam_zsu23 import ZSU23Generator
|
||||||
from gen.sam.sam_zu23 import ZU23Generator
|
from gen.to_remove.sam_zu23 import ZU23Generator
|
||||||
from gen.sam.sam_zu23_ural import ZU23UralGenerator
|
from gen.to_remove.sam_zu23_ural import ZU23UralGenerator
|
||||||
from gen.sam.sam_zu23_ural_insurgent import ZU23UralInsurgentGenerator
|
from gen.to_remove.sam_zu23_ural_insurgent import ZU23UralInsurgentGenerator
|
||||||
|
|
||||||
SAM_MAP: Dict[str, Type[AirDefenseGroupGenerator]] = {
|
SAM_MAP: Dict[str, Type[AirDefenseGroupGenerator]] = {
|
||||||
"HawkGenerator": HawkGenerator,
|
"HawkGenerator": HawkGenerator,
|
||||||
@ -1,12 +1,9 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from dcs.mapping import Point
|
from dcs.mapping import Point
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange, SkynetRole
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
SkynetRole,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -1,12 +1,9 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from dcs.mapping import Point
|
from dcs.mapping import Point
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange, SkynetRole
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
SkynetRole,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -1,9 +1,7 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1,13 +1,12 @@
|
|||||||
from typing import Type
|
from typing import Type
|
||||||
|
|
||||||
from dcs.mapping import Point
|
|
||||||
from dcs.unittype import VehicleType
|
from dcs.unittype import VehicleType
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from game import Game
|
from game import Game
|
||||||
from game.theater import SamGroundObject
|
from game.theater import SamGroundObject
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1,10 +1,9 @@
|
|||||||
from dcs.mapping import Point
|
from dcs.mapping import Point
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import SkynetRole, AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
SkynetRole,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -1,11 +1,8 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import SkynetRole, AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
SkynetRole,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -1,9 +1,8 @@
|
|||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import SkynetRole, AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
SkynetRole,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -6,10 +6,9 @@ from dcs.vehicles import AirDefence
|
|||||||
|
|
||||||
from game import Game
|
from game import Game
|
||||||
from game.theater import SamGroundObject
|
from game.theater import SamGroundObject
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import SkynetRole, AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
SkynetRole,
|
|
||||||
)
|
)
|
||||||
from pydcs_extensions.highdigitsams import highdigitsams
|
from pydcs_extensions.highdigitsams import highdigitsams
|
||||||
|
|
||||||
@ -1,9 +1,7 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1,9 +1,7 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
from pydcs_extensions.highdigitsams import highdigitsams
|
from pydcs_extensions.highdigitsams import highdigitsams
|
||||||
@ -1,9 +1,7 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1,9 +1,7 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1,9 +1,7 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -5,8 +5,8 @@ from dcs.vehicles import AirDefence, Unarmed
|
|||||||
|
|
||||||
from game import Game
|
from game import Game
|
||||||
from game.theater import SamGroundObject
|
from game.theater import SamGroundObject
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -70,6 +70,8 @@ class SA5FlatFaceGenerator(SA5Generator):
|
|||||||
This generate a SA-5 group using the P-19 FlatFace SR
|
This generate a SA-5 group using the P-19 FlatFace SR
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
name = "SA-5/S-200 Site wit FlatFace SR"
|
||||||
|
|
||||||
def __init__(self, game: Game, ground_object: SamGroundObject):
|
def __init__(self, game: Game, ground_object: SamGroundObject):
|
||||||
super().__init__(game, ground_object)
|
super().__init__(game, ground_object)
|
||||||
self.sr: Type[VehicleType] = AirDefence.P_19_s_125_sr
|
self.sr: Type[VehicleType] = AirDefence.P_19_s_125_sr
|
||||||
@ -1,9 +1,7 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1,9 +1,7 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1,9 +1,7 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1,9 +1,7 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -2,8 +2,8 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1,9 +1,7 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1,9 +1,7 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from game.theater.theatergroundobject import AirDefenseRange
|
||||||
AirDefenseRange,
|
from gen.to_remove.airdefensegroupgenerator import (
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -2,7 +2,7 @@ import random
|
|||||||
|
|
||||||
from dcs.ships import Schnellboot_type_S130
|
from dcs.ships import Schnellboot_type_S130
|
||||||
|
|
||||||
from gen.sam.group_generator import ShipGroupGenerator
|
from gen.group_generator import ShipGroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class SchnellbootGroupGenerator(ShipGroupGenerator):
|
class SchnellbootGroupGenerator(ShipGroupGenerator):
|
||||||
@ -6,7 +6,7 @@ from game import Game
|
|||||||
from game.factions.faction import Faction
|
from game.factions.faction import Faction
|
||||||
from game.theater.theatergroundobject import MissileSiteGroundObject
|
from game.theater.theatergroundobject import MissileSiteGroundObject
|
||||||
from game.utils import Heading
|
from game.utils import Heading
|
||||||
from gen.sam.group_generator import VehicleGroupGenerator
|
from gen.group_generator import VehicleGroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class ScudGenerator(VehicleGroupGenerator[MissileSiteGroundObject]):
|
class ScudGenerator(VehicleGroupGenerator[MissileSiteGroundObject]):
|
||||||
52
gen/to_remove/ship_group_generator.py
Normal file
52
gen/to_remove/ship_group_generator.py
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import logging
|
||||||
|
import random
|
||||||
|
from typing import TYPE_CHECKING, Optional
|
||||||
|
|
||||||
|
from dcs.unitgroup import ShipGroup
|
||||||
|
|
||||||
|
from game import db
|
||||||
|
from game.theater.theatergroundobject import (
|
||||||
|
LhaGroundObject,
|
||||||
|
CarrierGroundObject,
|
||||||
|
ShipGroundObject,
|
||||||
|
)
|
||||||
|
from gen.to_remove.carrier_group import CarrierGroupGenerator
|
||||||
|
from gen.to_remove.cn_dd_group import ChineseNavyGroupGenerator, Type54GroupGenerator
|
||||||
|
from gen.to_remove.dd_group import (
|
||||||
|
ArleighBurkeGroupGenerator,
|
||||||
|
OliverHazardPerryGroupGenerator,
|
||||||
|
)
|
||||||
|
from gen.to_remove.lacombattanteII import LaCombattanteIIGroupGenerator
|
||||||
|
from gen.to_remove.lha_group import LHAGroupGenerator
|
||||||
|
from gen.to_remove.ru_dd_group import (
|
||||||
|
RussianNavyGroupGenerator,
|
||||||
|
GrishaGroupGenerator,
|
||||||
|
MolniyaGroupGenerator,
|
||||||
|
KiloSubGroupGenerator,
|
||||||
|
TangoSubGroupGenerator,
|
||||||
|
)
|
||||||
|
from gen.to_remove.schnellboot import SchnellbootGroupGenerator
|
||||||
|
from gen.to_remove.uboat import UBoatGroupGenerator
|
||||||
|
from gen.to_remove.ww2lst import WW2LSTGroupGenerator
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from game import Game
|
||||||
|
|
||||||
|
|
||||||
|
SHIP_MAP = {
|
||||||
|
"SchnellbootGroupGenerator": SchnellbootGroupGenerator,
|
||||||
|
"WW2LSTGroupGenerator": WW2LSTGroupGenerator,
|
||||||
|
"UBoatGroupGenerator": UBoatGroupGenerator,
|
||||||
|
"OliverHazardPerryGroupGenerator": OliverHazardPerryGroupGenerator,
|
||||||
|
"ArleighBurkeGroupGenerator": ArleighBurkeGroupGenerator,
|
||||||
|
"RussianNavyGroupGenerator": RussianNavyGroupGenerator,
|
||||||
|
"ChineseNavyGroupGenerator": ChineseNavyGroupGenerator,
|
||||||
|
"GrishaGroupGenerator": GrishaGroupGenerator,
|
||||||
|
"MolniyaGroupGenerator": MolniyaGroupGenerator,
|
||||||
|
"KiloSubGroupGenerator": KiloSubGroupGenerator,
|
||||||
|
"TangoSubGroupGenerator": TangoSubGroupGenerator,
|
||||||
|
"Type54GroupGenerator": Type54GroupGenerator,
|
||||||
|
"LaCombattanteIIGroupGenerator": LaCombattanteIIGroupGenerator,
|
||||||
|
}
|
||||||
@ -4,7 +4,7 @@ from game import Game
|
|||||||
from game.factions.faction import Faction
|
from game.factions.faction import Faction
|
||||||
from game.theater.theatergroundobject import CoastalSiteGroundObject
|
from game.theater.theatergroundobject import CoastalSiteGroundObject
|
||||||
from game.utils import Heading
|
from game.utils import Heading
|
||||||
from gen.sam.group_generator import VehicleGroupGenerator
|
from gen.group_generator import VehicleGroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class SilkwormGenerator(VehicleGroupGenerator[CoastalSiteGroundObject]):
|
class SilkwormGenerator(VehicleGroupGenerator[CoastalSiteGroundObject]):
|
||||||
@ -2,7 +2,7 @@ import random
|
|||||||
|
|
||||||
from dcs.ships import Uboat_VIIC
|
from dcs.ships import Uboat_VIIC
|
||||||
|
|
||||||
from gen.sam.group_generator import ShipGroupGenerator
|
from gen.group_generator import ShipGroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class UBoatGroupGenerator(ShipGroupGenerator):
|
class UBoatGroupGenerator(ShipGroupGenerator):
|
||||||
@ -6,7 +6,7 @@ from game import Game
|
|||||||
from game.factions.faction import Faction
|
from game.factions.faction import Faction
|
||||||
from game.theater.theatergroundobject import MissileSiteGroundObject
|
from game.theater.theatergroundobject import MissileSiteGroundObject
|
||||||
from game.utils import Heading
|
from game.utils import Heading
|
||||||
from gen.sam.group_generator import VehicleGroupGenerator
|
from gen.group_generator import VehicleGroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class V1GroupGenerator(VehicleGroupGenerator[MissileSiteGroundObject]):
|
class V1GroupGenerator(VehicleGroupGenerator[MissileSiteGroundObject]):
|
||||||
@ -2,7 +2,7 @@ import random
|
|||||||
|
|
||||||
from dcs.ships import USS_Samuel_Chase, LST_Mk2
|
from dcs.ships import USS_Samuel_Chase, LST_Mk2
|
||||||
|
|
||||||
from gen.sam.group_generator import ShipGroupGenerator
|
from gen.group_generator import ShipGroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class WW2LSTGroupGenerator(ShipGroupGenerator):
|
class WW2LSTGroupGenerator(ShipGroupGenerator):
|
||||||
Loading…
x
Reference in New Issue
Block a user