From 0aef70de42e256f2cd7e29d8a12040becd08bb4f Mon Sep 17 00:00:00 2001 From: "Wei-Cheng Yeh (IID)" Date: Sat, 27 Jul 2024 23:21:49 +0800 Subject: [PATCH] fix abnormal song completion animation after retrying during normal song completion animation (#661) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fix is kind of a workaround because the resetting of song completion status is now done twice, one immediate in CAct演奏PauseMenu.tEnter押下Main() (for CStage演奏ドラム画面.Draw() to detect `CStage演奏画面共通.ifp[]`) and one later in stage演奏ドラム画面.t演奏やりなおし(). * add CStage演奏画面共通.tResetGameplayFinishedStatus() for directly resetting song completion status * CAct演奏PauseMenu.tEnter押下Main(): * make song completion status reset as soon as the retry option is chosen --- OpenTaiko/src/Stages/07.Game/CAct演奏PauseMenu.cs | 1 + OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/OpenTaiko/src/Stages/07.Game/CAct演奏PauseMenu.cs b/OpenTaiko/src/Stages/07.Game/CAct演奏PauseMenu.cs index e9126ea5..36b4268f 100644 --- a/OpenTaiko/src/Stages/07.Game/CAct演奏PauseMenu.cs +++ b/OpenTaiko/src/Stages/07.Game/CAct演奏PauseMenu.cs @@ -75,6 +75,7 @@ namespace TJAPlayer3 { case (int)EOrder.Redoing: if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Dan) { + TJAPlayer3.stage演奏ドラム画面.tResetGameplayFinishedStatus(); this.bやり直しを選択した = true; CActSelectPopupMenu.b選択した = true; } else { diff --git a/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs b/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs index c24a046e..1da86601 100644 --- a/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs +++ b/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs @@ -4433,6 +4433,14 @@ namespace TJAPlayer3 { this.bPAUSE = false; } + // Workaround for abnormal song completion animation after retrying during normal song completion animation + public void tResetGameplayFinishedStatus() { + for (int i = 0; i < 5; i++) { + ifp[i] = false; + isDeniedPlaying[i] = false; + } + } + public void t演奏やりなおし() { _AIBattleState = 0; _AIBattleStateBatch = new Queue[] { new Queue(), new Queue() };