Move the GradePercent tiers to theme metrics; this will allow for different games (e.g. beatmania) to have their own tiers, and is in the same vein as moving unlocks to themes

This commit is contained in:
Sean Burke
2005-03-12 10:49:41 +00:00
parent 3c4abc8b9d
commit b9c409cb58
5 changed files with 19 additions and 37 deletions
+11
View File
@@ -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
+1 -1
View File
@@ -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
+7 -3
View File
@@ -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 &&
-29
View File
@@ -168,17 +168,6 @@ void PrefsManager::Init()
m_iGradeWeightHitMine = -8;
m_iGradeWeightOK = 6;
m_iGradeWeightNG = 0;
m_iNumGradeTiersUsed = 7;
for( int i=0; i<NUM_GRADE_TIERS; i++ )
m_fGradePercent[i] = 0;
m_fGradePercent[GRADE_TIER_1] = 1.0f;
m_fGradePercent[GRADE_TIER_2] = 1.0f;
m_fGradePercent[GRADE_TIER_3] = 0.93f; // AA
m_fGradePercent[GRADE_TIER_4] = 0.80f; // A
m_fGradePercent[GRADE_TIER_5] = 0.65f; // B
m_fGradePercent[GRADE_TIER_6] = 0.45f; // C
m_fGradePercent[GRADE_TIER_7] = -99999; // D
m_bGradeTier02IsAllPerfects = true;
m_fSuperMeterPercentChangeMarvelous = +0.05f;
m_fSuperMeterPercentChangePerfect = +0.04f;
@@ -416,15 +405,6 @@ void PrefsManager::ReadGlobalPrefsFromIni( const IniFile &ini )
ini.GetValue( "Options", "GradeWeightOK", m_iGradeWeightOK );
ini.GetValue( "Options", "GradeWeightNG", m_iGradeWeightNG );
ini.GetValue( "Options", "NumGradeTiersUsed", m_iNumGradeTiersUsed );
for( int g=0; g<NUM_GRADE_TIERS; g++ )
{
Grade grade = (Grade)g;
CString s = GradeToString( grade );
ini.GetValue( "Options", "GradePercent"+s, m_fGradePercent[g] );
}
ini.GetValue( "Options", "GradeTier02IsAllPerfects", m_bGradeTier02IsAllPerfects );
ini.GetValue( "Options", "SuperMeterPercentChangeMarvelous",m_fSuperMeterPercentChangeMarvelous );
ini.GetValue( "Options", "SuperMeterPercentChangePerfect", m_fSuperMeterPercentChangePerfect );
ini.GetValue( "Options", "SuperMeterPercentChangeGreat", m_fSuperMeterPercentChangeGreat );
@@ -644,15 +624,6 @@ void PrefsManager::SaveGlobalPrefsToIni( IniFile &ini ) const
ini.SetValue( "Options", "GradeWeightOK", m_iGradeWeightOK );
ini.SetValue( "Options", "GradeWeightNG", m_iGradeWeightNG );
ini.SetValue( "Options", "NumGradeTiersUsed", m_iNumGradeTiersUsed );
for( int g=0; g<NUM_GRADE_TIERS; g++ )
{
Grade grade = (Grade)g;
CString s = GradeToString( grade );
ini.SetValue( "Options", "GradePercent"+s, m_fGradePercent[g] );
}
ini.SetValue( "Options", "GradeTier02IsAllPerfects", m_bGradeTier02IsAllPerfects );
ini.SetValue( "Options", "SuperMeterPercentChangeMarvelous",m_fSuperMeterPercentChangeMarvelous );
ini.SetValue( "Options", "SuperMeterPercentChangePerfect", m_fSuperMeterPercentChangePerfect );
ini.SetValue( "Options", "SuperMeterPercentChangeGreat", m_fSuperMeterPercentChangeGreat );
-4
View File
@@ -119,10 +119,6 @@ public:
int m_iGradeWeightOK;
int m_iGradeWeightNG;
int m_iNumGradeTiersUsed;
float m_fGradePercent[NUM_GRADE_TIERS]; // the minimum percent necessary achieve a grade
bool m_bGradeTier02IsAllPerfects; // DDR special case. If true, m_fGradePercentTier[GRADE_TIER_2] is ignored
float m_fSuperMeterPercentChangeMarvelous;
float m_fSuperMeterPercentChangePerfect;
float m_fSuperMeterPercentChangeGreat;