Fix #1988 broken stored heading in Payload editor (#2020)

* Fix #1988

* Allow overwriting default aircraft properties

* Add logging to setting invalid props
This commit is contained in:
Walter Ray Haynie 2022-02-22 19:06:20 -06:00 committed by GitHub
parent 9e2e4ffa74
commit bb72acd3ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 27 additions and 6 deletions

View File

@ -4,7 +4,7 @@ import logging
from dataclasses import dataclass
from functools import cached_property
from pathlib import Path
from typing import Any, Iterator, Optional, TYPE_CHECKING, Type
from typing import Any, Iterator, Optional, TYPE_CHECKING, Type, Dict
import yaml
from dcs.helicopters import helicopter_map
@ -317,6 +317,23 @@ class AircraftType(UnitType[Type[FlyingType]]):
yield from helicopter_map.values()
yield from plane_map.values()
@staticmethod
def _set_props_overrides(
config: Dict[str, Any], aircraft: Type[FlyingType], data_path: Path
) -> None:
if aircraft.property_defaults is None:
logging.warning(
f"'{data_path.name}' attempted to set default prop that does not exist."
)
else:
for k in config:
if k in aircraft.property_defaults:
aircraft.property_defaults[k] = config[k]
else:
logging.warning(
f"'{data_path.name}' attempted to set default prop '{k}' that does not exist"
)
@classmethod
def _each_variant_of(cls, aircraft: Type[FlyingType]) -> Iterator[AircraftType]:
data_path = Path("resources/units/aircraft") / f"{aircraft.id}.yaml"
@ -368,6 +385,10 @@ class AircraftType(UnitType[Type[FlyingType]]):
if units_data == "metric":
units = MetricUnits()
prop_overrides = data.get("default_overrides")
if prop_overrides is not None:
cls._set_props_overrides(prop_overrides, aircraft, data_path)
for variant in data.get("variants", [aircraft.id]):
yield AircraftType(
dcs_unit_type=aircraft,

View File

@ -6,7 +6,6 @@ from typing import Any, Optional, TYPE_CHECKING
from dcs import Mission
from dcs.flyingunit import FlyingUnit
from dcs.planes import F_14A_135_GR, F_14B
from dcs.unit import Skill
from dcs.unitgroup import FlyingGroup
@ -116,10 +115,6 @@ class FlightGroupConfigurator:
laser_codes.append(self.laser_code_registry.get_next_laser_code())
else:
laser_codes.append(None)
if unit.unit_type is F_14B:
unit.set_property(F_14B.Properties.INSAlignmentStored.id, True)
elif unit.unit_type is F_14A_135_GR:
unit.set_property(F_14A_135_GR.Properties.INSAlignmentStored.id, True)
def setup_radios(self) -> RadioFrequency:
if self.flight.flight_type in {FlightType.AEWC, FlightType.REFUELING}:

View File

@ -32,3 +32,5 @@ radios:
namer: tomcat
intra_flight_radio_index: 2
inter_flight_radio_index: 1
default_overrides:
INSAlignmentStored: true

View File

@ -32,3 +32,6 @@ radios:
namer: tomcat
intra_flight_radio_index: 2
inter_flight_radio_index: 1
default_overrides:
INSAlignmentStored: true