mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Custom weapons injection logic + A-4E AIM-9J injection
This commit is contained in:
parent
6072b0181d
commit
1a52154b5a
@ -1,5 +1,6 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import inspect
|
||||||
import logging
|
import logging
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
@ -11,6 +12,7 @@ import yaml
|
|||||||
from dcs.helicopters import helicopter_map
|
from dcs.helicopters import helicopter_map
|
||||||
from dcs.planes import plane_map
|
from dcs.planes import plane_map
|
||||||
from dcs.unittype import FlyingType
|
from dcs.unittype import FlyingType
|
||||||
|
from dcs.weapons_data import weapon_ids
|
||||||
|
|
||||||
from game.data.units import UnitClass
|
from game.data.units import UnitClass
|
||||||
from game.dcs.unitproperty import UnitProperty
|
from game.dcs.unitproperty import UnitProperty
|
||||||
@ -462,6 +464,8 @@ class AircraftType(UnitType[Type[FlyingType]]):
|
|||||||
if FlightType.SEAD in task_priorities:
|
if FlightType.SEAD in task_priorities:
|
||||||
task_priorities[FlightType.SEAD_SWEEP] = task_priorities[FlightType.SEAD]
|
task_priorities[FlightType.SEAD_SWEEP] = task_priorities[FlightType.SEAD]
|
||||||
|
|
||||||
|
cls._custom_weapon_injections(aircraft, data)
|
||||||
|
|
||||||
for variant in data.get("variants", [aircraft.id]):
|
for variant in data.get("variants", [aircraft.id]):
|
||||||
yield AircraftType(
|
yield AircraftType(
|
||||||
dcs_unit_type=aircraft,
|
dcs_unit_type=aircraft,
|
||||||
@ -497,5 +501,21 @@ class AircraftType(UnitType[Type[FlyingType]]):
|
|||||||
task_priorities=task_priorities,
|
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:
|
def __hash__(self) -> int:
|
||||||
return hash(self.name)
|
return hash(self.name)
|
||||||
|
|||||||
@ -29,3 +29,12 @@ tasks:
|
|||||||
SEAD Escort: 110
|
SEAD Escort: 110
|
||||||
Strike: 360
|
Strike: 360
|
||||||
TARCAP: 160
|
TARCAP: 160
|
||||||
|
weapon_injections:
|
||||||
|
1:
|
||||||
|
- "{AIM-9J-ON-ADAPTER}"
|
||||||
|
2:
|
||||||
|
- "{AIM-9J-ON-ADAPTER}"
|
||||||
|
4:
|
||||||
|
- "{AIM-9J-ON-ADAPTER}"
|
||||||
|
5:
|
||||||
|
- "{AIM-9J-ON-ADAPTER}"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user