From cdb16cc591c2c2c0736a908dd2f19d17f21e99b2 Mon Sep 17 00:00:00 2001 From: Walter Date: Mon, 2 Nov 2020 19:00:50 -0600 Subject: [PATCH] Fixes #268 Changes red base info to show defenses first, and adds an attack option --- qt_ui/dialogs.py | 5 +++-- qt_ui/windows/basemenu/QBaseMenuTabs.py | 4 ++-- .../basemenu/base_defenses/QBaseDefenseGroupInfo.py | 13 +++++++++++-- qt_ui/windows/mission/QEditFlightDialog.py | 4 ++-- qt_ui/windows/mission/QPackageDialog.py | 11 ++++++----- qt_ui/windows/mission/flight/QFlightCreator.py | 4 ++-- 6 files changed, 26 insertions(+), 15 deletions(-) diff --git a/qt_ui/dialogs.py b/qt_ui/dialogs.py index f8cb6afc..75aa15fe 100644 --- a/qt_ui/dialogs.py +++ b/qt_ui/dialogs.py @@ -34,12 +34,13 @@ class Dialog: cls.game_model = game_model @classmethod - def open_new_package_dialog(cls, mission_target: MissionTarget): + def open_new_package_dialog(cls, mission_target: MissionTarget, parent=None): """Opens the dialog to create a new package with the given target.""" cls.new_package_dialog = QNewPackageDialog( cls.game_model, cls.game_model.ato_model, - mission_target + mission_target, + parent=parent ) cls.new_package_dialog.show() diff --git a/qt_ui/windows/basemenu/QBaseMenuTabs.py b/qt_ui/windows/basemenu/QBaseMenuTabs.py index 11846bda..0c82c86e 100644 --- a/qt_ui/windows/basemenu/QBaseMenuTabs.py +++ b/qt_ui/windows/basemenu/QBaseMenuTabs.py @@ -16,11 +16,11 @@ class QBaseMenuTabs(QTabWidget): if cp: if not cp.captured: - self.intel = QIntelInfo(cp, game_model.game) - self.addTab(self.intel, "Intel") if not cp.is_carrier: self.base_defenses_hq = QBaseDefensesHQ(cp, game_model.game) self.addTab(self.base_defenses_hq, "Base Defenses") + self.intel = QIntelInfo(cp, game_model.game) + self.addTab(self.intel, "Intel") else: if cp.has_runway(): self.airfield_command = QAirfieldCommand(cp, game_model) diff --git a/qt_ui/windows/basemenu/base_defenses/QBaseDefenseGroupInfo.py b/qt_ui/windows/basemenu/base_defenses/QBaseDefenseGroupInfo.py index 370cf65a..48974305 100644 --- a/qt_ui/windows/basemenu/base_defenses/QBaseDefenseGroupInfo.py +++ b/qt_ui/windows/basemenu/base_defenses/QBaseDefenseGroupInfo.py @@ -1,6 +1,7 @@ from PySide2.QtCore import Qt from PySide2.QtWidgets import QGridLayout, QLabel, QGroupBox, QPushButton, QVBoxLayout +from qt_ui.dialogs import Dialog from qt_ui.uiconstants import VEHICLES_ICONS from qt_ui.windows.groundobject.QGroundObjectMenu import QGroundObjectMenu from theater import ControlPoint, TheaterGroundObject @@ -23,12 +24,17 @@ class QBaseDefenseGroupInfo(QGroupBox): def init_ui(self): self.buildLayout() + self.main_layout.addLayout(self.unit_layout) + if not self.cp.captured: + attack_button = QPushButton("Attack") + attack_button.setProperty("style", "btn-danger") + attack_button.setMaximumWidth(180) + attack_button.clicked.connect(self.onAttack) + self.main_layout.addWidget(attack_button, 0, Qt.AlignLeft) manage_button = QPushButton("Manage") manage_button.setProperty("style", "btn-success") manage_button.setMaximumWidth(180) manage_button.clicked.connect(self.onManage) - - self.main_layout.addLayout(self.unit_layout) self.main_layout.addWidget(manage_button, 0, Qt.AlignLeft) self.setLayout(self.main_layout) @@ -66,6 +72,9 @@ class QBaseDefenseGroupInfo(QGroupBox): self.setLayout(self.main_layout) + + def onAttack(self): + Dialog.open_new_package_dialog(self.ground_object, parent=self.window()) def onManage(self): self.edition_menu = QGroundObjectMenu(self.window(), self.ground_object, self.buildings, self.cp, self.game) diff --git a/qt_ui/windows/mission/QEditFlightDialog.py b/qt_ui/windows/mission/QEditFlightDialog.py index bfbcc5cb..629a7836 100644 --- a/qt_ui/windows/mission/QEditFlightDialog.py +++ b/qt_ui/windows/mission/QEditFlightDialog.py @@ -15,8 +15,8 @@ from qt_ui.windows.mission.flight.QFlightPlanner import QFlightPlanner class QEditFlightDialog(QDialog): """Dialog window for editing flight plans and loadouts.""" - def __init__(self, game_model: GameModel, package: Package, flight: Flight) -> None: - super().__init__() + def __init__(self, game_model: GameModel, package: Package, flight: Flight, parent=None) -> None: + super().__init__(parent=parent) self.game_model = game_model diff --git a/qt_ui/windows/mission/QPackageDialog.py b/qt_ui/windows/mission/QPackageDialog.py index 850ddd2e..6298379f 100644 --- a/qt_ui/windows/mission/QPackageDialog.py +++ b/qt_ui/windows/mission/QPackageDialog.py @@ -36,8 +36,8 @@ class QPackageDialog(QDialog): #: Emitted when a change is made to the package. package_changed = Signal() - def __init__(self, game_model: GameModel, model: PackageModel) -> None: - super().__init__() + def __init__(self, game_model: GameModel, model: PackageModel, parent=None) -> None: + super().__init__(parent) self.game_model = game_model self.package_model = model self.add_flight_dialog: Optional[QFlightCreator] = None @@ -156,7 +156,8 @@ class QPackageDialog(QDialog): def on_add_flight(self) -> None: """Opens the new flight dialog.""" self.add_flight_dialog = QFlightCreator(self.game, - self.package_model.package) + self.package_model.package, + parent=self.window()) self.add_flight_dialog.created.connect(self.add_flight) self.add_flight_dialog.show() @@ -189,8 +190,8 @@ class QNewPackageDialog(QPackageDialog): """ def __init__(self, game_model: GameModel, model: AtoModel, - target: MissionTarget) -> None: - super().__init__(game_model, PackageModel(Package(target))) + target: MissionTarget, parent=None) -> None: + super().__init__(game_model, PackageModel(Package(target)), parent=parent) self.ato_model = model self.save_button = QPushButton("Save") diff --git a/qt_ui/windows/mission/flight/QFlightCreator.py b/qt_ui/windows/mission/flight/QFlightCreator.py index c6e5d18a..1a714b28 100644 --- a/qt_ui/windows/mission/flight/QFlightCreator.py +++ b/qt_ui/windows/mission/flight/QFlightCreator.py @@ -23,8 +23,8 @@ from theater import ControlPoint class QFlightCreator(QDialog): created = Signal(Flight) - def __init__(self, game: Game, package: Package) -> None: - super().__init__() + def __init__(self, game: Game, package: Package, parent=None) -> None: + super().__init__(parent=parent) self.game = game self.package = package