From 53094ef6afbc6c8f731933fba020ad02efa28dcd Mon Sep 17 00:00:00 2001 From: Mathias Lesauvage Date: Thu, 30 Jul 2026 11:15:55 +0200 Subject: [PATCH] Added proper handler for alt game content --- src/TSHGameAssetManager.py | 44 ++++++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/src/TSHGameAssetManager.py b/src/TSHGameAssetManager.py index b153c6fd3..754fea3c5 100644 --- a/src/TSHGameAssetManager.py +++ b/src/TSHGameAssetManager.py @@ -560,7 +560,8 @@ def run(self): "mods_active": self.mods_active, "has_stages": bool(self.parent().selectedGame.get("stage_to_codename")), "has_variants": bool(self.parent().selectedGame.get("variant_to_codename")), - "has_colors": bool(self.parent().selectedGame.get("preset_colors")) + "has_colors": bool(self.parent().selectedGame.get("preset_colors")), + "igdb_id": self.parent().selectedGame.get("igdb_game_id") }) self.parent().has_modded_content = False @@ -886,7 +887,8 @@ def run(self, mods_active=False, mods_reload_mode=False): "mods_active": mods_active, "has_stages": bool(self.parent.selectedGame.get("stage_to_codename")), "has_variants": bool(self.parent.selectedGame.get("variant_to_codename")), - "has_colors": bool(self.parent.selectedGame.get("preset_colors")) + "has_colors": bool(self.parent.selectedGame.get("preset_colors")), + "igdb_id": self.parent.selectedGame.get("igdb_game_id") }) self.parent.has_modded_content = False @@ -1003,8 +1005,11 @@ def UpdateStageModel(self, mods_active = True): "display_name") != stage[1].get("en_name") else stage[1].get("display_name")) item_with_blank.setData(stage[1], Qt.ItemDataRole.UserRole) + availability = stage[1].get("igdb_playable_list", []) + igdb_id = self.selectedGame.get("igdb_game_id") if stage[1].get("modded"): - self.has_modded_content = True + if not availability or igdb_id in availability: + self.has_modded_content = True if (not mods_active) and stage[1].get("modded"): item.setEnabled(False) @@ -1012,8 +1017,14 @@ def UpdateStageModel(self, mods_active = True): item_with_blank.setEnabled(False) item_with_blank.setSelectable(False) else: - self.stageModel.appendRow(item) - self.stageModelWithBlank.appendRow(item_with_blank) + if availability and igdb_id not in availability: + item.setEnabled(False) + item.setSelectable(False) + item_with_blank.setEnabled(False) + item_with_blank.setSelectable(False) + else: + self.stageModel.appendRow(item) + self.stageModelWithBlank.appendRow(item_with_blank) worker = Worker(self.LoadStageImage, *[stage[1], item]) worker_blank = Worker(self.LoadStageImage, *[stage[1], item_with_blank]) @@ -1099,14 +1110,21 @@ def UpdateCharacterModel(self, mods_active = True): item.setData(data, Qt.ItemDataRole.UserRole) + availability = self.characters[c].get("igdb_playable_list", []) + igdb_id = self.selectedGame.get("igdb_game_id") if data.get("modded"): - self.has_modded_content = True + if not availability or igdb_id in availability: + self.has_modded_content = True if (not mods_active) and data.get("modded"): item.setEnabled(False) item.setSelectable(False) else: - self.characterModel.appendRow(item) + if availability and igdb_id not in availability: + item.setEnabled(False) + item.setSelectable(False) + else: + self.characterModel.appendRow(item) self.characterModel.sort(0) except: @@ -1184,15 +1202,23 @@ def UpdateVariantModel(self, mods_active=True): item.setData( f'{self.variants[c].get("display_name")} / {c}', Qt.ItemDataRole.EditRole) + availability = self.variants[c].get("igdb_playable_list", []) + igdb_id = self.selectedGame.get("igdb_game_id") if data.get("modded"): - self.has_modded_content = True + if not availability or igdb_id in availability: + self.has_modded_content = True item.setData(data, Qt.ItemDataRole.UserRole) if (not mods_active) and data.get("modded"): item.setEnabled(False) item.setSelectable(False) else: - self.variantModel.appendRow(item) + if availability and igdb_id not in availability: + item.setEnabled(False) + item.setSelectable(False) + else: + self.variantModel.appendRow(item) + self.variantModel.sort(0) except: