From 4cecddcdd0d45b058f8438cefaf7b5df0d3e0694 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Fri, 25 Dec 2020 01:34:57 -0800 Subject: [PATCH] Add basic enemy intel widget. https://github.com/Khopa/dcs_liberation/issues/658 (cherry picked from commit b53cac4c7a9f35d0d0a9a4d7a3bf37d2357a4f33) --- qt_ui/widgets/QIntelBox.py | 40 ++++++++++++++++++++++++++++++++++++++ qt_ui/widgets/QTopPanel.py | 5 +++++ 2 files changed, 45 insertions(+) create mode 100644 qt_ui/widgets/QIntelBox.py diff --git a/qt_ui/widgets/QIntelBox.py b/qt_ui/widgets/QIntelBox.py new file mode 100644 index 00000000..5953e4bf --- /dev/null +++ b/qt_ui/widgets/QIntelBox.py @@ -0,0 +1,40 @@ +from typing import Optional + +from PySide2.QtWidgets import QGroupBox, QHBoxLayout, QLabel, QVBoxLayout + +from game import Game + + +class QIntelBox(QGroupBox): + def __init__(self, game: Game) -> None: + super().__init__("Intel") + self.game = game + + columns = QHBoxLayout() + self.setLayout(columns) + + summary = QVBoxLayout() + columns.addLayout(summary) + + self.total_aircraft = QLabel() + summary.addWidget(self.total_aircraft) + self.total_ground_forces = QLabel() + summary.addWidget(self.total_ground_forces) + + self.update_summary() + + def set_game(self, game: Optional[Game]) -> None: + self.game = game + self.update_summary() + + def update_summary(self) -> None: + if self.game is None: + aircraft = 0 + ground_units = 0 + else: + data = self.game.game_stats.data_per_turn[-1] + aircraft = data.enemy_units.aircraft_count + ground_units = data.enemy_units.vehicles_count + self.total_aircraft.setText(f"Total enemy aircraft: {aircraft}") + self.total_ground_forces.setText( + f"Total enemy ground units: {ground_units}") diff --git a/qt_ui/widgets/QTopPanel.py b/qt_ui/widgets/QTopPanel.py index 8fe1c347..6bf558ee 100644 --- a/qt_ui/widgets/QTopPanel.py +++ b/qt_ui/widgets/QTopPanel.py @@ -16,6 +16,7 @@ from gen.flights.traveltime import TotEstimator from qt_ui.models import GameModel from qt_ui.widgets.QBudgetBox import QBudgetBox from qt_ui.widgets.QFactionsInfos import QFactionsInfos +from qt_ui.widgets.QIntelBox import QIntelBox from qt_ui.widgets.clientslots import MaxPlayerCount from qt_ui.windows.GameUpdateSignal import GameUpdateSignal from qt_ui.windows.QWaitingForMissionResultWindow import \ @@ -71,6 +72,8 @@ class QTopPanel(QFrame): self.statistics.setProperty("style", "btn-primary") self.statistics.clicked.connect(self.openStatisticsWindow) + self.intel_box = QIntelBox(self.game) + self.buttonBox = QGroupBox("Misc") self.buttonBoxLayout = QHBoxLayout() self.buttonBoxLayout.addWidget(self.settings) @@ -90,6 +93,7 @@ class QTopPanel(QFrame): self.layout.addWidget(self.factionsInfos) self.layout.addWidget(self.conditionsWidget) self.layout.addWidget(self.budgetBox) + self.layout.addWidget(self.intel_box) self.layout.addWidget(self.buttonBox) self.layout.addStretch(1) self.layout.addWidget(self.proceedBox) @@ -106,6 +110,7 @@ class QTopPanel(QFrame): self.statistics.setEnabled(True) self.conditionsWidget.setCurrentTurn(game.turn, game.conditions) + self.intel_box.set_game(game) self.budgetBox.setGame(game) self.factionsInfos.setGame(game)