From d22476ae7dfeebb79523e97a95851ad624a64279 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sun, 11 Sep 2005 00:27:54 +0000 Subject: [PATCH] ScreenEvaluation::CommitScores -> StageResults::CommitScores --- stepmania/src/ScreenEvaluation.cpp | 106 ++++++++++++----------------- stepmania/src/ScreenEvaluation.h | 2 +- 2 files changed, 45 insertions(+), 63 deletions(-) diff --git a/stepmania/src/ScreenEvaluation.cpp b/stepmania/src/ScreenEvaluation.cpp index f655ac8f45..f248dcf95a 100644 --- a/stepmania/src/ScreenEvaluation.cpp +++ b/stepmania/src/ScreenEvaluation.cpp @@ -269,7 +269,7 @@ void ScreenEvaluation::Init() // // update persistent statistics // - CommitScores( m_StageStats, m_StageResults, m_Type ); + StageResults::CommitScores( m_StageStats, m_StageResults, m_Type == summary ); m_bTryExtraStage = GAMESTATE->HasEarnedExtraStage() && @@ -780,10 +780,10 @@ void ScreenEvaluation::Init() } -void ScreenEvaluation::CommitScores( +void StageResults::CommitScores( const StageStats &m_StageStats, StageResults out[NUM_PLAYERS], - ScreenEvaluation::Type type ) + bool bSummary ) { FOREACH_PlayerNumber( pn ) { @@ -849,47 +849,37 @@ void ScreenEvaluation::CommitScores( const Song* pSong = GAMESTATE->m_pCurSong; const Steps* pSteps = GAMESTATE->m_pCurSteps[p]; - switch( type ) + if( bSummary ) { - case stage: - { - // don't save scores for a failed song - if( m_StageStats.m_player[p].bFailed ) - continue; + // don't save scores if any stage was failed + if( m_StageStats.m_player[p].bFailed ) + continue; - ASSERT( pSteps ); + int iAverageMeter = m_StageStats.GetAverageMeter(p); + out[p].m_rc = AverageMeterToRankingCategory( iAverageMeter ); - PROFILEMAN->AddStepsScore( pSong, pSteps, p, hs, out[p].m_iPersonalHighScoreIndex, out[p].m_iMachineHighScoreIndex ); - } - break; + PROFILEMAN->AddCategoryScore( st, out[p].m_rc, p, hs, out[p].m_iPersonalHighScoreIndex, out[p].m_iMachineHighScoreIndex ); + + // TRICKY: Increment play count here, and not on ScreenGameplay like the others. + PROFILEMAN->IncrementCategoryPlayCount( st, out[p].m_rc, p ); + } + else if( GAMESTATE->IsCourseMode() ) + { + Course* pCourse = GAMESTATE->m_pCurCourse; + ASSERT( pCourse ); + Trail* pTrail = GAMESTATE->m_pCurTrail[p]; - case summary: - { - // don't save scores if any stage was failed - if( m_StageStats.m_player[p].bFailed ) - continue; + PROFILEMAN->AddCourseScore( pCourse, pTrail, p, hs, out[p].m_iPersonalHighScoreIndex, out[p].m_iMachineHighScoreIndex ); + } + else + { + // don't save scores for a failed song + if( m_StageStats.m_player[p].bFailed ) + continue; - int iAverageMeter = m_StageStats.GetAverageMeter(p); - out[p].m_rc = AverageMeterToRankingCategory( iAverageMeter ); + ASSERT( pSteps ); - PROFILEMAN->AddCategoryScore( st, out[p].m_rc, p, hs, out[p].m_iPersonalHighScoreIndex, out[p].m_iMachineHighScoreIndex ); - - // TRICKY: Increment play count here, and not on ScreenGameplay like the others. - PROFILEMAN->IncrementCategoryPlayCount( st, out[p].m_rc, p ); - } - break; - - case course: - { - Course* pCourse = GAMESTATE->m_pCurCourse; - ASSERT( pCourse ); - Trail* pTrail = GAMESTATE->m_pCurTrail[p]; - - PROFILEMAN->AddCourseScore( pCourse, pTrail, p, hs, out[p].m_iPersonalHighScoreIndex, out[p].m_iMachineHighScoreIndex ); - } - break; - default: - ASSERT(0); + PROFILEMAN->AddStepsScore( pSong, pSteps, p, hs, out[p].m_iPersonalHighScoreIndex, out[p].m_iMachineHighScoreIndex ); } } @@ -908,31 +898,23 @@ void ScreenEvaluation::CommitScores( StepsType st = GAMESTATE->GetCurrentStyle()->m_StepsType; const HighScoreList *pHSL = NULL; - switch( type ) + if( bSummary ) { - case stage: - { - Song* pSong = GAMESTATE->m_pCurSong; - Steps* pSteps = GAMESTATE->m_pCurSteps[p]; - pHSL = &pProfile->GetStepsHighScoreList( pSong, pSteps ); - } - break; - case summary: - { - pHSL = &pProfile->GetCategoryHighScoreList( st, out[p].m_rc ); - } - break; - case course: - { - Course* pCourse = GAMESTATE->m_pCurCourse; - ASSERT( pCourse ); - Trail *pTrail = GAMESTATE->m_pCurTrail[p]; - ASSERT( pTrail ); - pHSL = &pProfile->GetCourseHighScoreList( pCourse, pTrail ); - } - break; - default: - ASSERT(0); + pHSL = &pProfile->GetCategoryHighScoreList( st, out[p].m_rc ); + } + else if( GAMESTATE->IsCourseMode() ) + { + Course* pCourse = GAMESTATE->m_pCurCourse; + ASSERT( pCourse ); + Trail *pTrail = GAMESTATE->m_pCurTrail[p]; + ASSERT( pTrail ); + pHSL = &pProfile->GetCourseHighScoreList( pCourse, pTrail ); + } + else + { + Song* pSong = GAMESTATE->m_pCurSong; + Steps* pSteps = GAMESTATE->m_pCurSteps[p]; + pHSL = &pProfile->GetStepsHighScoreList( pSong, pSteps ); } vector::const_iterator iter = find( pHSL->vHighScores.begin(), pHSL->vHighScores.end(), hs ); diff --git a/stepmania/src/ScreenEvaluation.h b/stepmania/src/ScreenEvaluation.h index 1d973d50f0..84b8e439cc 100644 --- a/stepmania/src/ScreenEvaluation.h +++ b/stepmania/src/ScreenEvaluation.h @@ -29,6 +29,7 @@ public: HighScore m_HighScore; void CalcAwards( const PlayerStageStats &m_PlayerStageStats, PlayerNumber p ); + static void CommitScores( const StageStats &stageStats, StageResults out[NUM_PLAYERS], bool bSummary ); }; const int MAX_SONGS_TO_SHOW = 5; // In summary, we show last 3 stages, plus extra stages if passed @@ -57,7 +58,6 @@ public: StageResults m_StageResults[NUM_PLAYERS]; protected: - static void CommitScores( const StageStats &stageStats, StageResults out[NUM_PLAYERS], ScreenEvaluation::Type type ); void EndScreen(); Type m_Type;