Enable/Disable JTAC for OWNFOR faction

This commit is contained in:
Raffson 2024-12-01 00:36:09 +01:00
parent 98f0c93012
commit 772a15bab5
No known key found for this signature in database
GPG Key ID: B0402B2C9B764D99
2 changed files with 25 additions and 5 deletions

View File

@ -274,6 +274,7 @@ class AirWingTabs(QTabWidget):
QFactionUnits( QFactionUnits(
game_model.game.coalition_for(True).faction, game_model.game.coalition_for(True).faction,
self, self,
show_jtac=True,
), ),
"Faction OWNFOR", "Faction OWNFOR",
) )
@ -281,6 +282,7 @@ class AirWingTabs(QTabWidget):
QFactionUnits( QFactionUnits(
game_model.game.coalition_for(False).faction, game_model.game.coalition_for(False).faction,
self, self,
show_jtac=False,
), ),
"Faction OPFOR", "Faction OPFOR",
) )

View File

@ -27,14 +27,14 @@ from qt_ui.windows.newgame.jinja_env import jinja_env
class QFactionUnits(QScrollArea): class QFactionUnits(QScrollArea):
def __init__(self, faction: Faction, parent=None): def __init__(self, faction: Faction, parent=None, show_jtac: bool = False):
super().__init__() super().__init__()
self.setWidgetResizable(True) self.setWidgetResizable(True)
self.content = QWidget() self.content = QWidget()
self.setWidget(self.content) self.setWidget(self.content)
self.parent = parent self.parent = parent
self.faction = faction self.faction = faction
self._create_checkboxes() self._create_checkboxes(show_jtac)
def _add_checkboxes( def _add_checkboxes(
self, self,
@ -56,7 +56,7 @@ class QFactionUnits(QScrollArea):
counter += 1 counter += 1
return counter return counter
def _create_checkboxes(self): def _create_checkboxes(self, show_jtac: bool) -> None:
counter = 0 counter = 0
self.checkboxes: dict[str, QCheckBox] = {} self.checkboxes: dict[str, QCheckBox] = {}
grid = QGridLayout() grid = QGridLayout()
@ -125,8 +125,26 @@ class QFactionUnits(QScrollArea):
grid.addWidget(QLabel("<strong>Missile units:</strong>"), counter, 0) grid.addWidget(QLabel("<strong>Missile units:</strong>"), counter, 0)
self._add_checkboxes(self.faction.missiles, counter, grid) self._add_checkboxes(self.faction.missiles, counter, grid)
if show_jtac:
grid.addWidget(QLabel("<strong>JTAC</strong>"), counter, 0)
self.create_has_jtac_checkbox(counter, grid)
self.content.setLayout(grid) self.content.setLayout(grid)
def create_has_jtac_checkbox(self, counter: int, grid: QGridLayout) -> None:
counter += 1
cb = QCheckBox("Has JTAC")
cb.setCheckState(
Qt.CheckState.Checked if self.faction.has_jtac else Qt.CheckState.Unchecked
)
cb.clicked.connect(self._set_jtac)
self.checkboxes["Has JTAC"] = cb
grid.addWidget(cb, counter, 1)
counter += 2
def _set_jtac(self, state: bool) -> None:
self.faction.has_jtac = state
def _aircraft_predicate(self, ac: AircraftType): def _aircraft_predicate(self, ac: AircraftType):
if ( if (
FlightType.AEWC not in ac.task_priorities FlightType.AEWC not in ac.task_priorities
@ -267,10 +285,10 @@ class FactionSelection(QtWidgets.QWizardPage):
# Faction units # Faction units
self.blueFactionUnits = QFactionUnits( self.blueFactionUnits = QFactionUnits(
self.blueFactionSelect.currentData(), self.blueGroupLayout self.blueFactionSelect.currentData(), self.blueGroupLayout, show_jtac=True
) )
self.redFactionUnits = QFactionUnits( self.redFactionUnits = QFactionUnits(
self.redFactionSelect.currentData(), self.redGroupLayout self.redFactionSelect.currentData(), self.redGroupLayout, show_jtac=False
) )
self.blueGroupLayout.addWidget(blueFaction, 0, 0) self.blueGroupLayout.addWidget(blueFaction, 0, 0)