add budget preview to purchase dialogue

This commit is contained in:
root0fall 2020-08-17 12:09:48 +08:00
parent ae5949bc7f
commit 970888b5ca
3 changed files with 27 additions and 3 deletions

View File

@ -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):

View File

@ -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: <b>${}M</b>"
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()

View File

@ -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;