mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Added new options in settings: - Carriers steam into wind - Navmesh to use for Pretense carrier zones - Remove ground spawn statics, including invisible FARPs, at airbases. - Percentage of randomly selected aircraft types (only for generated squadrons) intended to allow the user to increase aircraft variety. Will now store the ICLS channel and Link4 frequency in missiondata.py CarrierInfo. Implemented artillery groups as Pretense garrisons. Artillery groups are spawned by the Artillery Bunker. Will now also ensure that the logistics units spawned as part of Pretense garrisons are actually capable of ammo resupply. Fixed the Pretense generator generating a bit too many missions per squadron. Ground spawns: Also hot start aircraft which require ground crew support (ground air or chock removal) which might not be available at roadbases. Also, pretensetgogenerator.py will now correctly handle air defence units in ground_unit_of_class(). Added Roland groups in the Pretense generator.
102 lines
2.4 KiB
Python
102 lines
2.4 KiB
Python
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass, field
|
|
from datetime import datetime
|
|
from typing import Optional, TYPE_CHECKING
|
|
|
|
from game.dcs.aircrafttype import AircraftType
|
|
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
|
|
|
|
|
|
@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
|
|
|
|
|
|
@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 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)
|
|
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)
|