From 883f233c09abefa3a57e9c6965d22a5e97340035 Mon Sep 17 00:00:00 2001 From: Simon Clark Date: Sat, 30 Jan 2021 01:00:40 +0000 Subject: [PATCH] Adds WIP handling for default payload display with restricted date feature enabled. --- .../mission/flight/payload/QLoadoutEditor.py | 2 +- .../mission/flight/payload/QPylonEditor.py | 26 +++++++++++++++---- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/qt_ui/windows/mission/flight/payload/QLoadoutEditor.py b/qt_ui/windows/mission/flight/payload/QLoadoutEditor.py index d53b1977..75c0f7ec 100644 --- a/qt_ui/windows/mission/flight/payload/QLoadoutEditor.py +++ b/qt_ui/windows/mission/flight/payload/QLoadoutEditor.py @@ -39,7 +39,7 @@ class QLoadoutEditor(QGroupBox): if not self.isChecked(): for i in self.findChildren(QPylonEditor): - i.default_loadout(i.pylon.number) + i.default_loadout() def on_toggle(self): self.flight.use_custom_loadout = self.isChecked() diff --git a/qt_ui/windows/mission/flight/payload/QPylonEditor.py b/qt_ui/windows/mission/flight/payload/QPylonEditor.py index 0df7fcaf..9d95bc8c 100644 --- a/qt_ui/windows/mission/flight/payload/QPylonEditor.py +++ b/qt_ui/windows/mission/flight/payload/QPylonEditor.py @@ -16,12 +16,13 @@ class QPylonEditor(QComboBox): super().__init__() self.flight = flight self.pylon = pylon + self.game = game current = self.flight.loadout.get(self.pylon.number) self.addItem("None", None) - if game.settings.restrict_weapons_by_date: - weapons = pylon.available_on(game.date) + if self.game.settings.restrict_weapons_by_date: + weapons = pylon.available_on(self.game.date) else: weapons = pylon.allowed allowed = sorted(weapons, key=operator.attrgetter("name")) @@ -42,10 +43,11 @@ class QPylonEditor(QComboBox): logging.debug( f"Pylon {self.pylon.number} changed to {selected.name}") - def default_loadout(self, pylon: Pylon) -> None: + def default_loadout(self) -> None: self.flight.unit_type.load_payloads() self.setCurrentText("None") pylon_default_weapon = None + historical_weapon = None loadout = None # Iterate through each possible payload type for a given aircraft. # Some aircraft have custom loadouts that in aren't the standard set. @@ -60,5 +62,19 @@ class QPylonEditor(QComboBox): if pylon_default_weapon == "": pylon_default_weapon = None if pylon_default_weapon is not None: - #self.setCurrentIndex(self.findText(weapons_data.weapon_ids.get(pylon_default_weapon).get("name"))) - self.setCurrentText(weapons_data.weapon_ids.get(pylon_default_weapon).get("name")) \ No newline at end of file + if self.game.settings.restrict_weapons_by_date: + orig_weapon = Weapon.from_clsid(pylon_default_weapon) + if not orig_weapon.available_on(self.game.date): + for fallback in orig_weapon.fallbacks: + if historical_weapon is None: + if not self.pylon.can_equip(fallback): + continue + if not fallback.available_on(self.game.date): + continue + historical_weapon = fallback + else: + historical_weapon = orig_weapon + if historical_weapon is not None: + self.setCurrentText(weapons_data.weapon_ids.get(historical_weapon.cls_id).get("name")) + else: + self.setCurrentText(weapons_data.weapon_ids.get(pylon_default_weapon).get("name")) \ No newline at end of file