mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Don't create squadrons for removed bases.
This commit is contained in:
parent
a192e4c872
commit
94fb0d8c66
@ -35,10 +35,10 @@ class DefaultSquadronAssigner:
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def assign(self) -> None:
|
def assign(self) -> None:
|
||||||
for control_point, squadron_configs in self.config.by_location.items():
|
for control_point in self.game.theater.control_points_for(
|
||||||
if not control_point.is_friendly(self.coalition.player):
|
self.coalition.player
|
||||||
continue
|
):
|
||||||
for squadron_config in squadron_configs:
|
for squadron_config in self.config.by_location[control_point]:
|
||||||
squadron_def = self.find_squadron_for(squadron_config, control_point)
|
squadron_def = self.find_squadron_for(squadron_config, control_point)
|
||||||
if squadron_def is None:
|
if squadron_def is None:
|
||||||
logging.info(
|
logging.info(
|
||||||
|
|||||||
@ -12,7 +12,7 @@ from dcs.mapping import Point
|
|||||||
from game import Game
|
from game import Game
|
||||||
from game.factions.faction import Faction
|
from game.factions.faction import Faction
|
||||||
from game.scenery_group import SceneryGroup
|
from game.scenery_group import SceneryGroup
|
||||||
from game.theater import Carrier, Lha, PointWithHeading
|
from game.theater import PointWithHeading
|
||||||
from game.theater.theatergroundobject import (
|
from game.theater.theatergroundobject import (
|
||||||
BuildingGroundObject,
|
BuildingGroundObject,
|
||||||
CarrierGroundObject,
|
CarrierGroundObject,
|
||||||
@ -88,13 +88,12 @@ class GameGenerator:
|
|||||||
generator_settings: GeneratorSettings,
|
generator_settings: GeneratorSettings,
|
||||||
mod_settings: ModSettings,
|
mod_settings: ModSettings,
|
||||||
) -> None:
|
) -> None:
|
||||||
self.player = player
|
self.player = player.apply_mod_settings(mod_settings)
|
||||||
self.enemy = enemy
|
self.enemy = enemy.apply_mod_settings(mod_settings)
|
||||||
self.theater = theater
|
self.theater = theater
|
||||||
self.air_wing_config = air_wing_config
|
self.air_wing_config = air_wing_config
|
||||||
self.settings = settings
|
self.settings = settings
|
||||||
self.generator_settings = generator_settings
|
self.generator_settings = generator_settings
|
||||||
self.mod_settings = mod_settings
|
|
||||||
|
|
||||||
def generate(self) -> Game:
|
def generate(self) -> Game:
|
||||||
with logged_duration("TGO population"):
|
with logged_duration("TGO population"):
|
||||||
@ -102,8 +101,8 @@ class GameGenerator:
|
|||||||
namegen.reset()
|
namegen.reset()
|
||||||
self.prepare_theater()
|
self.prepare_theater()
|
||||||
game = Game(
|
game = Game(
|
||||||
player_faction=self.player.apply_mod_settings(self.mod_settings),
|
player_faction=self.player,
|
||||||
enemy_faction=self.enemy.apply_mod_settings(self.mod_settings),
|
enemy_faction=self.enemy,
|
||||||
theater=self.theater,
|
theater=self.theater,
|
||||||
air_wing_config=self.air_wing_config,
|
air_wing_config=self.air_wing_config,
|
||||||
start_date=self.generator_settings.start_date,
|
start_date=self.generator_settings.start_date,
|
||||||
@ -116,19 +115,27 @@ class GameGenerator:
|
|||||||
game.settings.version = VERSION
|
game.settings.version = VERSION
|
||||||
return game
|
return game
|
||||||
|
|
||||||
|
def should_remove_carrier(self, player: bool) -> bool:
|
||||||
|
faction = self.player if player else self.enemy
|
||||||
|
return self.generator_settings.no_carrier or not faction.carrier_names
|
||||||
|
|
||||||
|
def should_remove_lha(self, player: bool) -> bool:
|
||||||
|
faction = self.player if player else self.enemy
|
||||||
|
return self.generator_settings.no_lha or not faction.helicopter_carrier_names
|
||||||
|
|
||||||
def prepare_theater(self) -> None:
|
def prepare_theater(self) -> None:
|
||||||
to_remove: List[ControlPoint] = []
|
to_remove: List[ControlPoint] = []
|
||||||
|
|
||||||
# Remove carrier and lha, invert situation if needed
|
# Remove carrier and lha, invert situation if needed
|
||||||
for cp in self.theater.controlpoints:
|
for cp in self.theater.controlpoints:
|
||||||
if isinstance(cp, Carrier) and self.generator_settings.no_carrier:
|
|
||||||
to_remove.append(cp)
|
|
||||||
elif isinstance(cp, Lha) and self.generator_settings.no_lha:
|
|
||||||
to_remove.append(cp)
|
|
||||||
|
|
||||||
if self.generator_settings.inverted:
|
if self.generator_settings.inverted:
|
||||||
cp.starts_blue = cp.captured_invert
|
cp.starts_blue = cp.captured_invert
|
||||||
|
|
||||||
|
if cp.is_carrier and self.should_remove_carrier(cp.starts_blue):
|
||||||
|
to_remove.append(cp)
|
||||||
|
elif cp.is_lha and self.should_remove_lha(cp.starts_blue):
|
||||||
|
to_remove.append(cp)
|
||||||
|
|
||||||
# do remove
|
# do remove
|
||||||
for cp in to_remove:
|
for cp in to_remove:
|
||||||
self.theater.controlpoints.remove(cp)
|
self.theater.controlpoints.remove(cp)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user