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
|
Failed=E
|
||||||
NoData=NO DATA
|
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]
|
[HighScore]
|
||||||
EmptyName=STEP
|
EmptyName=STEP
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ CString GradeToOldString( Grade g ); // "AAA", "B", etc for backward compatibili
|
|||||||
CString GradeToThemedString( Grade g );
|
CString GradeToThemedString( Grade g );
|
||||||
Grade StringToGrade( const CString &s );
|
Grade StringToGrade( const CString &s );
|
||||||
#define FOREACH_Grade( g ) FOREACH_ENUM( Grade, NUM_GRADES, g )
|
#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
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,12 @@
|
|||||||
#include "PlayerStageStats.h"
|
#include "PlayerStageStats.h"
|
||||||
#include "RageLog.h"
|
#include "RageLog.h"
|
||||||
#include "PrefsManager.h"
|
#include "PrefsManager.h"
|
||||||
|
#include "ThemeManager.h"
|
||||||
#include "Foreach.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()
|
void PlayerStageStats::Init()
|
||||||
{
|
{
|
||||||
vpSteps.clear();
|
vpSteps.clear();
|
||||||
@@ -144,15 +148,15 @@ Grade PlayerStageStats::GetGrade() const
|
|||||||
|
|
||||||
FOREACH_Grade(g)
|
FOREACH_Grade(g)
|
||||||
{
|
{
|
||||||
if( fPercent >= PREFSMAN->m_fGradePercent[g] )
|
if( fPercent >= GRADE_PERCENT_TIER(g) )
|
||||||
{
|
{
|
||||||
grade = g;
|
grade = g;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG->Trace( "GetGrade: Grade: %s, %i", GradeToString(grade).c_str(), PREFSMAN->m_bGradeTier02IsAllPerfects );
|
LOG->Trace( "GetGrade: Grade: %s, %i", GradeToString(grade).c_str(), GRADE_TIER_02_IS_ALL_PERFECTS );
|
||||||
if( PREFSMAN->m_bGradeTier02IsAllPerfects )
|
if( GRADE_TIER_02_IS_ALL_PERFECTS )
|
||||||
{
|
{
|
||||||
if( iTapNoteScores[TNS_MARVELOUS] > 0 &&
|
if( iTapNoteScores[TNS_MARVELOUS] > 0 &&
|
||||||
iTapNoteScores[TNS_PERFECT] == 0 &&
|
iTapNoteScores[TNS_PERFECT] == 0 &&
|
||||||
|
|||||||
@@ -168,17 +168,6 @@ void PrefsManager::Init()
|
|||||||
m_iGradeWeightHitMine = -8;
|
m_iGradeWeightHitMine = -8;
|
||||||
m_iGradeWeightOK = 6;
|
m_iGradeWeightOK = 6;
|
||||||
m_iGradeWeightNG = 0;
|
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_fSuperMeterPercentChangeMarvelous = +0.05f;
|
||||||
m_fSuperMeterPercentChangePerfect = +0.04f;
|
m_fSuperMeterPercentChangePerfect = +0.04f;
|
||||||
@@ -416,15 +405,6 @@ void PrefsManager::ReadGlobalPrefsFromIni( const IniFile &ini )
|
|||||||
ini.GetValue( "Options", "GradeWeightOK", m_iGradeWeightOK );
|
ini.GetValue( "Options", "GradeWeightOK", m_iGradeWeightOK );
|
||||||
ini.GetValue( "Options", "GradeWeightNG", m_iGradeWeightNG );
|
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", "SuperMeterPercentChangeMarvelous",m_fSuperMeterPercentChangeMarvelous );
|
||||||
ini.GetValue( "Options", "SuperMeterPercentChangePerfect", m_fSuperMeterPercentChangePerfect );
|
ini.GetValue( "Options", "SuperMeterPercentChangePerfect", m_fSuperMeterPercentChangePerfect );
|
||||||
ini.GetValue( "Options", "SuperMeterPercentChangeGreat", m_fSuperMeterPercentChangeGreat );
|
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", "GradeWeightOK", m_iGradeWeightOK );
|
||||||
ini.SetValue( "Options", "GradeWeightNG", m_iGradeWeightNG );
|
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", "SuperMeterPercentChangeMarvelous",m_fSuperMeterPercentChangeMarvelous );
|
||||||
ini.SetValue( "Options", "SuperMeterPercentChangePerfect", m_fSuperMeterPercentChangePerfect );
|
ini.SetValue( "Options", "SuperMeterPercentChangePerfect", m_fSuperMeterPercentChangePerfect );
|
||||||
ini.SetValue( "Options", "SuperMeterPercentChangeGreat", m_fSuperMeterPercentChangeGreat );
|
ini.SetValue( "Options", "SuperMeterPercentChangeGreat", m_fSuperMeterPercentChangeGreat );
|
||||||
|
|||||||
@@ -119,10 +119,6 @@ public:
|
|||||||
int m_iGradeWeightOK;
|
int m_iGradeWeightOK;
|
||||||
int m_iGradeWeightNG;
|
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_fSuperMeterPercentChangeMarvelous;
|
||||||
float m_fSuperMeterPercentChangePerfect;
|
float m_fSuperMeterPercentChangePerfect;
|
||||||
float m_fSuperMeterPercentChangeGreat;
|
float m_fSuperMeterPercentChangeGreat;
|
||||||
|
|||||||
Reference in New Issue
Block a user