From 5e9246230a2986504047a6aa3367d373c9087ae1 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Tue, 2 Dec 2003 21:32:04 +0000 Subject: [PATCH] Merge GetBestPlayer and GetStageResult logic. Should fix gameplay result ("P1 WINS") and eval screen inconsistencies. Handle draws in Rave mode. --- stepmania/src/GameState.cpp | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index 8574611ecf..03a3463c60 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -497,15 +497,10 @@ bool GameState::HasEarnedExtraStage() PlayerNumber GameState::GetBestPlayer() { - PlayerNumber winner = PLAYER_1; - for( int p=PLAYER_1+1; pm_CurStageStats.iActualDancePoints[p] == GAMESTATE->m_CurStageStats.iActualDancePoints[winner] ) - return PLAYER_INVALID; // draw - else if( GAMESTATE->m_CurStageStats.iActualDancePoints[p] > GAMESTATE->m_CurStageStats.iActualDancePoints[winner] ) - winner = (PlayerNumber)p; - } - return winner; + for( int p=PLAYER_1; p=0.5f)?RESULT_WIN:RESULT_LOSE; case PLAYER_2: return (m_fTugLifePercentP1<0.5f)?RESULT_WIN:RESULT_LOSE; default: ASSERT(0); return RESULT_LOSE; } - default: - return (GetBestPlayer()==pn)?RESULT_WIN:RESULT_LOSE; } + + StageResult win = RESULT_WIN; + for( int p=PLAYER_1; pm_CurStageStats.iActualDancePoints[p] == GAMESTATE->m_CurStageStats.iActualDancePoints[pn] ) + win = RESULT_DRAW; + + /* If anyone did better, we lost. */ + if( GAMESTATE->m_CurStageStats.iActualDancePoints[p] > GAMESTATE->m_CurStageStats.iActualDancePoints[pn] ) + return RESULT_LOSE; + } + return win; } void GameState::GetFinalEvalStatsAndSongs( StageStats& statsOut, vector& vSongsOut )