Add UI for acquiring/releasing TGP laser codes.

This commit is contained in:
Dan Albert 2023-07-22 16:31:19 -07:00
parent 85e11711b6
commit ad8f3d61ea
2 changed files with 63 additions and 0 deletions

View File

@ -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

View File

@ -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()