diff --git a/gen/aircraft.py b/gen/aircraft.py
index 070670f6..88824e36 100644
--- a/gen/aircraft.py
+++ b/gen/aircraft.py
@@ -997,7 +997,7 @@ class AircraftConflictGenerator:
flight: Flight, timing: PackageWaypointTiming,
dynamic_runways: Dict[str, RunwayData]) -> None:
flight_type = flight.flight_type
- if flight_type in [FlightType.CAP, FlightType.BARCAP, FlightType.TARCAP,
+ if flight_type in [FlightType.BARCAP, FlightType.TARCAP,
FlightType.INTERCEPTION]:
self.configure_cap(group, flight, dynamic_runways)
elif flight_type in [FlightType.CAS, FlightType.BAI]:
diff --git a/gen/flights/ai_flight_planner.py b/gen/flights/ai_flight_planner.py
index 01f5d1b4..a1473433 100644
--- a/gen/flights/ai_flight_planner.py
+++ b/gen/flights/ai_flight_planner.py
@@ -131,7 +131,7 @@ class AircraftAllocator:
@staticmethod
def preferred_aircraft_for_task(task: FlightType) -> List[Type[FlyingType]]:
- cap_missions = (FlightType.BARCAP, FlightType.CAP, FlightType.TARCAP)
+ cap_missions = (FlightType.BARCAP, FlightType.TARCAP)
if task in cap_missions:
return CAP_PREFERRED
elif task == FlightType.CAS:
@@ -147,7 +147,7 @@ class AircraftAllocator:
@staticmethod
def capable_aircraft_for_task(task: FlightType) -> List[Type[FlyingType]]:
- cap_missions = (FlightType.BARCAP, FlightType.CAP, FlightType.TARCAP)
+ cap_missions = (FlightType.BARCAP, FlightType.TARCAP)
if task in cap_missions:
return CAP_CAPABLE
elif task == FlightType.CAS:
@@ -403,7 +403,7 @@ class CoalitionMissionPlanner:
# Find friendly CPs within 100 nmi from an enemy airfield, plan CAP.
for cp in self.objective_finder.vulnerable_control_points():
yield ProposedMission(cp, [
- ProposedFlight(FlightType.CAP, 2, self.MAX_CAP_RANGE),
+ ProposedFlight(FlightType.BARCAP, 2, self.MAX_CAP_RANGE),
])
# Find front lines, plan CAP.
@@ -492,11 +492,7 @@ class CoalitionMissionPlanner:
error = random.randint(-margin, margin)
yield max(0, time + error)
- dca_types = (
- FlightType.BARCAP,
- FlightType.CAP,
- FlightType.INTERCEPTION,
- )
+ dca_types = (FlightType.BARCAP, FlightType.INTERCEPTION)
non_dca_packages = [p for p in self.ato.packages if
p.primary_task not in dca_types]
diff --git a/gen/flights/flight.py b/gen/flights/flight.py
index 85fe4c17..bd879daa 100644
--- a/gen/flights/flight.py
+++ b/gen/flights/flight.py
@@ -8,7 +8,7 @@ from theater.controlpoint import ControlPoint, MissionTarget
class FlightType(Enum):
- CAP = 0
+ CAP = 0 # Do not use. Use BARCAP or TARCAP.
TARCAP = 1
BARCAP = 2
CAS = 3
diff --git a/gen/flights/flightplan.py b/gen/flights/flightplan.py
index 0a3a3174..9bc06473 100644
--- a/gen/flights/flightplan.py
+++ b/gen/flights/flightplan.py
@@ -69,8 +69,6 @@ class FlightPlanBuilder:
logging.error("BAI flight plan generation not implemented")
elif task == FlightType.BARCAP:
self.generate_barcap(flight)
- elif task == FlightType.CAP:
- self.generate_barcap(flight)
elif task == FlightType.CAS:
self.generate_cas(flight)
elif task == FlightType.DEAD:
@@ -103,6 +101,8 @@ class FlightPlanBuilder:
logging.error(
"Troop transport flight plan generation not implemented"
)
+ else:
+ logging.error(f"Unsupported task type: {task.name}")
except InvalidObjectiveLocation:
logging.exception(f"Could not create flight plan")
diff --git a/gen/flights/traveltime.py b/gen/flights/traveltime.py
index 7340715e..a4690f1a 100644
--- a/gen/flights/traveltime.py
+++ b/gen/flights/traveltime.py
@@ -19,7 +19,6 @@ from gen.flights.flight import (
CAP_DURATION = 30 # Minutes
-CAP_TYPES = (FlightType.BARCAP, FlightType.CAP)
INGRESS_TYPES = {
FlightWaypointType.INGRESS_CAS,
@@ -151,7 +150,7 @@ class TotEstimator:
# Takeoff immediately.
return 0
- if self.package.primary_task in CAP_TYPES:
+ if self.package.primary_task == FlightType.BARCAP:
start_time = self.timing.race_track_start
else:
start_time = self.timing.join
@@ -184,7 +183,7 @@ class TotEstimator:
# the package.
return 0
- if self.package.primary_task in CAP_TYPES:
+ if self.package.primary_task == FlightType.BARCAP:
# The racetrack start *is* the target. The package target is the
# protected objective.
time_to_target = 0
@@ -278,14 +277,14 @@ class PackageWaypointTiming:
@property
def race_track_start(self) -> int:
- if self.package.primary_task in CAP_TYPES:
+ if self.package.primary_task == FlightType.BARCAP:
return self.package.time_over_target
else:
return self.ingress
@property
def race_track_end(self) -> int:
- if self.package.primary_task in CAP_TYPES:
+ if self.package.primary_task == FlightType.BARCAP:
return self.target + CAP_DURATION * 60
else:
return self.egress
diff --git a/qt_ui/widgets/combos/QFlightTypeComboBox.py b/qt_ui/widgets/combos/QFlightTypeComboBox.py
index 9577b26c..429ff902 100644
--- a/qt_ui/widgets/combos/QFlightTypeComboBox.py
+++ b/qt_ui/widgets/combos/QFlightTypeComboBox.py
@@ -19,7 +19,6 @@ class QFlightTypeComboBox(QComboBox):
COMMON_ENEMY_MISSIONS = [
FlightType.ESCORT,
- FlightType.TARCAP,
FlightType.SEAD,
FlightType.DEAD,
# TODO: FlightType.ELINT,
@@ -27,42 +26,46 @@ class QFlightTypeComboBox(QComboBox):
# TODO: FlightType.RECON,
]
- FRIENDLY_AIRBASE_MISSIONS = [
- FlightType.CAP,
- # TODO: FlightType.INTERCEPTION
- # TODO: FlightType.LOGISTICS
+ COMMON_FRIENDLY_MISSIONS = [
+ FlightType.BARCAP,
]
+ FRIENDLY_AIRBASE_MISSIONS = [
+ # TODO: FlightType.INTERCEPTION
+ # TODO: FlightType.LOGISTICS
+ ] + COMMON_FRIENDLY_MISSIONS
+
FRIENDLY_CARRIER_MISSIONS = [
- FlightType.BARCAP,
# TODO: FlightType.INTERCEPTION
# TODO: Buddy tanking for the A-4?
# TODO: Rescue chopper?
# TODO: Inter-ship logistics?
- ]
+ ] + COMMON_FRIENDLY_MISSIONS
ENEMY_CARRIER_MISSIONS = [
FlightType.ESCORT,
- FlightType.TARCAP,
+ FlightType.BARCAP,
# TODO: FlightType.ANTISHIP
]
ENEMY_AIRBASE_MISSIONS = [
+ FlightType.BARCAP,
# TODO: FlightType.STRIKE
] + COMMON_ENEMY_MISSIONS
FRIENDLY_GROUND_OBJECT_MISSIONS = [
- FlightType.CAP,
# TODO: FlightType.LOGISTICS
# TODO: FlightType.TROOP_TRANSPORT
- ]
+ ] + COMMON_FRIENDLY_MISSIONS
ENEMY_GROUND_OBJECT_MISSIONS = [
+ FlightType.BARCAP,
FlightType.STRIKE,
] + COMMON_ENEMY_MISSIONS
FRONT_LINE_MISSIONS = [
FlightType.CAS,
+ FlightType.TARCAP,
# TODO: FlightType.TROOP_TRANSPORT
# TODO: FlightType.EVAC
] + COMMON_ENEMY_MISSIONS
diff --git a/qt_ui/windows/mission/flight/waypoints/QFlightWaypointTab.py b/qt_ui/windows/mission/flight/waypoints/QFlightWaypointTab.py
index 98064b5c..21a85a84 100644
--- a/qt_ui/windows/mission/flight/waypoints/QFlightWaypointTab.py
+++ b/qt_ui/windows/mission/flight/waypoints/QFlightWaypointTab.py
@@ -54,6 +54,7 @@ class QFlightWaypointTab(QFrame):
rlayout.addWidget(QLabel("Generator :"))
rlayout.addWidget(QLabel("AI compatible"))
+ # TODO: Filter by objective type.
self.recreate_buttons.clear()
recreate_types = [
FlightType.CAS,
@@ -137,13 +138,16 @@ class QFlightWaypointTab(QFrame):
QMessageBox.Yes
)
if result == QMessageBox.Yes:
- # TODO: These should all be just CAP.
+ # TODO: Should be buttons for both BARCAP and TARCAP.
+ # BARCAP and TARCAP behave differently. TARCAP arrives a few minutes
+ # ahead of the rest of the package and stays until the package
+ # departs, whereas BARCAP usually isn't part of a strike package and
+ # has a fixed mission time.
if task == FlightType.CAP:
if isinstance(self.package.target, FrontLine):
task = FlightType.TARCAP
elif isinstance(self.package.target, ControlPoint):
- if self.package.target.is_fleet:
- task = FlightType.BARCAP
+ task = FlightType.BARCAP
self.flight.flight_type = task
self.planner.populate_flight_plan(self.flight)
self.flight_waypoint_list.update_list()