diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 82074e970b..c33479806b 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -4125,6 +4125,17 @@ Tier07=D Failed=E NoData=NO DATA +[PlayerStageStats] +GradePercentTier01=1.000000 +GradePercentTier02=1.000000 +GradePercentTier03=0.930000 +GradePercentTier04=0.800000 +GradePercentTier05=0.650000 +GradePercentTier06=0.450000 +GradePercentTier07=-99999.000000 +GradeTier02IsAllPerfects=1 +NumGradeTiersUsed=7 + [HighScore] EmptyName=STEP diff --git a/stepmania/src/Grade.h b/stepmania/src/Grade.h index cb29e2ca14..cec3ce05b7 100644 --- a/stepmania/src/Grade.h +++ b/stepmania/src/Grade.h @@ -51,7 +51,7 @@ CString GradeToOldString( Grade g ); // "AAA", "B", etc for backward compatibili CString GradeToThemedString( Grade g ); Grade StringToGrade( const CString &s ); #define FOREACH_Grade( g ) FOREACH_ENUM( Grade, NUM_GRADES, g ) -#define FOREACH_UsedGrade( g ) FOREACH_ENUM( Grade, PREFSMAN->m_iNumGradeTiersUsed, g ) +#define FOREACH_UsedGrade( g ) FOREACH_ENUM( Grade, THEME->GetMetricI("PlayerStageStats","NumGradeTiersUsed"), g ) #endif diff --git a/stepmania/src/PlayerStageStats.cpp b/stepmania/src/PlayerStageStats.cpp index 8def417b7b..498c8c511b 100644 --- a/stepmania/src/PlayerStageStats.cpp +++ b/stepmania/src/PlayerStageStats.cpp @@ -2,8 +2,12 @@ #include "PlayerStageStats.h" #include "RageLog.h" #include "PrefsManager.h" +#include "ThemeManager.h" #include "Foreach.h" +#define GRADE_PERCENT_TIER(i) THEME->GetMetricF("PlayerStageStats",ssprintf("GradePercent%s",GradeToString((Grade)i).c_str())) +#define GRADE_TIER_02_IS_ALL_PERFECTS THEME->GetMetricB("PlayerStageStats","GradeTier02IsAllPerfects") + void PlayerStageStats::Init() { vpSteps.clear(); @@ -144,15 +148,15 @@ Grade PlayerStageStats::GetGrade() const FOREACH_Grade(g) { - if( fPercent >= PREFSMAN->m_fGradePercent[g] ) + if( fPercent >= GRADE_PERCENT_TIER(g) ) { grade = g; break; } } - LOG->Trace( "GetGrade: Grade: %s, %i", GradeToString(grade).c_str(), PREFSMAN->m_bGradeTier02IsAllPerfects ); - if( PREFSMAN->m_bGradeTier02IsAllPerfects ) + LOG->Trace( "GetGrade: Grade: %s, %i", GradeToString(grade).c_str(), GRADE_TIER_02_IS_ALL_PERFECTS ); + if( GRADE_TIER_02_IS_ALL_PERFECTS ) { if( iTapNoteScores[TNS_MARVELOUS] > 0 && iTapNoteScores[TNS_PERFECT] == 0 && diff --git a/stepmania/src/PrefsManager.cpp b/stepmania/src/PrefsManager.cpp index d769cfc472..2e70c499ba 100644 --- a/stepmania/src/PrefsManager.cpp +++ b/stepmania/src/PrefsManager.cpp @@ -168,17 +168,6 @@ void PrefsManager::Init() m_iGradeWeightHitMine = -8; m_iGradeWeightOK = 6; m_iGradeWeightNG = 0; - m_iNumGradeTiersUsed = 7; - for( int i=0; i