dcs-retribution/qt_ui/windows/mission/flight/payload/weaponlasercodeselector.py
2023-10-08 00:53:51 +02:00

52 lines
1.8 KiB
Python

from PySide6.QtWidgets import QComboBox, QWidget
from game import Game
from game.ato.flightmember import FlightMember
from qt_ui.blocksignals import block_signals
class WeaponLaserCodeSelector(QComboBox):
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.currentIndexChanged.connect(self.on_index_changed)
self.rebuild()
def set_flight_member(self, flight_member: FlightMember) -> None:
self.flight_member = flight_member
self.rebuild()
def on_index_changed(self) -> None:
self.flight_member.weapon_laser_code = self.currentData()
def rebuild(self) -> None:
with block_signals(self):
self.clear()
if not self.flight_member.is_player:
self.setDisabled(True)
self.addItem("AI does not use laser codes", None)
self.setEnabled(True)
self.addItem("Default (1688)", None)
selected_index: int | None = None
idx = 1
if (own := self.flight_member.tgp_laser_code) is not None:
self.addItem(f"Use own code ({own})", own)
if own == self.flight_member.weapon_laser_code:
selected_index = idx
idx += 1
for idx, front in enumerate(self.game.theater.conflicts(), idx):
self.addItem(
f"JTAC {front.name} ({front.laser_code})", front.laser_code
)
if front.laser_code == self.flight_member.weapon_laser_code:
selected_index = idx
if selected_index is not None:
self.setCurrentIndex(selected_index)