mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
52 lines
1.8 KiB
Python
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)
|