From 1c7d09efc34e69fb2162df3523d4ec2e0eed045f Mon Sep 17 00:00:00 2001 From: xezon <4720891+xezon@users.noreply.github.com> Date: Wed, 25 Jun 2025 19:32:35 +0200 Subject: [PATCH] [GEN][ZH] Fix CONTINUE button shown in Replay Score Screen --- .../GameClient/GUI/GUICallbacks/Menus/ScoreScreen.cpp | 11 +++++++---- .../GameClient/GUI/GUICallbacks/Menus/ScoreScreen.cpp | 11 +++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/ScoreScreen.cpp b/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/ScoreScreen.cpp index e3ee2daf761..c2c32dcaa58 100644 --- a/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/ScoreScreen.cpp +++ b/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/ScoreScreen.cpp @@ -412,9 +412,12 @@ WindowMsgHandledType ScoreScreenInput( GameWindow *window, UnsignedInt msg, } // end MainMenuInput -static Bool showButtonContinue() +static Bool showReplayButtonContinue() { - return ReplaySimulation::getCurrentReplayIndex() != ReplaySimulation::getReplayCount()-1; + bool hasSimulationReplay = ReplaySimulation::getReplayCount() > 0; + bool isLastSimulationReplay = ReplaySimulation::getCurrentReplayIndex() == ReplaySimulation::getReplayCount()-1; + + return hasSimulationReplay && !isLastSimulationReplay; } /** System Function for the ScoreScreen */ @@ -819,7 +822,7 @@ void initReplaySinglePlayer( void ) if (chatBoxBorder) chatBoxBorder->winHide(TRUE); if (buttonContinue) - buttonContinue->winHide(!showButtonContinue()); + buttonContinue->winHide(!showReplayButtonContinue()); if (buttonBuddies) buttonBuddies->winHide(TRUE); if (listboxChatWindowScoreScreen) @@ -905,7 +908,7 @@ void initReplayMultiPlayer(void) if (chatBoxBorder) chatBoxBorder->winHide(TRUE); if (buttonContinue) - buttonContinue->winHide(!showButtonContinue()); + buttonContinue->winHide(!showReplayButtonContinue()); if (buttonBuddies) buttonBuddies->winHide(TRUE); // if (buttonRehost) diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/ScoreScreen.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/ScoreScreen.cpp index 69c2c46fde6..e0ca6b18505 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/ScoreScreen.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/ScoreScreen.cpp @@ -504,9 +504,12 @@ WindowMsgHandledType ScoreScreenInput( GameWindow *window, UnsignedInt msg, } // end MainMenuInput -static Bool showButtonContinue() +static Bool showReplayButtonContinue() { - return ReplaySimulation::getCurrentReplayIndex() != ReplaySimulation::getReplayCount()-1; + bool hasSimulationReplay = ReplaySimulation::getReplayCount() > 0; + bool isLastSimulationReplay = ReplaySimulation::getCurrentReplayIndex() == ReplaySimulation::getReplayCount()-1; + + return hasSimulationReplay && !isLastSimulationReplay; } /** System Function for the ScoreScreen */ @@ -1003,7 +1006,7 @@ void initReplaySinglePlayer( void ) if (chatBoxBorder) chatBoxBorder->winHide(TRUE); if (buttonContinue) - buttonContinue->winHide(!showButtonContinue()); + buttonContinue->winHide(!showReplayButtonContinue()); if (buttonBuddies) buttonBuddies->winHide(TRUE); if (listboxChatWindowScoreScreen) @@ -1110,7 +1113,7 @@ void initReplayMultiPlayer(void) if (chatBoxBorder) chatBoxBorder->winHide(TRUE); if (buttonContinue) - buttonContinue->winHide(!showButtonContinue()); + buttonContinue->winHide(!showReplayButtonContinue()); if (buttonBuddies) buttonBuddies->winHide(TRUE); // if (buttonRehost)