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
+17 -19
View File
@@ -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: