From ad8f3d61ea1dcf3c24ccc0a877478bfa880787d2 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Sat, 22 Jul 2023 16:31:19 -0700 Subject: [PATCH] Add UI for acquiring/releasing TGP laser codes. --- .../flight/payload/QFlightPayloadTab.py | 7 +++ .../flight/payload/ownlasercodeinfo.py | 56 +++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 qt_ui/windows/mission/flight/payload/ownlasercodeinfo.py diff --git a/qt_ui/windows/mission/flight/payload/QFlightPayloadTab.py b/qt_ui/windows/mission/flight/payload/QFlightPayloadTab.py index 65823950..ef55736f 100644 --- a/qt_ui/windows/mission/flight/payload/QFlightPayloadTab.py +++ b/qt_ui/windows/mission/flight/payload/QFlightPayloadTab.py @@ -16,6 +16,7 @@ from game.ato.flightmember import FlightMember from game.ato.loadouts import Loadout from qt_ui.widgets.QLabeledWidget import QLabeledWidget from .QLoadoutEditor import QLoadoutEditor +from .ownlasercodeinfo import OwnLaserCodeInfo from .propertyeditor import PropertyEditor @@ -89,6 +90,11 @@ class QFlightPayloadTab(QFrame): docsText.setAlignment(Qt.AlignCenter) docsText.setOpenExternalLinks(True) + self.own_laser_code_info = OwnLaserCodeInfo( + game, self.member_selector.selected_member + ) + scrolling_layout.addLayout(self.own_laser_code_info) + self.property_editor = PropertyEditor( self.flight, self.member_selector.selected_member ) @@ -117,6 +123,7 @@ class QFlightPayloadTab(QFrame): self.loadout_selector.setCurrentText(member.loadout.name) self.loadout_selector.setDisabled(member.loadout.is_custom) self.payload_editor.set_flight_member(member) + self.own_laser_code_info.set_flight_member(member) if self.member_selector.value() != 0: self.loadout_selector.setDisabled( self.flight.use_same_loadout_for_all_members diff --git a/qt_ui/windows/mission/flight/payload/ownlasercodeinfo.py b/qt_ui/windows/mission/flight/payload/ownlasercodeinfo.py new file mode 100644 index 00000000..246336c9 --- /dev/null +++ b/qt_ui/windows/mission/flight/payload/ownlasercodeinfo.py @@ -0,0 +1,56 @@ +from PySide6.QtCore import Signal +from PySide6.QtWidgets import QWidget, QHBoxLayout, QLabel, QPushButton + +from game import Game +from game.ato.flightmember import FlightMember + + +class OwnLaserCodeInfo(QHBoxLayout): + assigned_laser_code_changed = Signal() + + def __init__( + self, game: Game, flight_member: FlightMember, parent: QWidget | None = None + ) -> None: + super().__init__(parent) + self.game = game + self.flight_member = flight_member + + self.addWidget(QLabel("Assigned laser code:")) + self.addStretch() + + self.code_display = QLabel() + self.addWidget(self.code_display) + + self.alloc_dealloc_button = QPushButton() + self.alloc_dealloc_button.clicked.connect(self.on_alloc_dealloc_clicked) + self.addWidget(self.alloc_dealloc_button) + + self.bind_to_selected_member() + + def set_flight_member(self, flight_member: FlightMember) -> None: + self.flight_member = flight_member + self.bind_to_selected_member() + + def bind_to_selected_member(self) -> None: + if (code := self.flight_member.tgp_laser_code) is not None: + self.alloc_dealloc_button.setEnabled(True) + self.alloc_dealloc_button.setText("Release") + self.code_display.setText(f"{code}") + elif self.flight_member.is_player: + self.alloc_dealloc_button.setText("Assign") + self.alloc_dealloc_button.setEnabled(True) + self.code_display.setText("Not assigned") + else: + self.alloc_dealloc_button.setText("Assign") + self.alloc_dealloc_button.setEnabled(False) + self.code_display.setText("AI does not use laser codes") + + def on_alloc_dealloc_clicked(self) -> None: + if self.flight_member.tgp_laser_code is not None: + self.flight_member.release_tgp_laser_code() + else: + self.flight_member.assign_tgp_laser_code( + self.game.laser_code_registry.alloc_laser_code() + ) + self.bind_to_selected_member() + self.assigned_laser_code_changed.emit()