diff --git a/game/ato/flightplans/ibuilder.py b/game/ato/flightplans/ibuilder.py index d7a3b6f1..0ae9f7c8 100644 --- a/game/ato/flightplans/ibuilder.py +++ b/game/ato/flightplans/ibuilder.py @@ -38,7 +38,7 @@ class IBuilder(ABC, Generic[FlightPlanT, LayoutT]): self._generate_package_waypoints_if_needed(dump_debug_info) self._flight_plan = self.build(dump_debug_info) except NavMeshError as ex: - color = "blue" if self.flight.squadron.player else "red" + color = "blue" if self.flight.squadron.player.is_blue else "red" raise PlanningError( f"Could not plan {color} {self.flight.flight_type.value} from " f"{self.flight.departure} to {self.package.target}" diff --git a/game/commander/tasks/frontlinestancetask.py b/game/commander/tasks/frontlinestancetask.py index 64a2e790..f453ac7d 100644 --- a/game/commander/tasks/frontlinestancetask.py +++ b/game/commander/tasks/frontlinestancetask.py @@ -27,7 +27,7 @@ class FrontLineStanceTask(TheaterCommanderTask, ABC): @staticmethod def management_allowed(state: TheaterState) -> bool: return ( - not state.context.coalition.player + not state.context.coalition.player.is_blue or state.context.settings.automate_front_line_stance ) diff --git a/game/commander/tasks/packageplanningtask.py b/game/commander/tasks/packageplanningtask.py index e929ca19..1e1cc1f1 100644 --- a/game/commander/tasks/packageplanningtask.py +++ b/game/commander/tasks/packageplanningtask.py @@ -45,7 +45,7 @@ class PackagePlanningTask(TheaterCommanderTask, Generic[MissionTargetT]): def preconditions_met(self, state: TheaterState) -> bool: if ( - state.context.coalition.player + state.context.coalition.player.is_blue and state.context.settings.auto_ato_behavior is AutoAtoBehavior.Disabled ): return False @@ -102,7 +102,7 @@ class PackagePlanningTask(TheaterCommanderTask, Generic[MissionTargetT]): return 1 def fulfill_mission(self, state: TheaterState) -> bool: - color = "blue" if state.context.coalition.player else "red" + color = "blue" if state.context.coalition.player.is_blue else "red" self.propose_flights() fulfiller = PackageFulfiller( state.context.coalition, @@ -214,7 +214,7 @@ class PackagePlanningTask(TheaterCommanderTask, Generic[MissionTargetT]): settings = state.context.coalition.game.settings margin = 100 - ( settings.ownfor_autoplanner_aggressiveness - if state.context.coalition.player + if state.context.coalition.player.is_blue else settings.opfor_autoplanner_aggressiveness ) threat_range = iads_threat.max_threat_range() * (margin / 100) diff --git a/game/commander/tasks/primitive/aewc.py b/game/commander/tasks/primitive/aewc.py index d19f6dfc..10cfde6a 100644 --- a/game/commander/tasks/primitive/aewc.py +++ b/game/commander/tasks/primitive/aewc.py @@ -12,7 +12,7 @@ from game.theater import MissionTarget class PlanAewc(PackagePlanningTask[MissionTarget]): def preconditions_met(self, state: TheaterState) -> bool: if ( - state.context.coalition.player + state.context.coalition.player.is_blue and not state.context.settings.auto_ato_behavior_awacs ): return False diff --git a/game/commander/tasks/primitive/recovery.py b/game/commander/tasks/primitive/recovery.py index f616fb81..da7be9a0 100644 --- a/game/commander/tasks/primitive/recovery.py +++ b/game/commander/tasks/primitive/recovery.py @@ -14,7 +14,7 @@ MARGIN = 4 # assume 4 aircraft can land without refueling class PlanRecovery(PackagePlanningTask[ControlPoint]): def preconditions_met(self, state: TheaterState) -> bool: if ( - state.context.coalition.player + state.context.coalition.player.is_blue and not state.context.settings.auto_ato_behavior_tankers ): return False diff --git a/game/commander/tasks/primitive/refueling.py b/game/commander/tasks/primitive/refueling.py index c863b46e..b34f53b9 100644 --- a/game/commander/tasks/primitive/refueling.py +++ b/game/commander/tasks/primitive/refueling.py @@ -12,7 +12,7 @@ from game.theater import MissionTarget class PlanRefueling(PackagePlanningTask[MissionTarget]): def preconditions_met(self, state: TheaterState) -> bool: if ( - state.context.coalition.player + state.context.coalition.player.is_blue and not state.context.settings.auto_ato_behavior_tankers ): return False diff --git a/game/missiongenerator/tgogenerator.py b/game/missiongenerator/tgogenerator.py index 7442a64f..2d78b695 100644 --- a/game/missiongenerator/tgogenerator.py +++ b/game/missiongenerator/tgogenerator.py @@ -866,7 +866,7 @@ class HelipadGenerator: if self.game.position_culled(helipad): cull_farp_statics = True - if self.cp.coalition.player: + if self.cp.coalition.player.is_blue: for package in self.cp.coalition.ato.packages: for flight in package.flights: if flight.squadron.location == self.cp: @@ -998,7 +998,7 @@ class GroundSpawnRoadbaseGenerator: cull_farp_statics = True elif self.game.position_culled(ground_spawn[0]): cull_farp_statics = True - if self.cp.coalition.player: + if self.cp.coalition.player.is_blue: for package in self.cp.coalition.ato.packages: for flight in package.flights: if flight.squadron.location == self.cp: @@ -1277,7 +1277,7 @@ class GroundSpawnGenerator: cull_farp_statics = True elif self.game.position_culled(vtol_pad[0]): cull_farp_statics = True - if self.cp.coalition.player: + if self.cp.coalition.player.is_blue: for package in self.cp.coalition.ato.packages: for flight in package.flights: if flight.squadron.location == self.cp: diff --git a/qt_ui/widgets/combos/QFlightTypeComboBox.py b/qt_ui/widgets/combos/QFlightTypeComboBox.py index b2ee30dd..1dd49169 100644 --- a/qt_ui/widgets/combos/QFlightTypeComboBox.py +++ b/qt_ui/widgets/combos/QFlightTypeComboBox.py @@ -5,6 +5,7 @@ from PySide6.QtWidgets import QComboBox from game.ato.flighttype import FlightType from game.settings.settings import Settings from game.theater import ConflictTheater, MissionTarget +from game.theater.player import Player class QFlightTypeComboBox(QComboBox): @@ -20,7 +21,9 @@ class QFlightTypeComboBox(QComboBox): super().__init__() self.theater = theater self.target = target - for mission_type in self.target.mission_types(for_player=is_ownfor): + for mission_type in self.target.mission_types( + for_player=Player.BLUE if is_ownfor else Player.RED + ): if mission_type == FlightType.AIR_ASSAULT and not settings.plugin_option( "ctld" ): diff --git a/qt_ui/windows/AirWingConfigurationDialog.py b/qt_ui/windows/AirWingConfigurationDialog.py index 1116527b..1b3fbced 100644 --- a/qt_ui/windows/AirWingConfigurationDialog.py +++ b/qt_ui/windows/AirWingConfigurationDialog.py @@ -276,14 +276,14 @@ class SquadronConfigurationBox(QGroupBox): self.parking_tracker.allocation_changed.connect(self.update_parking_label) left_column.addWidget(self.parking_label) - if not squadron.player and squadron.aircraft.flyable: + if not squadron.player.is_blue and squadron.aircraft.flyable: player_label = QLabel("Player slots not available for opfor") elif not squadron.aircraft.flyable: player_label = QLabel("Player slots not available for non-flyable aircraft") else: msg1 = "Player slots not available for opfor" msg2 = "Player slots not available for non-flyable aircraft" - text = msg2 if squadron.player else msg1 + text = msg2 if squadron.player.is_blue else msg1 player_label = QLabel(text) left_column.addWidget(player_label) @@ -291,7 +291,9 @@ class SquadronConfigurationBox(QGroupBox): "
".join(p.name for p in self.claim_players_from_squadron()) ) self.player_list.setAcceptRichText(False) - self.player_list.setEnabled(squadron.player and squadron.aircraft.flyable) + self.player_list.setEnabled( + squadron.player.is_blue and squadron.aircraft.flyable + ) left_column.addWidget(self.player_list) button_row = QHBoxLayout() @@ -388,7 +390,7 @@ class SquadronConfigurationBox(QGroupBox): return squadron def claim_players_from_squadron(self) -> list[Pilot]: - if not self.squadron.player: + if not self.squadron.player.is_blue: return [] players = [p for p in self.squadron.pilot_pool if p.player] @@ -397,7 +399,7 @@ class SquadronConfigurationBox(QGroupBox): return players def return_players_to_squadron(self) -> None: - if not self.squadron.player: + if not self.squadron.player.is_blue: return player_names = self.player_list.toPlainText().splitlines() diff --git a/qt_ui/windows/PendingTransfersDialog.py b/qt_ui/windows/PendingTransfersDialog.py index 980968ef..f046c8b5 100644 --- a/qt_ui/windows/PendingTransfersDialog.py +++ b/qt_ui/windows/PendingTransfersDialog.py @@ -58,7 +58,7 @@ class PendingTransfersList(QListView): index = self.indexAt(event.pos()) if not index.isValid(): return - if not self.transfer_model.transfer_at_index(index).player: + if not self.transfer_model.transfer_at_index(index).player.is_blue: return menu = QMenu("Menu") diff --git a/qt_ui/windows/groundobject/QGroundObjectMenu.py b/qt_ui/windows/groundobject/QGroundObjectMenu.py index 5c6da3fb..5fe6e96c 100644 --- a/qt_ui/windows/groundobject/QGroundObjectMenu.py +++ b/qt_ui/windows/groundobject/QGroundObjectMenu.py @@ -195,7 +195,9 @@ class QGroundObjectMenu(QDialog): lambda degrees: self.rotate_tgo(Heading(degrees)) ) self.orientationBoxLayout.addWidget(self.headingSelector) - can_adjust_heading = self.cp.is_friendly(to_player=self.game_model.is_ownfor) + can_adjust_heading = self.cp.is_friendly( + to_player=Player.BLUE if self.game_model.is_ownfor else Player.RED + ) if can_adjust_heading: self.head_to_conflict_button = QPushButton("Head to conflict") heading = ( diff --git a/qt_ui/windows/mission/QAutoCreateDialog.py b/qt_ui/windows/mission/QAutoCreateDialog.py index ce6d0cf2..d84e7281 100644 --- a/qt_ui/windows/mission/QAutoCreateDialog.py +++ b/qt_ui/windows/mission/QAutoCreateDialog.py @@ -17,6 +17,7 @@ from game.ato import FlightType from game.commander.missionproposals import ProposedFlight, ProposedMission from game.commander.packagefulfiller import PackageFulfiller from game.profiling import MultiEventTracer +from game.theater.player import Player from qt_ui.models import PackageModel from qt_ui.uiconstants import EVENT_ICONS @@ -193,7 +194,9 @@ class QAutoCreateDialog(QDialog): FlightType.ARMED_RECON, FlightType.AIR_ASSAULT, } - for mt in self.package.target.mission_types(self.is_ownfor): + for mt in self.package.target.mission_types( + Player.BLUE if self.is_ownfor else Player.RED + ): if mt in primary_tasks: self.primary_combobox.addItem(mt.value, mt) self.primary_combobox.setCurrentIndex(0) @@ -252,7 +255,9 @@ class QAutoCreateDialog(QDialog): with tracer.trace(f"Auto-plan package"): pm = ProposedMission(self.package.target, pf, asap=True) pff = PackageFulfiller( - self.game.coalition_for(self.is_ownfor), + self.game.coalition_for( + Player.BLUE if self.is_ownfor else Player.RED + ), self.game.theater, self.game.db.flights, self.game.settings,