mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Split the oversized file into one per plan type. This also moves the layout responsibility out of the oversized FlightPlanBuilder and into each flight plan type file.
30 lines
1.0 KiB
Python
30 lines
1.0 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Type
|
|
|
|
from game.theater import TheaterGroundObject
|
|
from .formationattack import FormationAttackBuilder, FormationAttackFlightPlan
|
|
from .invalidobjectivelocation import InvalidObjectiveLocation
|
|
from .waypointbuilder import StrikeTarget
|
|
from ..flightwaypointtype import FlightWaypointType
|
|
|
|
|
|
class StrikeFlightPlan(FormationAttackFlightPlan):
|
|
@staticmethod
|
|
def builder_type() -> Type[Builder]:
|
|
return Builder
|
|
|
|
|
|
class Builder(FormationAttackBuilder[StrikeFlightPlan]):
|
|
def build(self) -> FormationAttackFlightPlan:
|
|
location = self.package.target
|
|
|
|
if not isinstance(location, TheaterGroundObject):
|
|
raise InvalidObjectiveLocation(self.flight.flight_type, location)
|
|
|
|
targets: list[StrikeTarget] = []
|
|
for idx, unit in enumerate(location.strike_targets):
|
|
targets.append(StrikeTarget(f"{unit.type.id} #{idx}", unit))
|
|
|
|
return self._build(StrikeFlightPlan, FlightWaypointType.INGRESS_STRIKE, targets)
|