diff --git a/game/settings.py b/game/settings.py index d5872e91..431ec361 100644 --- a/game/settings.py +++ b/game/settings.py @@ -30,6 +30,7 @@ class Settings: automate_front_line_reinforcements: bool = False automate_aircraft_reinforcements: bool = False restrict_weapons_by_date: bool = False + disable_legacy_aewc: bool = False # Performance oriented perf_red_alert_state: bool = True diff --git a/gen/airsupportgen.py b/gen/airsupportgen.py index ed13d830..71c54c42 100644 --- a/gen/airsupportgen.py +++ b/gen/airsupportgen.py @@ -21,6 +21,9 @@ from .conflictgen import Conflict from .radios import RadioFrequency, RadioRegistry from .tacan import TacanBand, TacanChannel, TacanRegistry + + + TANKER_DISTANCE = 15000 TANKER_ALT = 4572 TANKER_HEADING_OFFSET = 45 @@ -133,28 +136,29 @@ class AirSupportConflictGenerator: self.air_support.tankers.append(TankerInfo(str(tanker_group.name), callsign, variant, freq, tacan)) - possible_awacs = db.find_unittype(AWACS, self.conflict.attackers_side) + if not self.game.settings.disable_legacy_aewc: + possible_awacs = db.find_unittype(AWACS, self.conflict.attackers_side) - if len(possible_awacs) > 0: - awacs_unit = possible_awacs[0] - freq = self.radio_registry.alloc_uhf() - - awacs_flight = self.mission.awacs_flight( - country=self.mission.country(self.game.player_country), - name=namegen.next_awacs_name(self.mission.country(self.game.player_country)), - plane_type=awacs_unit, - altitude=AWACS_ALT, - airport=None, - position=self.conflict.position.random_point_within(AWACS_DISTANCE, AWACS_DISTANCE), - frequency=freq.mhz, - start_type=StartType.Warm, - ) - awacs_flight.set_frequency(freq.mhz) + if len(possible_awacs) > 0: + awacs_unit = possible_awacs[0] + freq = self.radio_registry.alloc_uhf() - awacs_flight.points[0].tasks.append(SetInvisibleCommand(True)) - awacs_flight.points[0].tasks.append(SetImmortalCommand(True)) + awacs_flight = self.mission.awacs_flight( + country=self.mission.country(self.game.player_country), + name=namegen.next_awacs_name(self.mission.country(self.game.player_country)), + plane_type=awacs_unit, + altitude=AWACS_ALT, + airport=None, + position=self.conflict.position.random_point_within(AWACS_DISTANCE, AWACS_DISTANCE), + frequency=freq.mhz, + start_type=StartType.Warm, + ) + awacs_flight.set_frequency(freq.mhz) - self.air_support.awacs.append(AwacsInfo( - str(awacs_flight.name), callsign_for_support_unit(awacs_flight), freq)) - else: - logging.warning("No AWACS for faction") \ No newline at end of file + awacs_flight.points[0].tasks.append(SetInvisibleCommand(True)) + awacs_flight.points[0].tasks.append(SetImmortalCommand(True)) + + self.air_support.awacs.append(AwacsInfo( + str(awacs_flight.name), callsign_for_support_unit(awacs_flight), freq)) + else: + logging.warning("No AWACS for faction") \ No newline at end of file diff --git a/qt_ui/windows/settings/QSettingsWindow.py b/qt_ui/windows/settings/QSettingsWindow.py index dad76e8d..3f39e6a1 100644 --- a/qt_ui/windows/settings/QSettingsWindow.py +++ b/qt_ui/windows/settings/QSettingsWindow.py @@ -309,6 +309,28 @@ class QSettingsWindow(QDialog): general_layout.addWidget(restrict_weapons_label, 0, 0) general_layout.addWidget(restrict_weapons, 0, 1, Qt.AlignRight) + def set_old_awec(value: bool) -> None: + self.game.settings.disable_legacy_aewc = value + + old_awac = QCheckBox() + old_awac.setChecked(self.game.settings.disable_legacy_aewc) + old_awac.toggled.connect(set_old_awec) + + old_awec_info = ( + "If checked, the invulnerable friendly AEW&C aircraft that begins " + "the mission in the air will not be spawned. AEW&C missions must " + "be planned in the ATO and will take time to arrive on-station." + ) + + old_awac.setToolTip(old_awec_info) + old_awac_label = QLabel( + "Disable invulnerable, always-available AEW&C (WIP)" + ) + old_awac_label.setToolTip(old_awec_info) + + general_layout.addWidget(old_awac_label, 1, 0) + general_layout.addWidget(old_awac, 1, 1, Qt.AlignRight) + automation = QGroupBox("HQ Automation") campaign_layout.addWidget(automation)