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:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 &&
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user