move final grade calc into StageResults

This commit is contained in:
Glenn Maynard
2005-09-11 00:38:16 +00:00
parent d22476ae7d
commit e3edba2d9d
2 changed files with 18 additions and 19 deletions
+18 -20
View File
@@ -242,30 +242,20 @@ void ScreenEvaluation::Init()
} }
*/ */
//
// Calculate grades
//
Grade grade[NUM_PLAYERS];
FOREACH_PlayerNumber( p )
{
if( GAMESTATE->IsPlayerEnabled(p) )
grade[p] = m_StageStats.m_player[p].GetGrade();
else
grade[p] = Grade_Failed;
if( PREFSMAN->m_ScoringType == PrefsManager::SCORING_5TH ) if( PREFSMAN->m_ScoringType == PrefsManager::SCORING_5TH )
{ {
const int ScoreBonuses[] = { 10000000, 10000000, 1000000, 100000, 10000, 1000, 100 }; FOREACH_PlayerNumber( p )
if( grade[p] < (int) ARRAYSIZE(ScoreBonuses) )
{ {
STATSMAN->m_CurStageStats.m_player[p].iBonus += ScoreBonuses[(int)grade[p] ]; const int ScoreBonuses[] = { 10000000, 10000000, 1000000, 100000, 10000, 1000, 100 };
m_StageStats.m_player[p].iBonus += ScoreBonuses[(int)grade[p] ]; Grade g = m_StageStats.m_player[p].GetGrade();
if( g < (int) ARRAYSIZE(ScoreBonuses) )
{
STATSMAN->m_CurStageStats.m_player[p].iBonus += ScoreBonuses[(int)g];
m_StageStats.m_player[p].iBonus += ScoreBonuses[(int)g];
} }
} }
} }
// //
// update persistent statistics // update persistent statistics
// //
@@ -412,14 +402,14 @@ void ScreenEvaluation::Init()
this->AddChild( m_sprGradeFrame[p] ); this->AddChild( m_sprGradeFrame[p] );
m_Grades[p].Load( THEME->GetPathG(m_sName,"grades") ); 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) ); m_Grades[p].SetName( ssprintf("GradeP%d",p+1) );
SET_XY_AND_ON_COMMAND( m_Grades[p] ); SET_XY_AND_ON_COMMAND( m_Grades[p] );
if( SPIN_GRADES ) if( SPIN_GRADES )
m_Grades[p].Spin(); m_Grades[p].Spin();
this->AddChild( &m_Grades[p] ); 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) ); m_sprGrade[p]->SetName( ssprintf("GradeP%d",p+1) );
SET_XY_AND_ON_COMMAND( m_sprGrade[p] ); SET_XY_AND_ON_COMMAND( m_sprGrade[p] );
this->AddChild( m_sprGrade[p] ); this->AddChild( m_sprGrade[p] );
@@ -717,7 +707,7 @@ void ScreenEvaluation::Init()
Grade best_grade = Grade_NoData; Grade best_grade = Grade_NoData;
FOREACH_PlayerNumber( p ) 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 ) if( PREFSMAN->m_bAllowExtraStage && m_bTryExtraStage )
{ {
@@ -790,6 +780,14 @@ void StageResults::CommitScores(
out[pn].Init(); 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 ) switch( GAMESTATE->m_PlayMode )
{ {
case PLAY_MODE_BATTLE: case PLAY_MODE_BATTLE:
+1
View File
@@ -27,6 +27,7 @@ public:
PerDifficultyAward m_pdaToShow; PerDifficultyAward m_pdaToShow;
PeakComboAward m_pcaToShow; PeakComboAward m_pcaToShow;
HighScore m_HighScore; HighScore m_HighScore;
Grade m_Grade;
void CalcAwards( const PlayerStageStats &m_PlayerStageStats, PlayerNumber p ); void CalcAwards( const PlayerStageStats &m_PlayerStageStats, PlayerNumber p );
static void CommitScores( const StageStats &stageStats, StageResults out[NUM_PLAYERS], bool bSummary ); static void CommitScores( const StageStats &stageStats, StageResults out[NUM_PLAYERS], bool bSummary );