mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
* fix conflict * squash bugs and reuse patrol layout * fix tanker tacan and formatting * fix unlimited fuel option * update pretense for tanker changes * reuse refueling flight plan and bugfix for sunken carrier changelog * remove unitmap dependency * formatting and more unit map removal * more formatting * typing and black * keep tanker out of clouds * fix if there are no clouds * better cloud handling * groundwork for recovery task * remove changes to game/commander * Finishing up recovery tankers --------- Co-authored-by: Raffson <Raffson@users.noreply.github.com>
117 lines
2.9 KiB
Python
117 lines
2.9 KiB
Python
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass, field
|
|
from datetime import datetime
|
|
from typing import Optional, TYPE_CHECKING
|
|
|
|
from dcs.flyingunit import FlyingUnit
|
|
from dcs.unitgroup import ShipGroup
|
|
|
|
from game.dcs.aircrafttype import AircraftType
|
|
from game.dcs.groundunittype import GroundUnitType
|
|
from game.missiongenerator.aircraft.flightdata import FlightData
|
|
from game.runways import RunwayData
|
|
|
|
if TYPE_CHECKING:
|
|
from game.radio.radios import RadioFrequency
|
|
from game.radio.tacan import TacanChannel
|
|
from game.utils import Distance
|
|
from uuid import UUID
|
|
|
|
|
|
@dataclass
|
|
class GroupInfo:
|
|
group_name: str
|
|
callsign: str
|
|
freq: RadioFrequency
|
|
blue: bool
|
|
|
|
|
|
@dataclass
|
|
class UnitInfo(GroupInfo):
|
|
unit_name: str
|
|
|
|
|
|
@dataclass
|
|
class AwacsInfo(GroupInfo):
|
|
"""AWACS information for the kneeboard."""
|
|
|
|
depature_location: Optional[str]
|
|
start_time: datetime
|
|
end_time: datetime
|
|
unit: FlyingUnit # reference to be used as L16 donor
|
|
|
|
|
|
@dataclass
|
|
class TankerInfo(GroupInfo):
|
|
"""Tanker information for the kneeboard."""
|
|
|
|
variant: str
|
|
tacan: Optional[TacanChannel]
|
|
start_time: datetime
|
|
end_time: datetime
|
|
|
|
|
|
@dataclass
|
|
class CarrierInfo(UnitInfo):
|
|
"""Carrier information."""
|
|
|
|
tacan: TacanChannel
|
|
icls_channel: int | None
|
|
link4_freq: RadioFrequency | None
|
|
ship_group: ShipGroup
|
|
|
|
|
|
@dataclass
|
|
class JtacInfo(UnitInfo):
|
|
"""JTAC information."""
|
|
|
|
region: str
|
|
code: str
|
|
|
|
|
|
@dataclass
|
|
class CargoInfo:
|
|
"""Cargo information."""
|
|
|
|
unit_type: str = field(default_factory=str)
|
|
spawn_zone: str = field(default_factory=str)
|
|
amount: int = field(default=1)
|
|
|
|
|
|
@dataclass
|
|
class LogisticsInfo:
|
|
"""Logistics information."""
|
|
|
|
pilot_names: list[str]
|
|
transport: AircraftType
|
|
blue: bool
|
|
|
|
logistic_unit: str = field(default_factory=str)
|
|
pickup_zone: str = field(default_factory=str)
|
|
drop_off_zone: str = field(default_factory=str)
|
|
target_zone: str = field(default_factory=str)
|
|
cargo: list[CargoInfo] = field(default_factory=list)
|
|
preload: bool = field(default=False)
|
|
|
|
|
|
@dataclass
|
|
class FrontlineUnitGroupsInfo:
|
|
group_name: str
|
|
unit_type: GroundUnitType
|
|
|
|
|
|
@dataclass
|
|
class MissionData:
|
|
awacs: list[AwacsInfo] = field(default_factory=list)
|
|
runways: list[RunwayData] = field(default_factory=list)
|
|
carriers: list[CarrierInfo] = field(default_factory=list)
|
|
flights: list[FlightData] = field(default_factory=list)
|
|
packages: dict[int, list[FlightData]] = field(default_factory=dict)
|
|
tankers: list[TankerInfo] = field(default_factory=list)
|
|
jtacs: list[JtacInfo] = field(default_factory=list)
|
|
logistics: list[LogisticsInfo] = field(default_factory=list)
|
|
cp_stack: dict[UUID, Distance] = field(default_factory=dict)
|
|
player_frontline_groups: list[FrontlineUnitGroupsInfo] = field(default_factory=list)
|
|
enemy_frontline_groups: list[FrontlineUnitGroupsInfo] = field(default_factory=list)
|