From add81472c67cad7f0e9ae8de93bb59a67a9cbe3a Mon Sep 17 00:00:00 2001 From: Raffson Date: Tue, 24 Dec 2024 05:07:03 +0100 Subject: [PATCH] Schedule 2 simultaneous BARCAPs over carriers --- game/commander/missionscheduler.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/game/commander/missionscheduler.py b/game/commander/missionscheduler.py index 093c3ea5..1306e3f3 100644 --- a/game/commander/missionscheduler.py +++ b/game/commander/missionscheduler.py @@ -8,7 +8,7 @@ from typing import Iterator, TYPE_CHECKING from game.ato.flighttype import FlightType from game.ato.traveltime import TotEstimator -from game.theater import MissionTarget +from game.theater import MissionTarget, NavalControlPoint if TYPE_CHECKING: from game.coalition import Coalition @@ -44,6 +44,9 @@ class MissionScheduler: carrier_etas = [] previous_aewc_end_time: dict[MissionTarget, datetime] = defaultdict(now.replace) + max_carrier_simultaneous_barcaps = 2 # TODO: make configurable + carrier_barcaps: dict[MissionTarget, int] = defaultdict(int) + start_time = start_time_generator( count=len(non_dca_packages), earliest=5 * 60, @@ -67,7 +70,13 @@ class MissionScheduler: departure_time = self._get_departure_time(package) if departure_time is None: continue - previous_cap_end_time[package.target] = departure_time + is_naval_cp = isinstance(package.target, NavalControlPoint) + count = carrier_barcaps[package.target] + if count >= max_carrier_simultaneous_barcaps and is_naval_cp: + previous_cap_end_time[package.target] = departure_time + carrier_barcaps[package.target] = 0 + elif isinstance(package.target, NavalControlPoint): + carrier_barcaps[package.target] += 1 elif package.auto_asap: package.set_tot_asap(now) elif package.primary_task is FlightType.AEWC: