From e1df8ed513e2994699759861c627747f9b575903 Mon Sep 17 00:00:00 2001 From: Mathias Lesauvage Date: Wed, 5 Nov 2025 19:39:19 +0100 Subject: [PATCH 1/4] An attempt at wiring individual game data widget to stage strike logic --- src/TSHScoreboardWidget.py | 19 +++++++++++++++++++ src/TSHStageStrikeLogic.py | 10 ++++++++++ 2 files changed, 29 insertions(+) diff --git a/src/TSHScoreboardWidget.py b/src/TSHScoreboardWidget.py index 9842121b2..27bae3bd3 100644 --- a/src/TSHScoreboardWidget.py +++ b/src/TSHScoreboardWidget.py @@ -613,6 +613,25 @@ def __init__(self, scoreboardNumber=1, *args): ) + def SetStageInStageOrderWidget(self, index=0, stage_codename=None): + StateManager.BlockSaving() + print(f"Setting stage for game {index+1}") + if self.stageWidgetList: + target = self.findChild(QComboBox, f"stageMenu_{index}") + if stage_codename: + for i in range(1, TSHGameAssetManager.instance.stageModelWithBlank.rowCount()): + current_menu_item_data = TSHGameAssetManager.instance.stageModelWithBlank.item(i).data(Qt.ItemDataRole.UserRole) + if current_menu_item_data.get("codename") in stage_codename: + print(i, stage_codename) + target.setCurrentIndex(i) + target.currentIndexChanged.emit(i) + else: + target.setCurrentIndex(0) + target.currentIndexChanged.emit(0) + + StateManager.ReleaseSaving() + + def CreateStageInStageOrderWidget(self, index=0): def uncheck_buttons_if_true(value, list_buttons): if value: diff --git a/src/TSHStageStrikeLogic.py b/src/TSHStageStrikeLogic.py index befb4d481..6e28241f4 100644 --- a/src/TSHStageStrikeLogic.py +++ b/src/TSHStageStrikeLogic.py @@ -2,6 +2,7 @@ from copy import deepcopy from loguru import logger from qtpy.QtCore import QObject, Signal +from .TSHScoreboardManager import TSHScoreboardManager class TSHStageStrikeStateSignals(QObject): @@ -83,6 +84,15 @@ def ExportState(self): }) self.signals.state_updated.emit() + if len(self.history) > 0: + try: + last_known_state = self.history[-1] + sb_widget= TSHScoreboardManager.instance.GetScoreboard(1) # Update the game tracker + for i in range(len(last_known_state.stagesPicked)): + sb_widget.SetStageInStageOrderWidget(i, last_known_state.stagesPicked[i]) + except IndexError as e: + logger.warning("Could not find scoreboard 1 when piloting the stage history!") + def SetRuleset(self, ruleset): self.ruleset = ruleset self.Initialize() From 6e9ef5413aae689a8e59e29fd743889aae5c9a43 Mon Sep 17 00:00:00 2001 From: Mathias Lesauvage Date: Sun, 7 Dec 2025 18:53:13 +0100 Subject: [PATCH 2/4] Fix issue where stages were offset --- src/TSHStageStrikeLogic.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/TSHStageStrikeLogic.py b/src/TSHStageStrikeLogic.py index 6e28241f4..d9f88a63f 100644 --- a/src/TSHStageStrikeLogic.py +++ b/src/TSHStageStrikeLogic.py @@ -84,12 +84,14 @@ def ExportState(self): }) self.signals.state_updated.emit() - if len(self.history) > 0: + if len(self.history) > 1: try: last_known_state = self.history[-1] + print(last_known_state.stagesPicked) + print(last_known_state.stagesWon) sb_widget= TSHScoreboardManager.instance.GetScoreboard(1) # Update the game tracker - for i in range(len(last_known_state.stagesPicked)): - sb_widget.SetStageInStageOrderWidget(i, last_known_state.stagesPicked[i]) + for i in range(1, len(last_known_state.stagesPicked)): + sb_widget.SetStageInStageOrderWidget(i-1, last_known_state.stagesPicked[i]) except IndexError as e: logger.warning("Could not find scoreboard 1 when piloting the stage history!") From 6617aaebfa1a6adadc230aacf5ee4694be98985a Mon Sep 17 00:00:00 2001 From: Mathias Lesauvage Date: Sun, 7 Dec 2025 19:00:12 +0100 Subject: [PATCH 3/4] Clean up debug strings --- src/TSHStageStrikeLogic.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/TSHStageStrikeLogic.py b/src/TSHStageStrikeLogic.py index d9f88a63f..0c0c5dc68 100644 --- a/src/TSHStageStrikeLogic.py +++ b/src/TSHStageStrikeLogic.py @@ -87,8 +87,6 @@ def ExportState(self): if len(self.history) > 1: try: last_known_state = self.history[-1] - print(last_known_state.stagesPicked) - print(last_known_state.stagesWon) sb_widget= TSHScoreboardManager.instance.GetScoreboard(1) # Update the game tracker for i in range(1, len(last_known_state.stagesPicked)): sb_widget.SetStageInStageOrderWidget(i-1, last_known_state.stagesPicked[i]) From a3e8fce0c9da9c70d2f73cd8a3699850a7aee0ab Mon Sep 17 00:00:00 2001 From: Mathias Lesauvage Date: Sat, 20 Dec 2025 21:06:28 +0100 Subject: [PATCH 4/4] Fix after merge --- src/TSHIndividualGameTracker.py | 18 ++++++++++++++++++ src/TSHStageStrikeLogic.py | 4 ++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/TSHIndividualGameTracker.py b/src/TSHIndividualGameTracker.py index ae862e619..4161286ba 100644 --- a/src/TSHIndividualGameTracker.py +++ b/src/TSHIndividualGameTracker.py @@ -309,3 +309,21 @@ def SwapStageResults(self): StateManager.Set(f"score.{self.scoreboard_number}.stages.{i+1}.t2_win", stageTeam2Check.isChecked()), StateManager.Set(f"score.{self.scoreboard_number}.stages.{i+1}.tie", stageTieCheck.isChecked()), + + def SetStage(self, index=0, stage_codename=None): + StateManager.BlockSaving() + print(f"Setting stage for game {index+1}") + if self.stage_widget_list: + target = self.findChild(QComboBox, f"stageMenu_{index}") + if stage_codename: + for i in range(1, TSHGameAssetManager.instance.stageModelWithBlank.rowCount()): + current_menu_item_data = TSHGameAssetManager.instance.stageModelWithBlank.item(i).data(Qt.ItemDataRole.UserRole) + if current_menu_item_data.get("codename") in stage_codename: + print(i, stage_codename) + target.setCurrentIndex(i) + target.currentIndexChanged.emit(i) + else: + target.setCurrentIndex(0) + target.currentIndexChanged.emit(0) + + StateManager.ReleaseSaving() diff --git a/src/TSHStageStrikeLogic.py b/src/TSHStageStrikeLogic.py index 0c0c5dc68..55dac6bca 100644 --- a/src/TSHStageStrikeLogic.py +++ b/src/TSHStageStrikeLogic.py @@ -87,9 +87,9 @@ def ExportState(self): if len(self.history) > 1: try: last_known_state = self.history[-1] - sb_widget= TSHScoreboardManager.instance.GetScoreboard(1) # Update the game tracker + sb_widget = TSHScoreboardManager.instance.GetScoreboard(1) # Update the game tracker for i in range(1, len(last_known_state.stagesPicked)): - sb_widget.SetStageInStageOrderWidget(i-1, last_known_state.stagesPicked[i]) + sb_widget.individualGameTracker.SetStage(i-1, last_known_state.stagesPicked[i]) except IndexError as e: logger.warning("Could not find scoreboard 1 when piloting the stage history!")