diff --git a/qt_ui/windows/QBriefingWindow.py b/qt_ui/windows/QBriefingWindow.py
index a577a504..86565db1 100644
--- a/qt_ui/windows/QBriefingWindow.py
+++ b/qt_ui/windows/QBriefingWindow.py
@@ -21,8 +21,15 @@ class QBriefingWindow(QDialog):
self.setMinimumSize(200,200)
self.setWindowIcon(CONST.EVENT_ICONS[self.gameEvent.__class__])
self.setModal(True)
- self.base = self.gameEvent.from_cp.base
self.game = self.gameEvent.game
+
+ if self.gameEvent.attacker_name == self.game.player_name:
+ self.base = self.gameEvent.from_cp.base
+ self.playerFromCp = self.gameEvent.from_cp
+ else:
+ self.base = self.gameEvent.to_cp.base
+ self.playerFromCp = self.gameEvent.to_cp
+
self.scramble_entries = {k: {} for k in self.gameEvent.tasks}
self.initUi()
@@ -30,22 +37,46 @@ class QBriefingWindow(QDialog):
self.layout = QVBoxLayout()
- self.scramble_box = QGroupBox("Units")
- self.gridLayout = QGridLayout()
- self.scramble_box.setLayout(self.gridLayout)
-
self.depart_box = QGroupBox("Departure")
self.depart_layout = QHBoxLayout()
self.depart_box.setLayout(self.depart_layout)
self.depart_from_label = QLabel("Depart from : ")
self.depart_from = QComboBox()
- for cp in [b for b in self.game.theater.controlpoints if b.captured]:
+ for i, cp in enumerate([b for b in self.game.theater.controlpoints if b.captured]):
self.depart_from.addItem(str(cp.name), cp)
+ if cp.name == self.playerFromCp.name:
+ self.depart_from.setCurrentIndex(i)
+ self.depart_from.currentTextChanged.connect(self.on_departure_cp_changed)
self.depart_layout.addWidget(self.depart_from_label)
self.depart_layout.addWidget(self.depart_from)
+ # Mission Description
+ self.gridLayout = QGridLayout()
+ self.initUnitRows()
+ self.scramble_box = QGroupBox("Units")
+ self.scramble_box.setLayout(self.gridLayout)
+
+ self.action_layout = QHBoxLayout()
+ self.commit_button = QPushButton("Commit")
+ self.back_button = QPushButton("Cancel")
+ self.commit_button.clicked.connect(self.start)
+ self.back_button.clicked.connect(self.close)
+ self.action_layout.addWidget(self.commit_button)
+ self.action_layout.addWidget(self.back_button)
+
+ self.support_box = self.initSupportBox()
+ self.layout.addWidget(QLabel("
{} on {}
".format(self.gameEvent, self.gameEvent.to_cp.name)))
+ self.layout.addWidget(self.depart_box)
+ self.layout.addWidget(self.scramble_box)
+ self.layout.addWidget(self.support_box)
+ self.layout.addWidget(QLabel("Ready?"))
+ self.layout.addLayout(self.action_layout)
+ self.setLayout(self.layout)
+
+ def initUnitRows(self):
+
row = 0
def header(text, row):
@@ -66,8 +97,6 @@ class QBriefingWindow(QDialog):
self.scramble_entries[task_type][unit_type] = scramble_entry, client_entry
- # Mission Description
-
# Table headers
self.gridLayout.addWidget(QLabel("Amount"), row, 1)
self.gridLayout.addWidget(QLabel("Client slots"), row, 2)
@@ -89,26 +118,11 @@ class QBriefingWindow(QDialog):
self.gridLayout.addWidget(QLabel("No units"), row, 1)
row += 1
for t, c in self.base.aircraft.items():
+ print(t,c)
scramble_row(flight_task, t, c, True, row)
row += 1
- self.action_layout = QHBoxLayout()
- self.commit_button = QPushButton("Commit")
- self.back_button = QPushButton("Cancel")
- self.commit_button.clicked.connect(self.start)
- self.back_button.clicked.connect(self.close)
- self.action_layout.addWidget(self.commit_button)
- self.action_layout.addWidget(self.back_button)
-
- self.support_box = self.initSupportBox()
- self.layout.addWidget(QLabel("{} on {}
".format(self.gameEvent, self.gameEvent.to_cp.name)))
- self.layout.addWidget(self.depart_box)
- self.layout.addWidget(self.scramble_box)
- self.layout.addWidget(self.support_box)
- self.layout.addWidget(QLabel("Ready?"))
- self.layout.addLayout(self.action_layout)
- self.setLayout(self.layout)
-
+ return self.gridLayout
def initSupportBox(self):
@@ -222,7 +236,7 @@ class QBriefingWindow(QDialog):
if self.game.is_player_attack(self.gameEvent):
if isinstance(self.gameEvent, FrontlineAttackEvent) or isinstance(self.gameEvent, FrontlinePatrolEvent):
- if self.gameEvent.from_cp.base.total_armor == 0:
+ if self.base.total_armor == 0:
self.showErrorMessage("No ground vehicles available to attack!")
return
@@ -247,4 +261,24 @@ class QBriefingWindow(QDialog):
about.setWindowTitle("Error")
about.setIcon(QMessageBox.Icon.Critical)
about.setText(text)
- about.exec_()
\ No newline at end of file
+ about.exec_()
+
+ def on_departure_cp_changed(self):
+
+ selectedBase = self.depart_from.itemData(self.depart_from.currentIndex())
+
+ for i, cp in enumerate([b for b in self.game.theater.controlpoints if b.captured]):
+ if cp.name == selectedBase.name:
+ self.base = cp.base
+ self.playerFromCp = cp
+ break
+
+ # Clear current selection
+ self.scramble_entries = {k: {} for k in self.gameEvent.tasks}
+
+ # Clear the grid layout
+ for i in reversed(range(self.gridLayout.count())):
+ self.gridLayout.itemAt(i).widget().setParent(None)
+
+ # Rebuild the grid layout, so that it correspond to the newly selected CP
+ self.initUnitRows()
\ No newline at end of file