mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
https://github.com/dcs-liberation/dcs_liberation/issues/1145 Currently this is fixed at the start of the campaign. The squadron locations are defined by the campaign file. Follow up work: * Track aircraft ownership per-squadron rather than per-airbase. * UI for relocating squadrons. * Ferry missions for squadrons that are relocating. * Auto-relocation (probably only for retreat handling). Fixes https://github.com/dcs-liberation/dcs_liberation/issues/1138
34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
import dataclasses
|
|
from dataclasses import dataclass
|
|
|
|
from game.dcs.aircrafttype import AircraftType
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class OperatingBases:
|
|
shore: bool
|
|
carrier: bool
|
|
lha: bool
|
|
|
|
@classmethod
|
|
def default_for_aircraft(cls, aircraft: AircraftType) -> OperatingBases:
|
|
if aircraft.dcs_unit_type.helicopter:
|
|
# Helicopters operate from anywhere by default.
|
|
return OperatingBases(shore=True, carrier=True, lha=True)
|
|
if aircraft.lha_capable:
|
|
# Marine aircraft operate from LHAs and the shore by default.
|
|
return OperatingBases(shore=True, carrier=False, lha=True)
|
|
if aircraft.carrier_capable:
|
|
# Carrier aircraft operate from carriers by default.
|
|
return OperatingBases(shore=False, carrier=True, lha=False)
|
|
# And the rest are only capable of shore operation.
|
|
return OperatingBases(shore=True, carrier=False, lha=False)
|
|
|
|
@classmethod
|
|
def from_yaml(cls, aircraft: AircraftType, data: dict[str, bool]) -> OperatingBases:
|
|
return dataclasses.replace(
|
|
OperatingBases.default_for_aircraft(aircraft), **data
|
|
)
|