mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
Track theater in ControlPoint.
Simplifies finding the owning theater of a control point. Not used yet.
This commit is contained in:
parent
6519f48149
commit
6bbe583e82
0
doc/design/flight-creation.md
Normal file
0
doc/design/flight-creation.md
Normal file
@ -108,9 +108,8 @@ class MizCampaignLoader:
|
||||
if self.mission.country(self.RED_COUNTRY.name) is None:
|
||||
self.mission.coalition["red"].add_country(self.RED_COUNTRY)
|
||||
|
||||
@staticmethod
|
||||
def control_point_from_airport(airport: Airport) -> ControlPoint:
|
||||
cp = Airfield(airport, starts_blue=airport.is_blue())
|
||||
def control_point_from_airport(self, airport: Airport) -> ControlPoint:
|
||||
cp = Airfield(airport, self.theater, starts_blue=airport.is_blue())
|
||||
|
||||
# Use the unlimited aircraft option to determine if an airfield should
|
||||
# be owned by the player when the campaign is "inverted".
|
||||
@ -257,20 +256,26 @@ class MizCampaignLoader:
|
||||
for blue in (False, True):
|
||||
for group in self.off_map_spawns(blue):
|
||||
control_point = OffMapSpawn(
|
||||
str(group.name), group.position, starts_blue=blue
|
||||
str(group.name), group.position, self.theater, starts_blue=blue
|
||||
)
|
||||
control_point.captured_invert = group.late_activation
|
||||
control_points[control_point.id] = control_point
|
||||
for ship in self.carriers(blue):
|
||||
control_point = Carrier(ship.name, ship.position, starts_blue=blue)
|
||||
control_point = Carrier(
|
||||
ship.name, ship.position, self.theater, starts_blue=blue
|
||||
)
|
||||
control_point.captured_invert = ship.late_activation
|
||||
control_points[control_point.id] = control_point
|
||||
for ship in self.lhas(blue):
|
||||
control_point = Lha(ship.name, ship.position, starts_blue=blue)
|
||||
control_point = Lha(
|
||||
ship.name, ship.position, self.theater, starts_blue=blue
|
||||
)
|
||||
control_point.captured_invert = ship.late_activation
|
||||
control_points[control_point.id] = control_point
|
||||
for fob in self.fobs(blue):
|
||||
control_point = Fob(str(fob.name), fob.position, starts_blue=blue)
|
||||
control_point = Fob(
|
||||
str(fob.name), fob.position, self.theater, starts_blue=blue
|
||||
)
|
||||
control_point.captured_invert = fob.late_activation
|
||||
control_points[control_point.id] = control_point
|
||||
|
||||
|
||||
@ -26,21 +26,21 @@ from typing import (
|
||||
from uuid import UUID
|
||||
|
||||
from dcs.mapping import Point
|
||||
from dcs.terrain.terrain import Airport, ParkingSlot
|
||||
from dcs.unitgroup import ShipGroup, StaticGroup
|
||||
from dcs.unittype import ShipType
|
||||
from dcs.ships import (
|
||||
CVN_71,
|
||||
CVN_72,
|
||||
CVN_73,
|
||||
CVN_75,
|
||||
CV_1143_5,
|
||||
KUZNECOW,
|
||||
Stennis,
|
||||
Forrestal,
|
||||
KUZNECOW,
|
||||
LHA_Tarawa,
|
||||
Stennis,
|
||||
Type_071,
|
||||
)
|
||||
from dcs.terrain.terrain import Airport, ParkingSlot
|
||||
from dcs.unitgroup import ShipGroup, StaticGroup
|
||||
from dcs.unittype import ShipType
|
||||
|
||||
from game.ato.closestairfields import ObjectiveDistanceCache
|
||||
from game.ground_forces.combat_stance import CombatStance
|
||||
@ -56,8 +56,8 @@ from game.sidc import (
|
||||
Status,
|
||||
SymbolSet,
|
||||
)
|
||||
from game.utils import Distance, Heading, meters
|
||||
from game.theater.presetlocation import PresetLocation
|
||||
from game.utils import Distance, Heading, meters
|
||||
from .base import Base
|
||||
from .frontline import FrontLine
|
||||
from .missiontarget import MissionTarget
|
||||
@ -320,6 +320,7 @@ class ControlPoint(MissionTarget, SidcDescribable, ABC):
|
||||
name: str,
|
||||
position: Point,
|
||||
at: StartingPosition,
|
||||
theater: ConflictTheater,
|
||||
starts_blue: bool,
|
||||
cptype: ControlPointType = ControlPointType.AIRBASE,
|
||||
) -> None:
|
||||
@ -327,6 +328,7 @@ class ControlPoint(MissionTarget, SidcDescribable, ABC):
|
||||
self.id = uuid.uuid4()
|
||||
self.full_name = name
|
||||
self.at = at
|
||||
self.theater = theater
|
||||
self.starts_blue = starts_blue
|
||||
self.connected_objectives: List[TheaterGroundObject] = []
|
||||
self.preset_locations = PresetLocations()
|
||||
@ -1040,11 +1042,14 @@ class ControlPoint(MissionTarget, SidcDescribable, ABC):
|
||||
|
||||
|
||||
class Airfield(ControlPoint):
|
||||
def __init__(self, airport: Airport, starts_blue: bool) -> None:
|
||||
def __init__(
|
||||
self, airport: Airport, theater: ConflictTheater, starts_blue: bool
|
||||
) -> None:
|
||||
super().__init__(
|
||||
airport.name,
|
||||
airport.position,
|
||||
airport,
|
||||
theater,
|
||||
starts_blue,
|
||||
cptype=ControlPointType.AIRBASE,
|
||||
)
|
||||
@ -1237,9 +1242,16 @@ class NavalControlPoint(ControlPoint, ABC):
|
||||
|
||||
|
||||
class Carrier(NavalControlPoint):
|
||||
def __init__(self, name: str, at: Point, starts_blue: bool):
|
||||
def __init__(
|
||||
self, name: str, at: Point, theater: ConflictTheater, starts_blue: bool
|
||||
):
|
||||
super().__init__(
|
||||
name, at, at, starts_blue, cptype=ControlPointType.AIRCRAFT_CARRIER_GROUP
|
||||
name,
|
||||
at,
|
||||
at,
|
||||
theater,
|
||||
starts_blue,
|
||||
cptype=ControlPointType.AIRCRAFT_CARRIER_GROUP,
|
||||
)
|
||||
|
||||
@property
|
||||
@ -1276,8 +1288,12 @@ class Carrier(NavalControlPoint):
|
||||
|
||||
|
||||
class Lha(NavalControlPoint):
|
||||
def __init__(self, name: str, at: Point, starts_blue: bool):
|
||||
super().__init__(name, at, at, starts_blue, cptype=ControlPointType.LHA_GROUP)
|
||||
def __init__(
|
||||
self, name: str, at: Point, theater: ConflictTheater, starts_blue: bool
|
||||
):
|
||||
super().__init__(
|
||||
name, at, at, theater, starts_blue, cptype=ControlPointType.LHA_GROUP
|
||||
)
|
||||
|
||||
@property
|
||||
def symbol_set_and_entity(self) -> tuple[SymbolSet, Entity]:
|
||||
@ -1306,9 +1322,16 @@ class OffMapSpawn(ControlPoint):
|
||||
def runway_is_operational(self) -> bool:
|
||||
return True
|
||||
|
||||
def __init__(self, name: str, position: Point, starts_blue: bool):
|
||||
def __init__(
|
||||
self, name: str, position: Point, theater: ConflictTheater, starts_blue: bool
|
||||
):
|
||||
super().__init__(
|
||||
name, position, position, starts_blue, cptype=ControlPointType.OFF_MAP
|
||||
name,
|
||||
position,
|
||||
position,
|
||||
theater,
|
||||
starts_blue,
|
||||
cptype=ControlPointType.OFF_MAP,
|
||||
)
|
||||
|
||||
@property
|
||||
@ -1365,8 +1388,12 @@ class OffMapSpawn(ControlPoint):
|
||||
|
||||
|
||||
class Fob(ControlPoint):
|
||||
def __init__(self, name: str, at: Point, starts_blue: bool):
|
||||
super().__init__(name, at, at, starts_blue, cptype=ControlPointType.FOB)
|
||||
def __init__(
|
||||
self, name: str, at: Point, theater: ConflictTheater, starts_blue: bool
|
||||
):
|
||||
super().__init__(
|
||||
name, at, at, theater, starts_blue, cptype=ControlPointType.FOB
|
||||
)
|
||||
self.name = name
|
||||
|
||||
@property
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user