dcs-retribution/gen/airfields.py
Dan Albert e7e82dcd0b Build mission kneeboards.
This includes most of the briefing information in the kneeboard:

* Airfield info
* Waypoint info
* Comm info
* AWACS
* Tankers
* JTAC

There's more that could be done:

* Restrict tankers to the type compatible with the current aircraft
* Support for carriers
* Merge all relevant comm info (tankers, AWACS, JTAC, other flights)
  into the comm ladder

This gives us a good start and a framework to build on. Very likely
that we'll want to split part of this (probably the comm ladder) off
onto a separate page once we start adding more to this, since it's a
pretty full page currently.

Also missing is any checking that the contents do not go beyond the
bounds of the page. We could add this if needed. For now the page has
enough room for about a dozen waypoints, which is quite a bit more
than most missions need.
2020-08-31 13:01:05 -07:00

46 lines
1.1 KiB
Python

"""Extra airfield data that is not exposed by pydcs.
Remove once https://github.com/pydcs/dcs/issues/69 tracks getting the missing
data added to pydcs. Until then, missing data can be manually filled in here.
"""
from dataclasses import dataclass, field
from typing import Dict, List, Optional
RadioFrequency = str
@dataclass
class AtcData:
hf: RadioFrequency
vhf_fm: RadioFrequency
vhf_am: RadioFrequency
uhf: RadioFrequency
@dataclass
class AirfieldData:
"""Additional airfield data not included in pydcs."""
#: Radio channels used by the airfield's ATC.
atc: AtcData
#: TACAN channel as a string, i.e. "74X".
tacan: Optional[str] = None
#: Dict of runway heading -> ILS frequency.
ils: Dict[str, RadioFrequency] = field(default_factory=dict)
def ils_freq(self, runway: str) -> Optional[RadioFrequency]:
return self.ils.get(runway)
# TODO: Add more airfields.
AIRFIELD_DATA = {
"Incirlik": AirfieldData(
AtcData("3.85", "38.6", "129.4", "360.1"),
"21X",
{"050": "109.3", "230": "111.7"}
),
}