mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Add UI for selecting weapon laser codes.
This makes it possible to have the right laser code set for hot start aircraft that (typically) do not allow changing laser codes when the engine is on.
This commit is contained in:
@@ -20,6 +20,7 @@ from qt_ui.widgets.QLabeledWidget import QLabeledWidget
|
||||
from .QLoadoutEditor import QLoadoutEditor
|
||||
from .ownlasercodeinfo import OwnLaserCodeInfo
|
||||
from .propertyeditor import PropertyEditor
|
||||
from .weaponlasercodeselector import WeaponLaserCodeSelector
|
||||
|
||||
|
||||
class DcsLoadoutSelector(QComboBox):
|
||||
@@ -155,6 +156,24 @@ class QFlightPayloadTab(QFrame):
|
||||
)
|
||||
scrolling_layout.addLayout(self.own_laser_code_info)
|
||||
|
||||
self.weapon_laser_code_selector = WeaponLaserCodeSelector(
|
||||
game, self.member_selector.selected_member, self
|
||||
)
|
||||
self.own_laser_code_info.assigned_laser_code_changed.connect(
|
||||
self.weapon_laser_code_selector.rebuild
|
||||
)
|
||||
scrolling_layout.addLayout(
|
||||
QLabeledWidget(
|
||||
"Preset laser code for weapons:", self.weapon_laser_code_selector
|
||||
)
|
||||
)
|
||||
scrolling_layout.addWidget(
|
||||
QLabel(
|
||||
"Equipped weapons will be pre-configured to the selected laser code at "
|
||||
"mission start."
|
||||
)
|
||||
)
|
||||
|
||||
self.property_editor = PropertyEditor(
|
||||
self.flight, self.member_selector.selected_member
|
||||
)
|
||||
@@ -194,6 +213,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.weapon_laser_code_selector.set_flight_member(member)
|
||||
self.own_laser_code_info.set_flight_member(member)
|
||||
if self.member_selector.value() != 0:
|
||||
self.loadout_selector.setDisabled(
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user