Fix synchronization of loadouts on change.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/3111.
This commit is contained in:
Dan Albert 2023-07-27 22:19:30 -07:00
parent b893378abe
commit 160d464f9a
2 changed files with 16 additions and 2 deletions

View File

@ -82,4 +82,10 @@ class FlightMembers(IFlightRoster):
return return
loadout = self.members[0].loadout loadout = self.members[0].loadout
for member in self.members[1:]: 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()

View File

@ -165,7 +165,10 @@ class QFlightPayloadTab(QFrame):
return loadout return loadout
def on_new_loadout(self, index: int) -> None: 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() self.payload_editor.reset_pylons()
def on_custom_toggled(self, use_custom: bool) -> None: def on_custom_toggled(self, use_custom: bool) -> None:
@ -178,6 +181,9 @@ class QFlightPayloadTab(QFrame):
member.loadout = self.current_loadout() member.loadout = self.current_loadout()
self.payload_editor.reset_pylons() 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: def on_same_loadout_toggled(self, checked: bool) -> None:
self.flight.use_same_loadout_for_all_members = checked self.flight.use_same_loadout_for_all_members = checked
if self.member_selector.value(): if self.member_selector.value():
@ -187,3 +193,5 @@ class QFlightPayloadTab(QFrame):
self.flight.roster.use_same_loadout_for_all_members() self.flight.roster.use_same_loadout_for_all_members()
if self.member_selector.value(): if self.member_selector.value():
self.rebind_to_selected_member() self.rebind_to_selected_member()
else:
self.flight.roster.use_distinct_loadouts_for_each_member()