From 0b7acbc94e11145c23d81f8b3d25b77dda480a73 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Thu, 27 Jul 2023 22:19:30 -0700 Subject: [PATCH] Fix synchronization of loadouts on change. Fixes https://github.com/dcs-liberation/dcs_liberation/issues/3111. --- game/ato/flightmembers.py | 8 +++++++- .../mission/flight/payload/QFlightPayloadTab.py | 11 +++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/game/ato/flightmembers.py b/game/ato/flightmembers.py index f8d34190..103e82ae 100644 --- a/game/ato/flightmembers.py +++ b/game/ato/flightmembers.py @@ -91,4 +91,10 @@ class FlightMembers(IFlightRoster): return loadout = self.members[0].loadout for member in self.members[1:]: - member.loadout = loadout.clone() + # Do not clone the loadout, we want any changes in the UI to be mirrored + # across all flight members. + member.loadout = loadout + + def use_distinct_loadouts_for_each_member(self) -> None: + for member in self.members: + member.loadout = member.loadout.clone() diff --git a/qt_ui/windows/mission/flight/payload/QFlightPayloadTab.py b/qt_ui/windows/mission/flight/payload/QFlightPayloadTab.py index bce06050..569603c7 100644 --- a/qt_ui/windows/mission/flight/payload/QFlightPayloadTab.py +++ b/qt_ui/windows/mission/flight/payload/QFlightPayloadTab.py @@ -236,7 +236,10 @@ class QFlightPayloadTab(QFrame): return loadout def on_new_loadout(self, index: int) -> None: - self.member_selector.selected_member.loadout = self.loadout_at(index) + loadout = self.loadout_at(index) + self.member_selector.selected_member.loadout = loadout + if self.flight.use_same_loadout_for_all_members: + self.flight.roster.use_same_loadout_for_all_members() self.payload_editor.reset_pylons() def on_custom_toggled(self, use_custom: bool) -> None: @@ -248,9 +251,11 @@ class QFlightPayloadTab(QFrame): else: member.loadout = self.current_loadout() self.payload_editor.reset_pylons() + if self.flight.use_same_loadout_for_all_members: + self.flight.roster.use_same_loadout_for_all_members() def on_saved_payload(self, payload_name: str) -> None: - loadout = self.flight.loadout + loadout = self.member_selector.selected_member.loadout self.loadout_selector.addItem(payload_name, loadout) self.loadout_selector.setCurrentIndex(self.loadout_selector.count() - 1) @@ -263,3 +268,5 @@ class QFlightPayloadTab(QFrame): self.flight.roster.use_same_loadout_for_all_members() if self.member_selector.value(): self.rebind_to_selected_member() + else: + self.flight.roster.use_distinct_loadouts_for_each_member()