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
971 B
Python
30 lines
971 B
Python
from __future__ import annotations
|
|
|
|
import logging
|
|
from typing import Type
|
|
|
|
from game.theater import Airfield
|
|
from .formationattack import FormationAttackBuilder, FormationAttackFlightPlan
|
|
from .invalidobjectivelocation import InvalidObjectiveLocation
|
|
from ..flightwaypointtype import FlightWaypointType
|
|
|
|
|
|
class OcaRunwayFlightPlan(FormationAttackFlightPlan):
|
|
@staticmethod
|
|
def builder_type() -> Type[Builder]:
|
|
return Builder
|
|
|
|
|
|
class Builder(FormationAttackBuilder[OcaRunwayFlightPlan]):
|
|
def build(self) -> FormationAttackFlightPlan:
|
|
location = self.package.target
|
|
|
|
if not isinstance(location, Airfield):
|
|
logging.exception(
|
|
f"Invalid Objective Location for OCA/Runway flight "
|
|
f"{self.flight=} at {location=}."
|
|
)
|
|
raise InvalidObjectiveLocation(self.flight.flight_type, location)
|
|
|
|
return self._build(OcaRunwayFlightPlan, FlightWaypointType.INGRESS_OCA_RUNWAY)
|