From e3edba2d9d894d73be77c52c24763a01c10cf150 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sun, 11 Sep 2005 00:38:16 +0000 Subject: [PATCH] move final grade calc into StageResults --- stepmania/src/ScreenEvaluation.cpp | 36 ++++++++++++++---------------- stepmania/src/ScreenEvaluation.h | 1 + 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/stepmania/src/ScreenEvaluation.cpp b/stepmania/src/ScreenEvaluation.cpp index f248dcf95a..cea581ad21 100644 --- a/stepmania/src/ScreenEvaluation.cpp +++ b/stepmania/src/ScreenEvaluation.cpp @@ -242,30 +242,20 @@ void ScreenEvaluation::Init() } */ - // - // Calculate grades - // - Grade grade[NUM_PLAYERS]; - - FOREACH_PlayerNumber( p ) + if( PREFSMAN->m_ScoringType == PrefsManager::SCORING_5TH ) { - if( GAMESTATE->IsPlayerEnabled(p) ) - grade[p] = m_StageStats.m_player[p].GetGrade(); - else - grade[p] = Grade_Failed; - - if( PREFSMAN->m_ScoringType == PrefsManager::SCORING_5TH ) + FOREACH_PlayerNumber( p ) { const int ScoreBonuses[] = { 10000000, 10000000, 1000000, 100000, 10000, 1000, 100 }; - if( grade[p] < (int) ARRAYSIZE(ScoreBonuses) ) + Grade g = m_StageStats.m_player[p].GetGrade(); + if( g < (int) ARRAYSIZE(ScoreBonuses) ) { - STATSMAN->m_CurStageStats.m_player[p].iBonus += ScoreBonuses[(int)grade[p] ]; - m_StageStats.m_player[p].iBonus += ScoreBonuses[(int)grade[p] ]; + STATSMAN->m_CurStageStats.m_player[p].iBonus += ScoreBonuses[(int)g]; + m_StageStats.m_player[p].iBonus += ScoreBonuses[(int)g]; } } } - // // update persistent statistics // @@ -412,14 +402,14 @@ void ScreenEvaluation::Init() this->AddChild( m_sprGradeFrame[p] ); m_Grades[p].Load( THEME->GetPathG(m_sName,"grades") ); - m_Grades[p].SetGrade( p, grade[p] ); + m_Grades[p].SetGrade( p, m_StageResults[p].m_Grade ); m_Grades[p].SetName( ssprintf("GradeP%d",p+1) ); SET_XY_AND_ON_COMMAND( m_Grades[p] ); if( SPIN_GRADES ) m_Grades[p].Spin(); this->AddChild( &m_Grades[p] ); - m_sprGrade[p].Load( THEME->GetPathG(m_sName,"grade "+GradeToString(grade[p])) ); + m_sprGrade[p].Load( THEME->GetPathG(m_sName,"grade "+GradeToString(m_StageResults[p].m_Grade)) ); m_sprGrade[p]->SetName( ssprintf("GradeP%d",p+1) ); SET_XY_AND_ON_COMMAND( m_sprGrade[p] ); this->AddChild( m_sprGrade[p] ); @@ -717,7 +707,7 @@ void ScreenEvaluation::Init() Grade best_grade = Grade_NoData; FOREACH_PlayerNumber( p ) - best_grade = min( best_grade, grade[p] ); + best_grade = min( best_grade, m_StageResults[p].m_Grade ); if( PREFSMAN->m_bAllowExtraStage && m_bTryExtraStage ) { @@ -790,6 +780,14 @@ void StageResults::CommitScores( out[pn].Init(); } + FOREACH_PlayerNumber( p ) + { + if( GAMESTATE->IsPlayerEnabled(p) ) + out[p].m_Grade = m_StageStats.m_player[p].GetGrade(); + else + out[p].m_Grade = Grade_Failed; + } + switch( GAMESTATE->m_PlayMode ) { case PLAY_MODE_BATTLE: diff --git a/stepmania/src/ScreenEvaluation.h b/stepmania/src/ScreenEvaluation.h index 84b8e439cc..1c9ca58f9a 100644 --- a/stepmania/src/ScreenEvaluation.h +++ b/stepmania/src/ScreenEvaluation.h @@ -27,6 +27,7 @@ public: PerDifficultyAward m_pdaToShow; PeakComboAward m_pcaToShow; HighScore m_HighScore; + Grade m_Grade; void CalcAwards( const PlayerStageStats &m_PlayerStageStats, PlayerNumber p ); static void CommitScores( const StageStats &stageStats, StageResults out[NUM_PLAYERS], bool bSummary );