This commit is contained in:
Simon Clark 2021-06-21 19:46:10 +01:00
commit ab51f5e69a
5 changed files with 16 additions and 11 deletions

View File

@ -33,6 +33,7 @@ Saves from 3.x are not compatible with 4.0.
## Fixes ## Fixes
* **[Campaign AI]** Fix procurement for factions that lack some unit types. * **[Campaign AI]** Fix procurement for factions that lack some unit types.
* **[Campaign AI]** Fix auto purchase of aircraft for factions that have no transport aircraft.
* **[Mission Generation]** Fixed problem with mission load when control point name contained an apostrophe. * **[Mission Generation]** Fixed problem with mission load when control point name contained an apostrophe.
* **[Mission Generation]** Fixed EWR group names so they contribute to Skynet again. * **[Mission Generation]** Fixed EWR group names so they contribute to Skynet again.
* **[Mission Generation]** Fixed duplicate name error when generating convoys and cargo ships when creating manual transfers after loading a game. * **[Mission Generation]** Fixed duplicate name error when generating convoys and cargo ships when creating manual transfers after loading a game.

View File

@ -368,6 +368,13 @@ class AirWing:
def squadrons_for(self, aircraft: AircraftType) -> Sequence[Squadron]: def squadrons_for(self, aircraft: AircraftType) -> Sequence[Squadron]:
return self.squadrons[aircraft] return self.squadrons[aircraft]
def can_auto_plan(self, task: FlightType) -> bool:
try:
next(self.auto_assignable_for_task(task))
return True
except StopIteration:
return False
def auto_assignable_for_task(self, task: FlightType) -> Iterator[Squadron]: def auto_assignable_for_task(self, task: FlightType) -> Iterator[Squadron]:
for squadron in self.iter_squadrons(): for squadron in self.iter_squadrons():
if squadron.can_auto_assign(task): if squadron.can_auto_assign(task):

View File

@ -592,7 +592,10 @@ class PendingTransfers:
def order_airlift_assets(self) -> None: def order_airlift_assets(self) -> None:
for control_point in self.game.theater.controlpoints: for control_point in self.game.theater.controlpoints:
self.order_airlift_assets_at(control_point) if self.game.air_wing_for(control_point.captured).can_auto_plan(
FlightType.TRANSPORT
):
self.order_airlift_assets_at(control_point)
@staticmethod @staticmethod
def desired_airlift_capacity(control_point: ControlPoint) -> int: def desired_airlift_capacity(control_point: ControlPoint) -> int:

View File

@ -604,14 +604,7 @@ class CoalitionMissionPlanner:
also possible for the player to exclude mission types from their squadron also possible for the player to exclude mission types from their squadron
designs. designs.
""" """
all_compatible = aircraft_for_task(mission_type) return self.game.air_wing_for(self.is_player).can_auto_plan(mission_type)
for squadron in self.game.air_wing_for(self.is_player).iter_squadrons():
if (
squadron.aircraft in all_compatible
and mission_type in squadron.auto_assignable_mission_types
):
return True
return False
def critical_missions(self) -> Iterator[ProposedMission]: def critical_missions(self) -> Iterator[ProposedMission]:
"""Identifies the most important missions to plan this turn. """Identifies the most important missions to plan this turn.

View File

@ -18,6 +18,7 @@ from game.data.weapons import (
WEAPON_INTRODUCTION_YEARS, WEAPON_INTRODUCTION_YEARS,
Weapon, Weapon,
) )
from game.db import FACTIONS
from game.profiling import logged_duration from game.profiling import logged_duration
from game.settings import Settings from game.settings import Settings
from game.theater.start_generator import GameGenerator, GeneratorSettings, ModSettings from game.theater.start_generator import GameGenerator, GeneratorSettings, ModSettings
@ -199,8 +200,8 @@ def create_game(
inject_custom_payloads(Path(persistency.base_path())) inject_custom_payloads(Path(persistency.base_path()))
campaign = Campaign.from_json(campaign_path) campaign = Campaign.from_json(campaign_path)
generator = GameGenerator( generator = GameGenerator(
blue, FACTIONS[blue],
red, FACTIONS[red],
campaign.load_theater(), campaign.load_theater(),
Settings( Settings(
supercarrier=supercarrier, supercarrier=supercarrier,