mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
* Implemented a new option in settings: Default start type for Player flights. * Updated changelog. * Removed unnecessary country parameter. * Restore missing parameter * on_pilot_changed should emit pilots_changed in its finally block, otherwise the start-type isn't updated if you have a single client pilot which you switch to a non-client pilot. Also implemented other changes suggested by @Raffson, such as a more streamlined start_type QComboBox handling and moving the pilots_changed Signal to FlightRosterEditor. * Decouple Signal from QFlighStartType --------- Co-authored-by: Raffson <Raffson@users.noreply.github.com>
77 lines
2.7 KiB
Python
77 lines
2.7 KiB
Python
from PySide6.QtCore import Signal
|
|
from PySide6.QtWidgets import QFrame, QGridLayout, QVBoxLayout
|
|
|
|
from game.ato.flight import Flight
|
|
from qt_ui.models import PackageModel, GameModel
|
|
from qt_ui.windows.mission.flight.payload.QFlightPayloadTab import QFlightPayloadTab
|
|
from qt_ui.windows.mission.flight.settings.FlightPlanPropertiesGroup import (
|
|
FlightPlanPropertiesGroup,
|
|
)
|
|
from qt_ui.windows.mission.flight.settings.QCommsEditor import QCommsEditor
|
|
from qt_ui.windows.mission.flight.settings.QCustomName import QFlightCustomName
|
|
from qt_ui.windows.mission.flight.settings.QFlightSlotEditor import QFlightSlotEditor
|
|
from qt_ui.windows.mission.flight.settings.QFlightStartType import QFlightStartType
|
|
from qt_ui.windows.mission.flight.settings.QFlightTypeTaskInfo import (
|
|
QFlightTypeTaskInfo,
|
|
)
|
|
from qt_ui.windows.mission.flight.waypoints.QFlightWaypointList import (
|
|
QFlightWaypointList,
|
|
)
|
|
|
|
|
|
class QGeneralFlightSettingsTab(QFrame):
|
|
flight_size_changed = Signal()
|
|
|
|
def __init__(
|
|
self,
|
|
game: GameModel,
|
|
package_model: PackageModel,
|
|
flight: Flight,
|
|
flight_wpt_list: QFlightWaypointList,
|
|
payload_tab: QFlightPayloadTab,
|
|
):
|
|
super().__init__()
|
|
self.flight = flight
|
|
self.payload_tab = payload_tab
|
|
|
|
self.flight_slot_editor = QFlightSlotEditor(package_model, flight, game.game)
|
|
self.flight_slot_editor.flight_resized.connect(self.flight_size_changed)
|
|
for pc in self.flight_slot_editor.roster_editor.pilot_controls:
|
|
pc.player_toggled.connect(self.on_player_toggle)
|
|
pc.player_toggled.connect(
|
|
self.flight_slot_editor.roster_editor.pilots_changed
|
|
)
|
|
|
|
start_type = QFlightStartType(
|
|
package_model,
|
|
flight,
|
|
)
|
|
|
|
roster = self.flight_slot_editor.roster_editor
|
|
roster.pilots_changed.connect(start_type.on_pilot_selected)
|
|
|
|
widgets = [
|
|
QFlightTypeTaskInfo(flight),
|
|
QCommsEditor(flight, game),
|
|
FlightPlanPropertiesGroup(
|
|
game.game, package_model, flight, flight_wpt_list
|
|
),
|
|
self.flight_slot_editor,
|
|
start_type,
|
|
QFlightCustomName(flight),
|
|
]
|
|
layout = QGridLayout()
|
|
row = 0
|
|
for w in widgets:
|
|
layout.addWidget(w, row, 0)
|
|
row += 1
|
|
|
|
vstretch = QVBoxLayout()
|
|
vstretch.addStretch()
|
|
layout.addLayout(vstretch, row, 0)
|
|
self.setLayout(layout)
|
|
|
|
def on_player_toggle(self) -> None:
|
|
self.payload_tab.property_editor.build_props(self.flight)
|
|
self.payload_tab.own_laser_code_info.bind_to_selected_member()
|