From 72c181a39966399f31e1b3cbaad6ece0ba1d5548 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Wed, 14 Jul 2021 17:33:01 -0700 Subject: [PATCH] Fix budget mismatch in the UI. Much of the UI was using the old budget which wasn't removed from Game like it should have been when Coaltion was introduced. The UI displayed (and in some cases pulled from) the starting budget rather than the real budget. --- game/game.py | 2 -- qt_ui/widgets/QBudgetBox.py | 5 +++-- qt_ui/windows/basemenu/QBaseMenu2.py | 12 +++++++----- qt_ui/windows/basemenu/QRecruitBehaviour.py | 4 ++-- qt_ui/windows/finances/QFinancesMenu.py | 5 +---- .../windows/groundobject/QGroundObjectMenu.py | 18 +++++++++--------- qt_ui/windows/settings/QSettingsWindow.py | 2 +- 7 files changed, 23 insertions(+), 25 deletions(-) diff --git a/game/game.py b/game/game.py index 9e1cb00c..6ce7b178 100644 --- a/game/game.py +++ b/game/game.py @@ -107,8 +107,6 @@ class Game: self.__culling_zones: List[Point] = [] self.__destroyed_units: list[dict[str, Union[float, str]]] = [] self.savepath = "" - self.budget = player_budget - self.enemy_budget = enemy_budget self.current_unit_id = 0 self.current_group_id = 0 self.name_generator = naming.namegen diff --git a/qt_ui/widgets/QBudgetBox.py b/qt_ui/widgets/QBudgetBox.py index e44713a8..30713c92 100644 --- a/qt_ui/widgets/QBudgetBox.py +++ b/qt_ui/widgets/QBudgetBox.py @@ -1,6 +1,7 @@ from PySide2.QtWidgets import QLabel, QHBoxLayout, QGroupBox, QPushButton import qt_ui.uiconstants as CONST +from game import Game from game.income import Income from qt_ui.windows.finances.QFinancesMenu import QFinancesMenu @@ -10,7 +11,7 @@ class QBudgetBox(QGroupBox): UI Component to display current budget and player's money """ - def __init__(self, game): + def __init__(self, game: Game): super(QBudgetBox, self).__init__("Budget") self.game = game @@ -40,7 +41,7 @@ class QBudgetBox(QGroupBox): return self.game = game - self.setBudget(self.game.budget, Income(self.game, player=True).total) + self.setBudget(self.game.blue.budget, Income(self.game, player=True).total) self.finances.setEnabled(True) def openFinances(self): diff --git a/qt_ui/windows/basemenu/QBaseMenu2.py b/qt_ui/windows/basemenu/QBaseMenu2.py index 20dbf8f1..d10e5bc7 100644 --- a/qt_ui/windows/basemenu/QBaseMenu2.py +++ b/qt_ui/windows/basemenu/QBaseMenu2.py @@ -108,7 +108,7 @@ class QBaseMenu2(QDialog): capture_button.clicked.connect(self.cheat_capture) self.budget_display = QLabel( - QRecruitBehaviour.BUDGET_FORMAT.format(self.game_model.game.budget) + QRecruitBehaviour.BUDGET_FORMAT.format(self.game_model.game.blue.budget) ) self.budget_display.setAlignment(Qt.AlignRight | Qt.AlignBottom) self.budget_display.setProperty("style", "budget-label") @@ -139,7 +139,7 @@ class QBaseMenu2(QDialog): @property def can_afford_runway_repair(self) -> bool: - return self.game_model.game.budget >= db.RUNWAY_REPAIR_COST + return self.game_model.game.blue.budget >= db.RUNWAY_REPAIR_COST def begin_runway_repair(self) -> None: if not self.can_afford_runway_repair: @@ -147,7 +147,7 @@ class QBaseMenu2(QDialog): self, "Cannot repair runway", f"Runway repair costs ${db.RUNWAY_REPAIR_COST}M but you have " - f"only ${self.game_model.game.budget}M available.", + f"only ${self.game_model.game.blue.budget}M available.", QMessageBox.Ok, ) return @@ -161,7 +161,7 @@ class QBaseMenu2(QDialog): return self.cp.begin_runway_repair() - self.game_model.game.budget -= db.RUNWAY_REPAIR_COST + self.game_model.game.blue.budget -= db.RUNWAY_REPAIR_COST self.update_repair_button() self.update_intel_summary() GameUpdateSignal.get_instance().updateGame(self.game_model.game) @@ -257,4 +257,6 @@ class QBaseMenu2(QDialog): NewUnitTransferDialog(self.game_model, self.cp, parent=self.window()).show() def update_budget(self, game: Game) -> None: - self.budget_display.setText(QRecruitBehaviour.BUDGET_FORMAT.format(game.budget)) + self.budget_display.setText( + QRecruitBehaviour.BUDGET_FORMAT.format(game.blue.budget) + ) diff --git a/qt_ui/windows/basemenu/QRecruitBehaviour.py b/qt_ui/windows/basemenu/QRecruitBehaviour.py index 5eb7534a..b3ab3d8f 100644 --- a/qt_ui/windows/basemenu/QRecruitBehaviour.py +++ b/qt_ui/windows/basemenu/QRecruitBehaviour.py @@ -103,11 +103,11 @@ class QRecruitBehaviour: @property def budget(self) -> float: - return self.game_model.game.budget + return self.game_model.game.blue.budget @budget.setter def budget(self, value: int) -> None: - self.game_model.game.budget = value + self.game_model.game.blue.budget = value def add_purchase_row( self, diff --git a/qt_ui/windows/finances/QFinancesMenu.py b/qt_ui/windows/finances/QFinancesMenu.py index 4ef8b281..c1eec23e 100644 --- a/qt_ui/windows/finances/QFinancesMenu.py +++ b/qt_ui/windows/finances/QFinancesMenu.py @@ -57,10 +57,7 @@ class FinancesLayout(QGridLayout): middle=f"Income multiplier: {income.multiplier:.1f}", right=f"{income.total}M", ) - if player: - budget = game.budget - else: - budget = game.enemy_budget + budget = game.coalition_for(player).budget self.add_row(middle="Balance", right=f"{budget}M") self.setRowStretch(next(self.row), 1) diff --git a/qt_ui/windows/groundobject/QGroundObjectMenu.py b/qt_ui/windows/groundobject/QGroundObjectMenu.py index 0e629db8..5622682f 100644 --- a/qt_ui/windows/groundobject/QGroundObjectMenu.py +++ b/qt_ui/windows/groundobject/QGroundObjectMenu.py @@ -237,8 +237,8 @@ class QGroundObjectMenu(QDialog): self.total_value = total_value def repair_unit(self, group, unit, price): - if self.game.budget > price: - self.game.budget -= price + if self.game.blue.budget > price: + self.game.blue.budget -= price group.units_losts = [u for u in group.units_losts if u.id != unit.id] group.units.append(unit) GameUpdateSignal.get_instance().updateGame(self.game) @@ -256,7 +256,7 @@ class QGroundObjectMenu(QDialog): def sell_all(self): self.update_total_value() - self.game.budget = self.game.budget + self.total_value + self.game.blue.budget = self.game.blue.budget + self.total_value self.ground_object.groups = [] # Replan if the tgo was a target of the redfor @@ -433,12 +433,12 @@ class QBuyGroupForGroundObjectDialog(QDialog): logging.info("Buying Armor ") utype = self.buyArmorCombo.itemData(self.buyArmorCombo.currentIndex()) price = utype.price * self.amount.value() - self.current_group_value - if price > self.game.budget: + if price > self.game.blue.budget: self.error_money() self.close() return else: - self.game.budget -= price + self.game.blue.budget -= price # Generate Armor group = generate_armor_group_of_type_and_size( @@ -454,11 +454,11 @@ class QBuyGroupForGroundObjectDialog(QDialog): def buySam(self): sam_generator = self.samCombo.itemData(self.samCombo.currentIndex()) price = sam_generator.price - self.current_group_value - if price > self.game.budget: + if price > self.game.blue.budget: self.error_money() return else: - self.game.budget -= price + self.game.blue.budget -= price self.ground_object.groups = list(sam_generator.groups) @@ -470,11 +470,11 @@ class QBuyGroupForGroundObjectDialog(QDialog): def buy_ewr(self): ewr_generator = self.ewr_selector.itemData(self.ewr_selector.currentIndex()) price = ewr_generator.price - self.current_group_value - if price > self.game.budget: + if price > self.game.blue.budget: self.error_money() return else: - self.game.budget -= price + self.game.blue.budget -= price self.ground_object.groups = [ewr_generator.vg] diff --git a/qt_ui/windows/settings/QSettingsWindow.py b/qt_ui/windows/settings/QSettingsWindow.py index 5aba6a7d..188963d7 100644 --- a/qt_ui/windows/settings/QSettingsWindow.py +++ b/qt_ui/windows/settings/QSettingsWindow.py @@ -873,7 +873,7 @@ class QSettingsWindow(QDialog): def cheatMoney(self, amount): logging.info("CHEATING FOR AMOUNT : " + str(amount) + "M") - self.game.budget += amount + self.game.blue.budget += amount if amount > 0: self.game.informations.append( Information(