From 970888b5ca3dfadb99abc78ecb67e4707d829c28 Mon Sep 17 00:00:00 2001 From: root0fall Date: Mon, 17 Aug 2020 12:09:48 +0800 Subject: [PATCH] add budget preview to purchase dialogue --- qt_ui/windows/basemenu/QBaseMenu2.py | 11 ++++++++--- qt_ui/windows/basemenu/QRecruitBehaviour.py | 14 ++++++++++++++ resources/stylesheets/style-dcs.css | 5 +++++ 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/qt_ui/windows/basemenu/QBaseMenu2.py b/qt_ui/windows/basemenu/QBaseMenu2.py index d74a72b8..678f6098 100644 --- a/qt_ui/windows/basemenu/QBaseMenu2.py +++ b/qt_ui/windows/basemenu/QBaseMenu2.py @@ -7,6 +7,7 @@ from game.event import ControlPointType from qt_ui.uiconstants import EVENT_ICONS from qt_ui.windows.GameUpdateSignal import GameUpdateSignal from qt_ui.windows.basemenu.QBaseMenuTabs import QBaseMenuTabs +from qt_ui.windows.basemenu.QRecruitBehaviour import QRecruitBehaviour from theater import ControlPoint @@ -19,6 +20,7 @@ class QBaseMenu2(QDialog): self.cp = cp self.game = game self.is_carrier = self.cp.cptype in [ControlPointType.AIRCRAFT_CARRIER_GROUP, ControlPointType.LHA_GROUP] + self.objectName = "menuDialogue" # Widgets self.qbase_menu_tab = QBaseMenuTabs(cp, game) @@ -58,7 +60,6 @@ class QBaseMenu2(QDialog): title.setProperty("style", "base-title") unitsPower = QLabel("{} / {} / Runway : {}".format(self.cp.base.total_planes, self.cp.base.total_armor, "Available" if self.cp.has_runway() else "Unavailable")) - self.topLayout.addWidget(title) self.topLayout.addWidget(unitsPower) self.topLayout.setAlignment(Qt.AlignTop) @@ -69,7 +70,11 @@ class QBaseMenu2(QDialog): self.mainLayout.addWidget(header, 0, 0) self.mainLayout.addWidget(self.topLayoutWidget, 1, 0) self.mainLayout.addWidget(self.qbase_menu_tab, 2, 0) - + totalBudget = QLabel(QRecruitBehaviour.BUDGET_FORMAT.format(self.game.budget)) + totalBudget.setObjectName("budgetField") + totalBudget.setAlignment(Qt.AlignRight | Qt.AlignBottom) + totalBudget.setProperty("style", "budget-label") + self.mainLayout.addWidget(totalBudget) self.setLayout(self.mainLayout) def closeEvent(self, closeEvent:QCloseEvent): @@ -81,4 +86,4 @@ class QBaseMenu2(QDialog): elif self.cp.cptype == ControlPointType.LHA_GROUP: return "./resources/ui/lha.png" else: - return "./resources/ui/airbase.png" \ No newline at end of file + return "./resources/ui/airbase.png" diff --git a/qt_ui/windows/basemenu/QRecruitBehaviour.py b/qt_ui/windows/basemenu/QRecruitBehaviour.py index 86844e65..aa5c680b 100644 --- a/qt_ui/windows/basemenu/QRecruitBehaviour.py +++ b/qt_ui/windows/basemenu/QRecruitBehaviour.py @@ -5,6 +5,7 @@ from dcs.unittype import UnitType from theater import db + class QRecruitBehaviour: game = None @@ -12,10 +13,12 @@ class QRecruitBehaviour: deliveryEvent = None existing_units_labels = None bought_amount_labels = None + BUDGET_FORMAT = "Available Budget: ${}M" def __init__(self): self.bought_amount_labels = {} self.existing_units_labels = {} + self.update_available_budget() def add_purchase_row(self, unit_type, layout, row): @@ -91,12 +94,22 @@ class QRecruitBehaviour: self.cp.base.total_units_of_type(unit_type) )) + def update_available_budget(self): + parent = self.parent() + while parent.objectName != "menuDialogue": + parent = parent.parent() + for child in parent.children(): + if child.objectName() == "budgetField": + child.setText(QRecruitBehaviour.BUDGET_FORMAT.format(self.game.budget)) + def buy(self, unit_type): + price = db.PRICES[unit_type] if self.game.budget >= price: self.deliveryEvent.deliver({unit_type: 1}) self.game.budget -= price self._update_count_label(unit_type) + self.update_available_budget() def sell(self, unit_type): if self.deliveryEvent.units.get(unit_type, 0) > 0: @@ -111,3 +124,4 @@ class QRecruitBehaviour: self.cp.base.commit_losses({unit_type: 1}) self._update_count_label(unit_type) + self.update_available_budget() diff --git a/resources/stylesheets/style-dcs.css b/resources/stylesheets/style-dcs.css index 47a8bee3..c01f398c 100644 --- a/resources/stylesheets/style-dcs.css +++ b/resources/stylesheets/style-dcs.css @@ -184,6 +184,11 @@ QLabel[style="base-title"]{ font-size: 24px; } +QLabel[style="budget-label"]{ + font-size: 16px; + margin-right: 20px; +} + QLabel[style="icon-plane"]{ background-color:#48719D; min-height:24px;