Custom weapons injection logic + A-4E AIM-9J injection

This commit is contained in:
Raffson 2023-07-21 00:01:37 +02:00
parent 6072b0181d
commit 1a52154b5a
No known key found for this signature in database
GPG Key ID: B0402B2C9B764D99
2 changed files with 29 additions and 0 deletions

View File

@ -1,5 +1,6 @@
from __future__ import annotations
import inspect
import logging
from collections import defaultdict
from dataclasses import dataclass
@ -11,6 +12,7 @@ import yaml
from dcs.helicopters import helicopter_map
from dcs.planes import plane_map
from dcs.unittype import FlyingType
from dcs.weapons_data import weapon_ids
from game.data.units import UnitClass
from game.dcs.unitproperty import UnitProperty
@ -462,6 +464,8 @@ class AircraftType(UnitType[Type[FlyingType]]):
if FlightType.SEAD in task_priorities:
task_priorities[FlightType.SEAD_SWEEP] = task_priorities[FlightType.SEAD]
cls._custom_weapon_injections(aircraft, data)
for variant in data.get("variants", [aircraft.id]):
yield AircraftType(
dcs_unit_type=aircraft,
@ -497,5 +501,21 @@ class AircraftType(UnitType[Type[FlyingType]]):
task_priorities=task_priorities,
)
@staticmethod
def _custom_weapon_injections(
aircraft: Type[FlyingType], data: Dict[str, Any]
) -> None:
if (wpn_injection := data.get("weapon_injections")) is not None:
pylons = [
v
for v in aircraft.__dict__.values()
if inspect.isclass(v) and v.__name__.startswith(f"Pylon")
]
pylons.sort(key=lambda x: int(x.__name__.replace("Pylon", "")))
for pylon_number, weapons in wpn_injection.items():
for w in weapons:
weapon = weapon_ids[w]
setattr(pylons[pylon_number - 1], w, (pylon_number, weapon))
def __hash__(self) -> int:
return hash(self.name)

View File

@ -29,3 +29,12 @@ tasks:
SEAD Escort: 110
Strike: 360
TARCAP: 160
weapon_injections:
1:
- "{AIM-9J-ON-ADAPTER}"
2:
- "{AIM-9J-ON-ADAPTER}"
4:
- "{AIM-9J-ON-ADAPTER}"
5:
- "{AIM-9J-ON-ADAPTER}"