diff --git a/game/ato/flightmembers.py b/game/ato/flightmembers.py index a5c49834..8baaf01b 100644 --- a/game/ato/flightmembers.py +++ b/game/ato/flightmembers.py @@ -82,4 +82,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 9fbd1baf..a0834bc2 100644 --- a/qt_ui/windows/mission/flight/payload/QFlightPayloadTab.py +++ b/qt_ui/windows/mission/flight/payload/QFlightPayloadTab.py @@ -165,7 +165,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: @@ -178,6 +181,9 @@ class QFlightPayloadTab(QFrame): 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_same_loadout_toggled(self, checked: bool) -> None: self.flight.use_same_loadout_for_all_members = checked if self.member_selector.value(): @@ -187,3 +193,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()