Configure target points for F-15E S4+.

We don't need explicit configuration of initial points. The plane
automatically configures any steerpoint immediately before a target
point as an initial point.

Target offset points and aim points have not been implemented because I
can't find any information the describes their intent.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/3088.
This commit is contained in:
Dan Albert
2023-07-23 12:26:01 -07:00
parent d2152a259c
commit c7a991687c
6 changed files with 30 additions and 5 deletions

View File

@@ -208,6 +208,8 @@ class AircraftType(UnitType[Type[FlyingType]]):
laser_code_configs: list[LaserCodeConfig]
use_f15e_waypoint_names: bool
_by_name: ClassVar[dict[str, AircraftType]] = {}
_by_unit_type: ClassVar[dict[type[FlyingType], list[AircraftType]]] = defaultdict(
list
@@ -502,6 +504,7 @@ class AircraftType(UnitType[Type[FlyingType]]):
laser_code_configs=[
LaserCodeConfig.from_yaml(d) for d in data.get("laser_codes", [])
],
use_f15e_waypoint_names=data.get("use_f15e_waypoint_names", False),
)
def __hash__(self) -> int:

View File

@@ -43,11 +43,14 @@ class PydcsWaypointBuilder:
self.unit_map = unit_map
self.generated_waypoint_idx = generated_waypoint_idx
def dcs_name_for_waypoint(self) -> str:
return self.waypoint.name
def build(self) -> MovingPoint:
waypoint = self.group.add_waypoint(
self.waypoint.position,
self.waypoint.alt.meters,
name=self.waypoint.name,
name=self.dcs_name_for_waypoint(),
)
if self.waypoint.flyover:

View File

@@ -0,0 +1,14 @@
from .pydcswaypointbuilder import PydcsWaypointBuilder
class TargetBuilder(PydcsWaypointBuilder):
"""Waypoint builder for target waypoint types.
This handles both precise target locations (TARGET_POINT) and target areas
(TARGET_GROUP_LOC).
"""
def dcs_name_for_waypoint(self) -> str:
if self.flight.unit_type.use_f15e_waypoint_names:
return f"#T {self.waypoint.name}"
return super().dcs_name_for_waypoint()

View File

@@ -43,6 +43,7 @@ from .seadingress import SeadIngressBuilder
from .splitpoint import SplitPointBuilder
from .strikeingress import StrikeIngressBuilder
from .sweepingress import SweepIngressBuilder
from .target import TargetBuilder
class WaypointGenerator:
@@ -128,6 +129,8 @@ class WaypointGenerator:
self, waypoint: FlightWaypoint, generated_waypoint_index: int
) -> PydcsWaypointBuilder:
builders = {
FlightWaypointType.CARGO_STOP: CargoStopBuilder,
FlightWaypointType.DROPOFF_ZONE: LandingZoneBuilder,
FlightWaypointType.INGRESS_ANTI_SHIP: AntiShipIngressBuilder,
FlightWaypointType.INGRESS_BAI: BaiIngressBuilder,
FlightWaypointType.INGRESS_CAS: CasIngressBuilder,
@@ -138,16 +141,16 @@ class WaypointGenerator:
FlightWaypointType.INGRESS_STRIKE: StrikeIngressBuilder,
FlightWaypointType.INGRESS_SWEEP: SweepIngressBuilder,
FlightWaypointType.JOIN: JoinPointBuilder,
FlightWaypointType.SPLIT: SplitPointBuilder,
FlightWaypointType.LANDING_POINT: LandingPointBuilder,
FlightWaypointType.LOITER: HoldPointBuilder,
FlightWaypointType.PATROL: RaceTrackEndBuilder,
FlightWaypointType.PATROL_TRACK: RaceTrackBuilder,
FlightWaypointType.PICKUP_ZONE: LandingZoneBuilder,
FlightWaypointType.DROPOFF_ZONE: LandingZoneBuilder,
FlightWaypointType.REFUEL: RefuelPointBuilder,
FlightWaypointType.RECOVERY_TANKER: RecoveryTankerBuilder,
FlightWaypointType.CARGO_STOP: CargoStopBuilder,
FlightWaypointType.REFUEL: RefuelPointBuilder,
FlightWaypointType.SPLIT: SplitPointBuilder,
FlightWaypointType.TARGET_GROUP_LOC: TargetBuilder,
FlightWaypointType.TARGET_POINT: TargetBuilder,
}
builder = builders.get(waypoint.waypoint_type, DefaultWaypointBuilder)
return builder(