From a4736a88027db6f4163def08b9518e9fb9b5c7b2 Mon Sep 17 00:00:00 2001 From: Andrew Livy Date: Fri, 22 May 2009 15:15:31 +0000 Subject: [PATCH] Overcomes some weirdness with final stage reporting in GameState::GetCurrentStage() --- stepmania/src/GameState.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index e528938b31..c52422b0c0 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -964,6 +964,7 @@ int GameState::GetSmallestNumStagesLeftForAnyHumanPlayer() const bool GameState::IsFinalStageForAnyHumanPlayer() const { + return GetSmallestNumStagesLeftForAnyHumanPlayer() == 1; } @@ -1004,7 +1005,10 @@ Stage GameState::GetCurrentStage() const else if( m_PlayMode == PLAY_MODE_ENDLESS ) return Stage_Endless; else if( IsExtraStage() ) return Stage_Extra1; else if( IsExtraStage2() ) return Stage_Extra2; - else if( IsFinalStageForAnyHumanPlayer() ) return Stage_Final; +// else if( IsFinalStageForAnyHumanPlayer() ) return Stage_Final; + // above function behaves weirdly, it will always return final stage if any player is + // on final stage, rather than the last remaining player. The below method seems to make a bit more sense. + else if(m_iPlayerStageTokens[PLAYER_1] == 0 && m_iPlayerStageTokens[PLAYER_2] == 0) return Stage_Final; else {