options name cleanup, fixes

This commit is contained in:
Chris Danford
2004-01-20 07:09:44 +00:00
parent 42e0413e0f
commit c8fc9ddeae
11 changed files with 348 additions and 338 deletions
+9 -9
View File
@@ -68,12 +68,12 @@ void CombinedLifeMeterTug::ChangeLife( PlayerNumber pn, TapNoteScore score )
float fPercentToMove = 0;
switch( score )
{
case TNS_MARVELOUS: fPercentToMove = PREFSMAN->m_fTugMeterMarvelousPercentChange; break;
case TNS_PERFECT: fPercentToMove = PREFSMAN->m_fTugMeterPerfectPercentChange; break;
case TNS_GREAT: fPercentToMove = PREFSMAN->m_fTugMeterGreatPercentChange; break;
case TNS_GOOD: fPercentToMove = PREFSMAN->m_fTugMeterGoodPercentChange; break;
case TNS_BOO: fPercentToMove = PREFSMAN->m_fTugMeterBooPercentChange; break;
case TNS_MISS: fPercentToMove = PREFSMAN->m_fTugMeterMissPercentChange; break;
case TNS_MARVELOUS: fPercentToMove = PREFSMAN->m_fTugMeterPercentChangeMarvelous; break;
case TNS_PERFECT: fPercentToMove = PREFSMAN->m_fTugMeterPercentChangePerfect; break;
case TNS_GREAT: fPercentToMove = PREFSMAN->m_fTugMeterPercentChangeGreat; break;
case TNS_GOOD: fPercentToMove = PREFSMAN->m_fTugMeterPercentChangeGood; break;
case TNS_BOO: fPercentToMove = PREFSMAN->m_fTugMeterPercentChangeBoo; break;
case TNS_MISS: fPercentToMove = PREFSMAN->m_fTugMeterPercentChangeMiss; break;
default: ASSERT(0); break;
}
@@ -90,8 +90,8 @@ void CombinedLifeMeterTug::ChangeLife( PlayerNumber pn, HoldNoteScore score, Tap
float fPercentToMove = 0;
switch( score )
{
case HNS_OK: fPercentToMove = PREFSMAN->m_fTugMeterOKPercentChange; break;
case HNS_NG: fPercentToMove = PREFSMAN->m_fTugMeterNGPercentChange; break;
case HNS_OK: fPercentToMove = PREFSMAN->m_fTugMeterPercentChangeOK; break;
case HNS_NG: fPercentToMove = PREFSMAN->m_fTugMeterPercentChangeNG; break;
default: ASSERT(0); break;
}
@@ -100,7 +100,7 @@ void CombinedLifeMeterTug::ChangeLife( PlayerNumber pn, HoldNoteScore score, Tap
void CombinedLifeMeterTug::ChangeLifeMine( PlayerNumber pn )
{
float fPercentToMove = PREFSMAN->m_fTugMeterHitMinePercentChange;
float fPercentToMove = PREFSMAN->m_fTugMeterPercentChangeHitMine;
ChangeLife( pn, fPercentToMove );
}
+27 -8
View File
@@ -21,7 +21,25 @@ CString GradeToString( Grade g )
case GRADE_NO_DATA: return "NoData";
case GRADE_FAILED: return "Failed";
default:
return ssprintf("%02d",g);
return ssprintf("%02d",g+1);
}
};
CString GradeToOldString( Grade g )
{
// string is meant to be human readable
switch( g )
{
case GRADE_TIER_1: return "AAAA";
case GRADE_TIER_2: return "AAA";
case GRADE_TIER_3: return "AA";
case GRADE_TIER_4: return "A";
case GRADE_TIER_5: return "B";
case GRADE_TIER_6: return "C";
case GRADE_TIER_7: return "D";
case GRADE_FAILED: return "E";
case GRADE_NO_DATA: return "N";
default: return "N";
}
};
@@ -30,7 +48,7 @@ Grade StringToGrade( const CString &sGrade )
CString s = sGrade;
s.MakeUpper();
// letters for backward compatibility
// for backward compatibility
if ( s == "AAAA" ) return GRADE_TIER_1;
else if( s == "AAA" ) return GRADE_TIER_2;
else if( s == "AA" ) return GRADE_TIER_3;
@@ -39,16 +57,17 @@ Grade StringToGrade( const CString &sGrade )
else if( s == "C" ) return GRADE_TIER_6;
else if( s == "D" ) return GRADE_TIER_7;
else if( s == "E" ) return GRADE_FAILED;
else if( s == "FAILED" ) return GRADE_FAILED;
else if( s == "N" ) return GRADE_NO_DATA;
// new style
if ( s == "FAILED" ) return GRADE_FAILED;
else if( s == "NODATA" ) return GRADE_NO_DATA;
#define MY_IS_DIGIT( c ) (c>='0'&&c<='9')
// If the string is a two digit number...
if( s.length()==2 && MY_IS_DIGIT(s[0]) && MY_IS_DIGIT(s[1]) )
{
return (Grade)atoi(s);
}
if( s.length()==2 && MY_IS_DIGIT(s[0]) && MY_IS_DIGIT(s[1]) ) // if it's a two digit number...
return (Grade)(atoi(s)-1);
ASSERT(0);
return GRADE_NO_DATA;
+3 -2
View File
@@ -16,7 +16,6 @@
#define NUM_GRADE_TIERS 20
enum Grade
{
GRADE_NO_DATA=0,
GRADE_TIER_1, // = AAAA
GRADE_TIER_2, // = AAA
GRADE_TIER_3, // = AA
@@ -38,10 +37,12 @@ enum Grade
GRADE_TIER_19,
GRADE_TIER_20,
GRADE_FAILED, // = E
NUM_GRADES
NUM_GRADES,
GRADE_NO_DATA, // ~GRADE_INVALID
};
CString GradeToString( Grade g );
CString GradeToOldString( Grade g ); // "AAA", "B", etc for backward compatibility
Grade StringToGrade( const CString &s );
#endif
+13 -13
View File
@@ -287,12 +287,12 @@ void LifeMeterBar::ChangeLife( TapNoteScore score )
case SongOptions::DRAIN_NORMAL:
switch( score )
{
case TNS_MARVELOUS: fDeltaLife = PREFSMAN->m_fLifeDeltaMarvelousPercentChange; break;
case TNS_PERFECT: fDeltaLife = PREFSMAN->m_fLifeDeltaPerfectPercentChange; break;
case TNS_GREAT: fDeltaLife = PREFSMAN->m_fLifeDeltaGreatPercentChange; break;
case TNS_GOOD: fDeltaLife = PREFSMAN->m_fLifeDeltaGoodPercentChange; break;
case TNS_BOO: fDeltaLife = PREFSMAN->m_fLifeDeltaBooPercentChange; break;
case TNS_MISS: fDeltaLife = PREFSMAN->m_fLifeDeltaMissPercentChange; break;
case TNS_MARVELOUS: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeMarvelous; break;
case TNS_PERFECT: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangePerfect; break;
case TNS_GREAT: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeGreat; break;
case TNS_GOOD: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeGood; break;
case TNS_BOO: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeBoo; break;
case TNS_MISS: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeMiss; break;
default:
ASSERT(0);
}
@@ -306,8 +306,8 @@ void LifeMeterBar::ChangeLife( TapNoteScore score )
case TNS_PERFECT: fDeltaLife = +0.000f; break;
case TNS_GREAT: fDeltaLife = +0.000f; break;
case TNS_GOOD: fDeltaLife = +0.000f; break;
case TNS_BOO: fDeltaLife = PREFSMAN->m_fLifeDeltaBooPercentChange; break;
case TNS_MISS: fDeltaLife = PREFSMAN->m_fLifeDeltaMissPercentChange; break;
case TNS_BOO: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeBoo; break;
case TNS_MISS: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeMiss; break;
default:
ASSERT(0);
}
@@ -345,8 +345,8 @@ void LifeMeterBar::ChangeLife( HoldNoteScore score, TapNoteScore tscore )
case SongOptions::DRAIN_NORMAL:
switch( score )
{
case HNS_OK: fDeltaLife = PREFSMAN->m_fLifeDeltaOKPercentChange; break;
case HNS_NG: fDeltaLife = PREFSMAN->m_fLifeDeltaNGPercentChange; break;
case HNS_OK: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeOK; break;
case HNS_NG: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeNG; break;
default:
ASSERT(0);
}
@@ -357,7 +357,7 @@ void LifeMeterBar::ChangeLife( HoldNoteScore score, TapNoteScore tscore )
switch( score )
{
case HNS_OK: fDeltaLife = +0.000f; break;
case HNS_NG: fDeltaLife = PREFSMAN->m_fLifeDeltaNGPercentChange; break;
case HNS_NG: fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeNG; break;
default:
ASSERT(0);
}
@@ -445,12 +445,12 @@ void LifeMeterBar::ChangeLifeMine()
switch( GAMESTATE->m_SongOptions.m_DrainType )
{
case SongOptions::DRAIN_NORMAL:
fDeltaLife = PREFSMAN->m_fLifeDeltaHitMinePercentChange;
fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeHitMine;
if( IsHot() )
fDeltaLife = -0.10f; // make it take a while to get back to "doing great"
break;
case SongOptions::DRAIN_NO_RECOVER:
fDeltaLife = PREFSMAN->m_fLifeDeltaHitMinePercentChange;
fDeltaLife = PREFSMAN->m_fLifeDeltaPercentChangeHitMine;
break;
case SongOptions::DRAIN_SUDDEN_DEATH:
fDeltaLife = -1.0;
+24 -24
View File
@@ -344,7 +344,7 @@ void PlayerMinus::Update( float fDeltaTime )
// if( fSongBeat-hn.fStartBeat > GAMESTATE->m_fCurBPS * GetMaxStepDistanceSeconds() )
// {
// Decrease life
fLife -= fDeltaTime/PREFSMAN->m_fJudgeWindowOKSeconds;
fLife -= fDeltaTime/PREFSMAN->m_fJudgeWindowSecondsOK;
fLife = max( fLife, 0 ); // clamp
// }
}
@@ -624,22 +624,22 @@ void PlayerMinus::Step( int col, RageTimer tm )
/* 1 is normal. 2 means scoring is half as hard; .5 means it's twice as hard. */
/* Ez2 is only perfect / good / miss */
float fScaledSecondsFromPerfect = fSecondsFromPerfect / PREFSMAN->m_fJudgeWindowScale;
if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowMarvelousSeconds ) score = TNS_PERFECT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowPerfectSeconds ) score = TNS_PERFECT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowGreatSeconds ) score = TNS_PERFECT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowGoodSeconds ) score = TNS_GOOD;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowBooSeconds ) score = TNS_MISS;
if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsMarvelous ) score = TNS_PERFECT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsPerfect ) score = TNS_PERFECT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsGreat ) score = TNS_PERFECT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsGood ) score = TNS_GOOD;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsBoo ) score = TNS_MISS;
else score = TNS_NONE;
}
else if(GAMESTATE->m_CurGame == GAME_PNM)
{
/* PNM Goods = Great / Boo = Miss */
float fScaledSecondsFromPerfect = fSecondsFromPerfect / PREFSMAN->m_fJudgeWindowScale;
if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowMarvelousSeconds ) score = TNS_MARVELOUS;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowPerfectSeconds ) score = TNS_PERFECT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowGreatSeconds ) score = TNS_GREAT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowGoodSeconds ) score = TNS_GREAT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowBooSeconds ) score = TNS_MISS;
if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsMarvelous ) score = TNS_MARVELOUS;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsPerfect ) score = TNS_PERFECT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsGreat ) score = TNS_GREAT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsGood ) score = TNS_GREAT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsBoo ) score = TNS_MISS;
else score = TNS_NONE;
}
@@ -648,7 +648,7 @@ void PlayerMinus::Step( int col, RageTimer tm )
{
case TAP_MINE:
// stepped too close to mine?
if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowMineSeconds )
if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsMine )
{
m_soundMine.Play();
score = TNS_HIT_MINE;
@@ -666,7 +666,7 @@ void PlayerMinus::Step( int col, RageTimer tm )
if( IsTapAttack(tn) )
{
score = TNS_NONE; // don't score this as anything
if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowAttackSeconds )
if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsAttack )
{
m_soundAttackLaunch.Play();
// put attack in effect
@@ -692,21 +692,21 @@ void PlayerMinus::Step( int col, RageTimer tm )
{
/* 1 is normal. 2 means scoring is half as hard; .5 means it's twice as hard. */
/* Ez2 is only perfect / good / miss */
if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowMarvelousSeconds ) score = TNS_PERFECT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowPerfectSeconds ) score = TNS_PERFECT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowGreatSeconds ) score = TNS_PERFECT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowGoodSeconds ) score = TNS_GOOD;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowBooSeconds ) score = TNS_MISS;
if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsMarvelous ) score = TNS_PERFECT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsPerfect ) score = TNS_PERFECT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsGreat ) score = TNS_PERFECT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsGood ) score = TNS_GOOD;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsBoo ) score = TNS_MISS;
else score = TNS_NONE;
}
else
{
/* 1 is normal. 2 means scoring is half as hard; .5 means it's twice as hard. */
if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowMarvelousSeconds ) score = TNS_MARVELOUS;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowPerfectSeconds ) score = TNS_PERFECT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowGreatSeconds ) score = TNS_GREAT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowGoodSeconds ) score = TNS_GOOD;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowBooSeconds ) score = TNS_BOO;
if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsMarvelous ) score = TNS_MARVELOUS;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsPerfect ) score = TNS_PERFECT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsGreat ) score = TNS_GREAT;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsGood ) score = TNS_GOOD;
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowSecondsBoo ) score = TNS_BOO;
else score = TNS_NONE;
}
}
@@ -1219,7 +1219,7 @@ void PlayerMinus::HandleHoldScore( HoldNoteScore holdScore, TapNoteScore tapScor
float PlayerMinus::GetMaxStepDistanceSeconds()
{
return GAMESTATE->m_SongOptions.m_fMusicRate * PREFSMAN->m_fJudgeWindowBooSeconds * PREFSMAN->m_fJudgeWindowScale;
return GAMESTATE->m_SongOptions.m_fMusicRate * PREFSMAN->m_fJudgeWindowSecondsBoo * PREFSMAN->m_fJudgeWindowScale;
}
void PlayerMinus::FadeToFail()
+164 -161
View File
@@ -62,33 +62,33 @@ PrefsManager::PrefsManager()
m_bAutoPlay = false;
m_fJudgeWindowScale = 1.0f;
m_fLifeDifficultyScale = 1.0f;
m_fJudgeWindowMarvelousSeconds = 0.0225f;
m_fJudgeWindowPerfectSeconds = 0.045f;
m_fJudgeWindowGreatSeconds = 0.090f;
m_fJudgeWindowGoodSeconds = 0.135f;
m_fJudgeWindowBooSeconds = 0.180f;
m_fJudgeWindowOKSeconds = 0.250f; // allow enough time to take foot off and put back on
m_fJudgeWindowMineSeconds = 0.090f; // same as great
m_fJudgeWindowAttackSeconds = 0.135f;
m_fLifeDeltaMarvelousPercentChange = +0.008f;
m_fLifeDeltaPerfectPercentChange = +0.008f;
m_fLifeDeltaGreatPercentChange = +0.004f;
m_fLifeDeltaGoodPercentChange = +0.000f;
m_fLifeDeltaBooPercentChange = -0.040f;
m_fLifeDeltaMissPercentChange = -0.080f;
m_fLifeDeltaHitMinePercentChange = -0.160f;
m_fLifeDeltaOKPercentChange = +0.008f;
m_fLifeDeltaNGPercentChange = -0.080f;
m_fJudgeWindowSecondsMarvelous = 0.0225f;
m_fJudgeWindowSecondsPerfect = 0.045f;
m_fJudgeWindowSecondsGreat = 0.090f;
m_fJudgeWindowSecondsGood = 0.135f;
m_fJudgeWindowSecondsBoo = 0.180f;
m_fJudgeWindowSecondsOK = 0.250f; // allow enough time to take foot off and put back on
m_fJudgeWindowSecondsMine = 0.090f; // same as great
m_fJudgeWindowSecondsAttack = 0.135f;
m_fLifeDeltaPercentChangeMarvelous = +0.008f;
m_fLifeDeltaPercentChangePerfect = +0.008f;
m_fLifeDeltaPercentChangeGreat = +0.004f;
m_fLifeDeltaPercentChangeGood = +0.000f;
m_fLifeDeltaPercentChangeBoo = -0.040f;
m_fLifeDeltaPercentChangeMiss = -0.080f;
m_fLifeDeltaPercentChangeHitMine = -0.160f;
m_fLifeDeltaPercentChangeOK = +0.008f;
m_fLifeDeltaPercentChangeNG = -0.080f;
m_fTugMeterMarvelousPercentChange = +0.010f;
m_fTugMeterPerfectPercentChange = +0.008f;
m_fTugMeterGreatPercentChange = +0.004f;
m_fTugMeterGoodPercentChange = +0.000f;
m_fTugMeterBooPercentChange = -0.010f;
m_fTugMeterMissPercentChange = -0.020f;
m_fTugMeterHitMinePercentChange = -0.040f;
m_fTugMeterOKPercentChange = +0.008f;
m_fTugMeterNGPercentChange = -0.020f;
m_fTugMeterPercentChangeMarvelous = +0.010f;
m_fTugMeterPercentChangePerfect = +0.008f;
m_fTugMeterPercentChangeGreat = +0.004f;
m_fTugMeterPercentChangeGood = +0.000f;
m_fTugMeterPercentChangeBoo = -0.010f;
m_fTugMeterPercentChangeMiss = -0.020f;
m_fTugMeterPercentChangeHitMine = -0.040f;
m_fTugMeterPercentChangeOK = +0.008f;
m_fTugMeterPercentChangeNG = -0.020f;
m_iRegenComboAfterFail = 10; // cumulative
m_iRegenComboAfterMiss = 5; // cumulative
@@ -97,26 +97,25 @@ PrefsManager::PrefsManager()
m_bTwoPlayerRecovery = true;
m_bMercifulDrain = true;
m_iPercentScoreMarvelousWeight = 3;
m_iPercentScorePerfectWeight = 2;
m_iPercentScoreGreatWeight = 1;
m_iPercentScoreGoodWeight = 0;
m_iPercentScoreBooWeight = 0;
m_iPercentScoreMissWeight = 0;
m_iPercentScoreOKWeight = 3;
m_iPercentScoreNGWeight = 0;
m_iPercentScoreHitMineWeight = -2;
m_iGradeMarvelousWeight = 2;
m_iGradePerfectWeight = 2;
m_iGradeGreatWeight = 1;
m_iGradeGoodWeight = 0;
m_iGradeBooWeight = -4;
m_iGradeMissWeight = -8;
m_iGradeHitMineWeight = -8;
m_iGradeOKWeight = 6;
m_iGradeNGWeight = 0;
m_bGradeTier1IsAllMarvelouses = true;
m_bGradeTier2IsAllPerfects = true;
m_iPercentScoreWeightMarvelous = 3;
m_iPercentScoreWeightPerfect = 2;
m_iPercentScoreWeightGreat = 1;
m_iPercentScoreWeightGood = 0;
m_iPercentScoreWeightBoo = 0;
m_iPercentScoreWeightMiss = 0;
m_iPercentScoreWeightOK = 3;
m_iPercentScoreWeightNG = 0;
m_iPercentScoreWeightHitMine = -2;
m_iGradeWeightMarvelous = 2;
m_iGradeWeightPerfect = 2;
m_iGradeWeightGreat = 1;
m_iGradeWeightGood = 0;
m_iGradeWeightBoo = -4;
m_iGradeWeightMiss = -8;
m_iGradeWeightHitMine = -8;
m_iGradeWeightOK = 6;
m_iGradeWeightNG = 0;
m_bGradeTier02IsAllPerfects = true;
for( int i=0; i<NUM_GRADE_TIERS; i++ )
m_fGradePercentTier[i] = 0;
m_fGradePercentTier[GRADE_TIER_1] = 1.0f;
@@ -126,15 +125,15 @@ PrefsManager::PrefsManager()
m_fGradePercentTier[GRADE_TIER_5] = 0.65f; // B
m_fGradePercentTier[GRADE_TIER_6] = 0.45f; // C
m_fSuperMeterMarvelousPercentChange = +0.05f;
m_fSuperMeterPerfectPercentChange = +0.04f;
m_fSuperMeterGreatPercentChange = +0.02f;
m_fSuperMeterGoodPercentChange = +0.00f;
m_fSuperMeterBooPercentChange = -0.00f;
m_fSuperMeterMissPercentChange = -0.20f;
m_fSuperMeterHitMinePercentChange = -0.40f;
m_fSuperMeterOKPercentChange = +0.04f;
m_fSuperMeterNGPercentChange = -0.20f;
m_fSuperMeterPercentChangeMarvelous = +0.05f;
m_fSuperMeterPercentChangePerfect = +0.04f;
m_fSuperMeterPercentChangeGreat = +0.02f;
m_fSuperMeterPercentChangeGood = +0.00f;
m_fSuperMeterPercentChangeBoo = -0.00f;
m_fSuperMeterPercentChangeMiss = -0.20f;
m_fSuperMeterPercentChangeHitMine = -0.40f;
m_fSuperMeterPercentChangeOK = +0.04f;
m_fSuperMeterPercentChangeNG = -0.20f;
m_bMercifulSuperMeter = true;
m_bDelayedEscape = true;
@@ -318,32 +317,32 @@ void PrefsManager::ReadGlobalPrefsFromDisk()
ini.GetValue( "Options", "AutoPlay", m_bAutoPlay );
ini.GetValue( "Options", "JudgeWindowScale", m_fJudgeWindowScale );
ini.GetValue( "Options", "LifeDifficultyScale", m_fLifeDifficultyScale );
ini.GetValue( "Options", "JudgeWindowMarvelousSeconds", m_fJudgeWindowMarvelousSeconds );
ini.GetValue( "Options", "JudgeWindowPerfectSeconds", m_fJudgeWindowPerfectSeconds );
ini.GetValue( "Options", "JudgeWindowGreatSeconds", m_fJudgeWindowGreatSeconds );
ini.GetValue( "Options", "JudgeWindowGoodSeconds", m_fJudgeWindowGoodSeconds );
ini.GetValue( "Options", "JudgeWindowBooSeconds", m_fJudgeWindowBooSeconds );
ini.GetValue( "Options", "JudgeWindowOKSeconds", m_fJudgeWindowOKSeconds );
ini.GetValue( "Options", "JudgeWindowMineSeconds", m_fJudgeWindowMineSeconds );
ini.GetValue( "Options", "JudgeWindowAttackSeconds", m_fJudgeWindowAttackSeconds );
ini.GetValue( "Options", "LifeDeltaMarvelousPercentChange", m_fLifeDeltaMarvelousPercentChange );
ini.GetValue( "Options", "LifeDeltaPerfectPercentChange", m_fLifeDeltaPerfectPercentChange );
ini.GetValue( "Options", "LifeDeltaGreatPercentChange", m_fLifeDeltaGreatPercentChange );
ini.GetValue( "Options", "LifeDeltaGoodPercentChange", m_fLifeDeltaGoodPercentChange );
ini.GetValue( "Options", "LifeDeltaBooPercentChange", m_fLifeDeltaBooPercentChange );
ini.GetValue( "Options", "LifeDeltaMissPercentChange", m_fLifeDeltaMissPercentChange );
ini.GetValue( "Options", "LifeDeltaHitMinePercentChange", m_fLifeDeltaHitMinePercentChange );
ini.GetValue( "Options", "LifeDeltaOKPercentChange", m_fLifeDeltaOKPercentChange );
ini.GetValue( "Options", "LifeDeltaNGPercentChange", m_fLifeDeltaNGPercentChange );
ini.GetValue( "Options", "TugMeterMarvelousPercentChange", m_fTugMeterMarvelousPercentChange );
ini.GetValue( "Options", "TugMeterPerfectPercentChange", m_fTugMeterPerfectPercentChange );
ini.GetValue( "Options", "TugMeterGreatPercentChange", m_fTugMeterGreatPercentChange );
ini.GetValue( "Options", "TugMeterGoodPercentChange", m_fTugMeterGoodPercentChange );
ini.GetValue( "Options", "TugMeterBooPercentChange", m_fTugMeterBooPercentChange );
ini.GetValue( "Options", "TugMeterMissPercentChange", m_fTugMeterMissPercentChange );
ini.GetValue( "Options", "TugMeterHitMinePercentChange", m_fTugMeterHitMinePercentChange );
ini.GetValue( "Options", "TugMeterOKPercentChange", m_fTugMeterOKPercentChange );
ini.GetValue( "Options", "TugMeterNGPercentChange", m_fTugMeterNGPercentChange );
ini.GetValue( "Options", "JudgeWindowSecondsMarvelous", m_fJudgeWindowSecondsMarvelous );
ini.GetValue( "Options", "JudgeWindowSecondsPerfect", m_fJudgeWindowSecondsPerfect );
ini.GetValue( "Options", "JudgeWindowSecondsGreat", m_fJudgeWindowSecondsGreat );
ini.GetValue( "Options", "JudgeWindowSecondsGood", m_fJudgeWindowSecondsGood );
ini.GetValue( "Options", "JudgeWindowSecondsBoo", m_fJudgeWindowSecondsBoo );
ini.GetValue( "Options", "JudgeWindowSecondsOK", m_fJudgeWindowSecondsOK );
ini.GetValue( "Options", "JudgeWindowSecondsMine", m_fJudgeWindowSecondsMine );
ini.GetValue( "Options", "JudgeWindowSecondsAttack", m_fJudgeWindowSecondsAttack );
ini.GetValue( "Options", "LifeDeltaPercentChangeMarvelous", m_fLifeDeltaPercentChangeMarvelous );
ini.GetValue( "Options", "LifeDeltaPercentChangePerfect", m_fLifeDeltaPercentChangePerfect );
ini.GetValue( "Options", "LifeDeltaPercentChangeGreat", m_fLifeDeltaPercentChangeGreat );
ini.GetValue( "Options", "LifeDeltaPercentChangeGood", m_fLifeDeltaPercentChangeGood );
ini.GetValue( "Options", "LifeDeltaPercentChangeBoo", m_fLifeDeltaPercentChangeBoo );
ini.GetValue( "Options", "LifeDeltaPercentChangeMiss", m_fLifeDeltaPercentChangeMiss );
ini.GetValue( "Options", "LifeDeltaPercentChangeHitMine", m_fLifeDeltaPercentChangeHitMine );
ini.GetValue( "Options", "LifeDeltaPercentChangeOK", m_fLifeDeltaPercentChangeOK );
ini.GetValue( "Options", "LifeDeltaPercentChangeNG", m_fLifeDeltaPercentChangeNG );
ini.GetValue( "Options", "TugMeterPercentChangeMarvelous", m_fTugMeterPercentChangeMarvelous );
ini.GetValue( "Options", "TugMeterPercentChangePerfect", m_fTugMeterPercentChangePerfect );
ini.GetValue( "Options", "TugMeterPercentChangeGreat", m_fTugMeterPercentChangeGreat );
ini.GetValue( "Options", "TugMeterPercentChangeGood", m_fTugMeterPercentChangeGood );
ini.GetValue( "Options", "TugMeterPercentChangeBoo", m_fTugMeterPercentChangeBoo );
ini.GetValue( "Options", "TugMeterPercentChangeMiss", m_fTugMeterPercentChangeMiss );
ini.GetValue( "Options", "TugMeterPercentChangeHitMine", m_fTugMeterPercentChangeHitMine );
ini.GetValue( "Options", "TugMeterPercentChangeOK", m_fTugMeterPercentChangeOK );
ini.GetValue( "Options", "TugMeterPercentChangeNG", m_fTugMeterPercentChangeNG );
ini.GetValue( "Options", "RegenComboAfterFail", m_iRegenComboAfterFail );
ini.GetValue( "Options", "RegenComboAfterMiss", m_iRegenComboAfterMiss );
ini.GetValue( "Options", "MaxRegenComboAfterFail", m_iMaxRegenComboAfterFail );
@@ -351,40 +350,42 @@ void PrefsManager::ReadGlobalPrefsFromDisk()
ini.GetValue( "Options", "TwoPlayerRecovery", m_bTwoPlayerRecovery );
ini.GetValue( "Options", "MercifulDrain", m_bMercifulDrain );
ini.GetValue( "Options", "PercentScoreMarvelousWeight", m_iPercentScoreMarvelousWeight );
ini.GetValue( "Options", "PercentScorePerfectWeight", m_iPercentScorePerfectWeight );
ini.GetValue( "Options", "PercentScoreGreatWeight", m_iPercentScoreGreatWeight );
ini.GetValue( "Options", "PercentScoreGoodWeight", m_iPercentScoreGoodWeight );
ini.GetValue( "Options", "PercentScoreBooWeight", m_iPercentScoreBooWeight );
ini.GetValue( "Options", "PercentScoreMissWeight", m_iPercentScoreMissWeight );
ini.GetValue( "Options", "PercentScoreOKWeight", m_iPercentScoreOKWeight );
ini.GetValue( "Options", "PercentScoreNGWeight", m_iPercentScoreNGWeight );
ini.GetValue( "Options", "PercentScoreHitMineWeight", m_iPercentScoreHitMineWeight );
ini.GetValue( "Options", "GradeMarvelousWeight", m_iGradeMarvelousWeight );
ini.GetValue( "Options", "GradePerfectWeight", m_iGradePerfectWeight );
ini.GetValue( "Options", "GradeGreatWeight", m_iGradeGreatWeight );
ini.GetValue( "Options", "GradeGoodWeight", m_iGradeGoodWeight );
ini.GetValue( "Options", "GradeBooWeight", m_iGradeBooWeight );
ini.GetValue( "Options", "GradeMissWeight", m_iGradeMissWeight );
ini.GetValue( "Options", "GradeHitMineWeight", m_iGradeHitMineWeight );
ini.GetValue( "Options", "GradeOKWeight", m_iGradeOKWeight );
ini.GetValue( "Options", "GradeNGWeight", m_iGradeNGWeight );
ini.GetValue( "Options", "PercentScoreWeightMarvelous", m_iPercentScoreWeightMarvelous );
ini.GetValue( "Options", "PercentScoreWeightPerfect", m_iPercentScoreWeightPerfect );
ini.GetValue( "Options", "PercentScoreWeightGreat", m_iPercentScoreWeightGreat );
ini.GetValue( "Options", "PercentScoreWeightGood", m_iPercentScoreWeightGood );
ini.GetValue( "Options", "PercentScoreWeightBoo", m_iPercentScoreWeightBoo );
ini.GetValue( "Options", "PercentScoreWeightMiss", m_iPercentScoreWeightMiss );
ini.GetValue( "Options", "PercentScoreWeightOK", m_iPercentScoreWeightOK );
ini.GetValue( "Options", "PercentScoreWeightNG", m_iPercentScoreWeightNG );
ini.GetValue( "Options", "PercentScoreWeightHitMine", m_iPercentScoreWeightHitMine );
ini.GetValue( "Options", "GradeWeightMarvelous", m_iGradeWeightMarvelous );
ini.GetValue( "Options", "GradeWeightPerfect", m_iGradeWeightPerfect );
ini.GetValue( "Options", "GradeWeightGreat", m_iGradeWeightGreat );
ini.GetValue( "Options", "GradeWeightGood", m_iGradeWeightGood );
ini.GetValue( "Options", "GradeWeightBoo", m_iGradeWeightBoo );
ini.GetValue( "Options", "GradeWeightMiss", m_iGradeWeightMiss );
ini.GetValue( "Options", "GradeWeightHitMine", m_iGradeWeightHitMine );
ini.GetValue( "Options", "GradeWeightOK", m_iGradeWeightOK );
ini.GetValue( "Options", "GradeWeightNG", m_iGradeWeightNG );
for( int g=0; g<NUM_GRADE_TIERS; g++ )
{
Grade grade = (Grade)g;
CString s = GradeToString( grade );
ini.GetValue( "Options", "GradePercentTier"+s, m_fGradePercentTier[g] );
}
ini.GetValue( "Options", "GradeTier02IsAllPerfects", m_bGradeTier02IsAllPerfects );
ini.GetValue( "Options", "SuperMeterMarvelousPercentChange",m_fSuperMeterMarvelousPercentChange );
ini.GetValue( "Options", "SuperMeterPerfectPercentChange", m_fSuperMeterPerfectPercentChange );
ini.GetValue( "Options", "SuperMeterGreatPercentChange", m_fSuperMeterGreatPercentChange );
ini.GetValue( "Options", "SuperMeterGoodPercentChange", m_fSuperMeterGoodPercentChange );
ini.GetValue( "Options", "SuperMeterBooPercentChange", m_fSuperMeterBooPercentChange );
ini.GetValue( "Options", "SuperMeterMissPercentChange", m_fSuperMeterMissPercentChange );
ini.GetValue( "Options", "SuperMeterHitMinePercentChange", m_fSuperMeterHitMinePercentChange );
ini.GetValue( "Options", "SuperMeterOKPercentChange", m_fSuperMeterOKPercentChange );
ini.GetValue( "Options", "SuperMeterNGPercentChange", m_fSuperMeterNGPercentChange );
ini.GetValue( "Options", "SuperMeterPercentChangeMarvelous",m_fSuperMeterPercentChangeMarvelous );
ini.GetValue( "Options", "SuperMeterPercentChangePerfect", m_fSuperMeterPercentChangePerfect );
ini.GetValue( "Options", "SuperMeterPercentChangeGreat", m_fSuperMeterPercentChangeGreat );
ini.GetValue( "Options", "SuperMeterPercentChangeGood", m_fSuperMeterPercentChangeGood );
ini.GetValue( "Options", "SuperMeterPercentChangeBoo", m_fSuperMeterPercentChangeBoo );
ini.GetValue( "Options", "SuperMeterPercentChangeMiss", m_fSuperMeterPercentChangeMiss );
ini.GetValue( "Options", "SuperMeterPercentChangeHitMine", m_fSuperMeterPercentChangeHitMine );
ini.GetValue( "Options", "SuperMeterPercentChangeOK", m_fSuperMeterPercentChangeOK );
ini.GetValue( "Options", "SuperMeterPercentChangeNG", m_fSuperMeterPercentChangeNG );
ini.GetValue( "Options", "MercifulSuperMeter", m_bMercifulSuperMeter );
ini.GetValue( "Options", "DelayedEscape", m_bDelayedEscape );
@@ -524,32 +525,32 @@ void PrefsManager::SaveGlobalPrefsToDisk() const
ini.SetValue( "Options", "AutoPlay", m_bAutoPlay );
ini.SetValue( "Options", "JudgeWindowScale", m_fJudgeWindowScale );
ini.SetValue( "Options", "LifeDifficultyScale", m_fLifeDifficultyScale );
ini.SetValue( "Options", "JudgeWindowMarvelousSeconds", m_fJudgeWindowMarvelousSeconds );
ini.SetValue( "Options", "JudgeWindowPerfectSeconds", m_fJudgeWindowPerfectSeconds );
ini.SetValue( "Options", "JudgeWindowGreatSeconds", m_fJudgeWindowGreatSeconds );
ini.SetValue( "Options", "JudgeWindowGoodSeconds", m_fJudgeWindowGoodSeconds );
ini.SetValue( "Options", "JudgeWindowBooSeconds", m_fJudgeWindowBooSeconds );
ini.SetValue( "Options", "JudgeWindowOKSeconds", m_fJudgeWindowOKSeconds );
ini.SetValue( "Options", "JudgeWindowMineSeconds", m_fJudgeWindowMineSeconds );
ini.SetValue( "Options", "JudgeWindowAttackSeconds", m_fJudgeWindowAttackSeconds );
ini.SetValue( "Options", "LifeDeltaMarvelousPercentChange", m_fLifeDeltaMarvelousPercentChange );
ini.SetValue( "Options", "LifeDeltaPerfectPercentChange", m_fLifeDeltaPerfectPercentChange );
ini.SetValue( "Options", "LifeDeltaGreatPercentChange", m_fLifeDeltaGreatPercentChange );
ini.SetValue( "Options", "LifeDeltaGoodPercentChange", m_fLifeDeltaGoodPercentChange );
ini.SetValue( "Options", "LifeDeltaBooPercentChange", m_fLifeDeltaBooPercentChange );
ini.SetValue( "Options", "LifeDeltaMissPercentChange", m_fLifeDeltaMissPercentChange );
ini.SetValue( "Options", "LifeDeltaHitMinePercentChange", m_fLifeDeltaHitMinePercentChange );
ini.SetValue( "Options", "LifeDeltaOKPercentChange", m_fLifeDeltaOKPercentChange );
ini.SetValue( "Options", "LifeDeltaNGPercentChange", m_fLifeDeltaNGPercentChange );
ini.SetValue( "Options", "TugMeterMarvelousPercentChange", m_fTugMeterMarvelousPercentChange );
ini.SetValue( "Options", "TugMeterPerfectPercentChange", m_fTugMeterPerfectPercentChange );
ini.SetValue( "Options", "TugMeterGreatPercentChange", m_fTugMeterGreatPercentChange );
ini.SetValue( "Options", "TugMeterGoodPercentChange", m_fTugMeterGoodPercentChange );
ini.SetValue( "Options", "TugMeterBooPercentChange", m_fTugMeterBooPercentChange );
ini.SetValue( "Options", "TugMeterMissPercentChange", m_fTugMeterMissPercentChange );
ini.SetValue( "Options", "TugMeterHitMinePercentChange", m_fTugMeterHitMinePercentChange );
ini.SetValue( "Options", "TugMeterOKPercentChange", m_fTugMeterOKPercentChange );
ini.SetValue( "Options", "TugMeterNGPercentChange", m_fTugMeterNGPercentChange );
ini.SetValue( "Options", "JudgeWindowSecondsMarvelous", m_fJudgeWindowSecondsMarvelous );
ini.SetValue( "Options", "JudgeWindowSecondsPerfect", m_fJudgeWindowSecondsPerfect );
ini.SetValue( "Options", "JudgeWindowSecondsGreat", m_fJudgeWindowSecondsGreat );
ini.SetValue( "Options", "JudgeWindowSecondsGood", m_fJudgeWindowSecondsGood );
ini.SetValue( "Options", "JudgeWindowSecondsBoo", m_fJudgeWindowSecondsBoo );
ini.SetValue( "Options", "JudgeWindowSecondsOK", m_fJudgeWindowSecondsOK );
ini.SetValue( "Options", "JudgeWindowSecondsMine", m_fJudgeWindowSecondsMine );
ini.SetValue( "Options", "JudgeWindowSecondsAttack", m_fJudgeWindowSecondsAttack );
ini.SetValue( "Options", "LifeDeltaPercentChangeMarvelous", m_fLifeDeltaPercentChangeMarvelous );
ini.SetValue( "Options", "LifeDeltaPercentChangePerfect", m_fLifeDeltaPercentChangePerfect );
ini.SetValue( "Options", "LifeDeltaPercentChangeGreat", m_fLifeDeltaPercentChangeGreat );
ini.SetValue( "Options", "LifeDeltaPercentChangeGood", m_fLifeDeltaPercentChangeGood );
ini.SetValue( "Options", "LifeDeltaPercentChangeBoo", m_fLifeDeltaPercentChangeBoo );
ini.SetValue( "Options", "LifeDeltaPercentChangeMiss", m_fLifeDeltaPercentChangeMiss );
ini.SetValue( "Options", "LifeDeltaPercentChangeHitMine", m_fLifeDeltaPercentChangeHitMine );
ini.SetValue( "Options", "LifeDeltaPercentChangeOK", m_fLifeDeltaPercentChangeOK );
ini.SetValue( "Options", "LifeDeltaPercentChangeNG", m_fLifeDeltaPercentChangeNG );
ini.SetValue( "Options", "TugMeterPercentChangeMarvelous", m_fTugMeterPercentChangeMarvelous );
ini.SetValue( "Options", "TugMeterPercentChangePerfect", m_fTugMeterPercentChangePerfect );
ini.SetValue( "Options", "TugMeterPercentChangeGreat", m_fTugMeterPercentChangeGreat );
ini.SetValue( "Options", "TugMeterPercentChangeGood", m_fTugMeterPercentChangeGood );
ini.SetValue( "Options", "TugMeterPercentChangeBoo", m_fTugMeterPercentChangeBoo );
ini.SetValue( "Options", "TugMeterPercentChangeMiss", m_fTugMeterPercentChangeMiss );
ini.SetValue( "Options", "TugMeterPercentChangeHitMine", m_fTugMeterPercentChangeHitMine );
ini.SetValue( "Options", "TugMeterPercentChangeOK", m_fTugMeterPercentChangeOK );
ini.SetValue( "Options", "TugMeterPercentChangeNG", m_fTugMeterPercentChangeNG );
ini.SetValue( "Options", "RegenComboAfterFail", m_iRegenComboAfterFail );
ini.SetValue( "Options", "RegenComboAfterMiss", m_iRegenComboAfterMiss );
ini.SetValue( "Options", "MaxRegenComboAfterFail", m_iMaxRegenComboAfterFail );
@@ -557,40 +558,42 @@ void PrefsManager::SaveGlobalPrefsToDisk() const
ini.SetValue( "Options", "TwoPlayerRecovery", m_bTwoPlayerRecovery );
ini.SetValue( "Options", "MercifulDrain", m_bMercifulDrain );
ini.SetValue( "Options", "PercentScoreMarvelousWeight", m_iPercentScoreMarvelousWeight );
ini.SetValue( "Options", "PercentScorePerfectWeight", m_iPercentScorePerfectWeight );
ini.SetValue( "Options", "PercentScoreGreatWeight", m_iPercentScoreGreatWeight );
ini.SetValue( "Options", "PercentScoreGoodWeight", m_iPercentScoreGoodWeight );
ini.SetValue( "Options", "PercentScoreBooWeight", m_iPercentScoreBooWeight );
ini.SetValue( "Options", "PercentScoreMissWeight", m_iPercentScoreMissWeight );
ini.SetValue( "Options", "PercentScoreOKWeight", m_iPercentScoreOKWeight );
ini.SetValue( "Options", "PercentScoreNGWeight", m_iPercentScoreNGWeight );
ini.SetValue( "Options", "PercentScoreHitMineWeight", m_iPercentScoreHitMineWeight );
ini.SetValue( "Options", "GradeMarvelousWeight", m_iGradeMarvelousWeight );
ini.SetValue( "Options", "GradePerfectWeight", m_iGradePerfectWeight );
ini.SetValue( "Options", "GradeGreatWeight", m_iGradeGreatWeight );
ini.SetValue( "Options", "GradeGoodWeight", m_iGradeGoodWeight );
ini.SetValue( "Options", "GradeBooWeight", m_iGradeBooWeight );
ini.SetValue( "Options", "GradeMissWeight", m_iGradeMissWeight );
ini.SetValue( "Options", "GradeHitMineWeight", m_iGradeHitMineWeight );
ini.SetValue( "Options", "GradeOKWeight", m_iGradeOKWeight );
ini.SetValue( "Options", "GradeNGWeight", m_iGradeNGWeight );
ini.SetValue( "Options", "PercentScoreWeightMarvelous", m_iPercentScoreWeightMarvelous );
ini.SetValue( "Options", "PercentScoreWeightPerfect", m_iPercentScoreWeightPerfect );
ini.SetValue( "Options", "PercentScoreWeightGreat", m_iPercentScoreWeightGreat );
ini.SetValue( "Options", "PercentScoreWeightGood", m_iPercentScoreWeightGood );
ini.SetValue( "Options", "PercentScoreWeightBoo", m_iPercentScoreWeightBoo );
ini.SetValue( "Options", "PercentScoreWeightMiss", m_iPercentScoreWeightMiss );
ini.SetValue( "Options", "PercentScoreWeightOK", m_iPercentScoreWeightOK );
ini.SetValue( "Options", "PercentScoreWeightNG", m_iPercentScoreWeightNG );
ini.SetValue( "Options", "PercentScoreWeightHitMine", m_iPercentScoreWeightHitMine );
ini.SetValue( "Options", "GradeWeightMarvelous", m_iGradeWeightMarvelous );
ini.SetValue( "Options", "GradeWeightPerfect", m_iGradeWeightPerfect );
ini.SetValue( "Options", "GradeWeightGreat", m_iGradeWeightGreat );
ini.SetValue( "Options", "GradeWeightGood", m_iGradeWeightGood );
ini.SetValue( "Options", "GradeWeightBoo", m_iGradeWeightBoo );
ini.SetValue( "Options", "GradeWeightMiss", m_iGradeWeightMiss );
ini.SetValue( "Options", "GradeWeightHitMine", m_iGradeWeightHitMine );
ini.SetValue( "Options", "GradeWeightOK", m_iGradeWeightOK );
ini.SetValue( "Options", "GradeWeightNG", m_iGradeWeightNG );
for( int g=0; g<NUM_GRADE_TIERS; g++ )
{
Grade grade = (Grade)g;
CString s = GradeToString( grade );
ini.SetValue( "Options", "GradePercentTier"+s, m_fGradePercentTier[g] );
}
ini.SetValue( "Options", "GradeTier02IsAllPerfects", m_bGradeTier02IsAllPerfects );
ini.SetValue( "Options", "SuperMeterMarvelousPercentChange",m_fSuperMeterMarvelousPercentChange );
ini.SetValue( "Options", "SuperMeterPerfectPercentChange", m_fSuperMeterPerfectPercentChange );
ini.SetValue( "Options", "SuperMeterGreatPercentChange", m_fSuperMeterGreatPercentChange );
ini.SetValue( "Options", "SuperMeterGoodPercentChange", m_fSuperMeterGoodPercentChange );
ini.SetValue( "Options", "SuperMeterBooPercentChange", m_fSuperMeterBooPercentChange );
ini.SetValue( "Options", "SuperMeterMissPercentChange", m_fSuperMeterMissPercentChange );
ini.SetValue( "Options", "SuperMeterHitMinePercentChange", m_fSuperMeterHitMinePercentChange );
ini.SetValue( "Options", "SuperMeterOKPercentChange", m_fSuperMeterOKPercentChange );
ini.SetValue( "Options", "SuperMeterNGPercentChange", m_fSuperMeterNGPercentChange );
ini.SetValue( "Options", "SuperMeterPercentChangeMarvelous",m_fSuperMeterPercentChangeMarvelous );
ini.SetValue( "Options", "SuperMeterPercentChangePerfect", m_fSuperMeterPercentChangePerfect );
ini.SetValue( "Options", "SuperMeterPercentChangeGreat", m_fSuperMeterPercentChangeGreat );
ini.SetValue( "Options", "SuperMeterPercentChangeGood", m_fSuperMeterPercentChangeGood );
ini.SetValue( "Options", "SuperMeterPercentChangeBoo", m_fSuperMeterPercentChangeBoo );
ini.SetValue( "Options", "SuperMeterPercentChangeMiss", m_fSuperMeterPercentChangeMiss );
ini.SetValue( "Options", "SuperMeterPercentChangeHitMine", m_fSuperMeterPercentChangeHitMine );
ini.SetValue( "Options", "SuperMeterPercentChangeOK", m_fSuperMeterPercentChangeOK );
ini.SetValue( "Options", "SuperMeterPercentChangeNG", m_fSuperMeterPercentChangeNG );
ini.SetValue( "Options", "MercifulSuperMeter", m_bMercifulSuperMeter );
ini.SetValue( "Options", "DelayedEscape", m_bDelayedEscape );
+64 -58
View File
@@ -58,74 +58,80 @@ public:
bool m_bEventMode;
float m_fJudgeWindowScale;
float m_fJudgeWindowSecondsMarvelous;
float m_fJudgeWindowSecondsPerfect;
float m_fJudgeWindowSecondsGreat;
float m_fJudgeWindowSecondsGood;
float m_fJudgeWindowSecondsBoo;
float m_fJudgeWindowSecondsOK;
float m_fJudgeWindowSecondsMine;
float m_fJudgeWindowSecondsAttack;
float m_fLifeDifficultyScale;
float m_fJudgeWindowMarvelousSeconds;
float m_fJudgeWindowPerfectSeconds;
float m_fJudgeWindowGreatSeconds;
float m_fJudgeWindowGoodSeconds;
float m_fJudgeWindowBooSeconds;
float m_fJudgeWindowOKSeconds;
float m_fJudgeWindowMineSeconds;
float m_fJudgeWindowAttackSeconds;
float m_fLifeDeltaPercentChangeMarvelous;
float m_fLifeDeltaPercentChangePerfect;
float m_fLifeDeltaPercentChangeGreat;
float m_fLifeDeltaPercentChangeGood;
float m_fLifeDeltaPercentChangeBoo;
float m_fLifeDeltaPercentChangeMiss;
float m_fLifeDeltaPercentChangeHitMine;
float m_fLifeDeltaPercentChangeOK;
float m_fLifeDeltaPercentChangeNG;
float m_fLifeDeltaMarvelousPercentChange;
float m_fLifeDeltaPerfectPercentChange;
float m_fLifeDeltaGreatPercentChange;
float m_fLifeDeltaGoodPercentChange;
float m_fLifeDeltaBooPercentChange;
float m_fLifeDeltaMissPercentChange;
float m_fLifeDeltaHitMinePercentChange;
float m_fLifeDeltaOKPercentChange;
float m_fLifeDeltaNGPercentChange;
// tug meter used in rave
float m_fTugMeterMarvelousPercentChange;
float m_fTugMeterPerfectPercentChange;
float m_fTugMeterGreatPercentChange;
float m_fTugMeterGoodPercentChange;
float m_fTugMeterBooPercentChange;
float m_fTugMeterMissPercentChange;
float m_fTugMeterHitMinePercentChange;
float m_fTugMeterOKPercentChange;
float m_fTugMeterNGPercentChange;
float m_fTugMeterPercentChangeMarvelous;
float m_fTugMeterPercentChangePerfect;
float m_fTugMeterPercentChangeGreat;
float m_fTugMeterPercentChangeGood;
float m_fTugMeterPercentChangeBoo;
float m_fTugMeterPercentChangeMiss;
float m_fTugMeterPercentChangeHitMine;
float m_fTugMeterPercentChangeOK;
float m_fTugMeterPercentChangeNG;
// Whoever added these: Please add a comment saying what they do. -Chris
int m_iRegenComboAfterFail;
int m_iRegenComboAfterMiss;
int m_iMaxRegenComboAfterFail;
int m_iMaxRegenComboAfterMiss;
bool m_bTwoPlayerRecovery;
bool m_bMercifulDrain;
bool m_bMercifulDrain; // negative life deltas are scaled by the players life percentage
int m_iPercentScoreMarvelousWeight;
int m_iPercentScorePerfectWeight;
int m_iPercentScoreGreatWeight;
int m_iPercentScoreGoodWeight;
int m_iPercentScoreBooWeight;
int m_iPercentScoreMissWeight;
int m_iPercentScoreHitMineWeight;
int m_iPercentScoreOKWeight;
int m_iPercentScoreNGWeight;
int m_iGradeMarvelousWeight;
int m_iGradePerfectWeight;
int m_iGradeGreatWeight;
int m_iGradeGoodWeight;
int m_iGradeBooWeight;
int m_iGradeMissWeight;
int m_iGradeHitMineWeight;
int m_iGradeOKWeight;
int m_iGradeNGWeight;
bool m_bGradeTier1IsAllMarvelouses;
bool m_bGradeTier2IsAllPerfects;
float m_fGradePercentTier[NUM_GRADE_TIERS];
// percent score (the number that is shown on the screen and saved to memory card)
int m_iPercentScoreWeightMarvelous;
int m_iPercentScoreWeightPerfect;
int m_iPercentScoreWeightGreat;
int m_iPercentScoreWeightGood;
int m_iPercentScoreWeightBoo;
int m_iPercentScoreWeightMiss;
int m_iPercentScoreWeightHitMine;
int m_iPercentScoreWeightOK;
int m_iPercentScoreWeightNG;
float m_fSuperMeterMarvelousPercentChange;
float m_fSuperMeterPerfectPercentChange;
float m_fSuperMeterGreatPercentChange;
float m_fSuperMeterGoodPercentChange;
float m_fSuperMeterBooPercentChange;
float m_fSuperMeterMissPercentChange;
float m_fSuperMeterHitMinePercentChange;
float m_fSuperMeterOKPercentChange;
float m_fSuperMeterNGPercentChange;
bool m_bMercifulSuperMeter;
// grades are calculated based on a percentage, but might have different weights than the percent score
int m_iGradeWeightMarvelous;
int m_iGradeWeightPerfect;
int m_iGradeWeightGreat;
int m_iGradeWeightGood;
int m_iGradeWeightBoo;
int m_iGradeWeightMiss;
int m_iGradeWeightHitMine;
int m_iGradeWeightOK;
int m_iGradeWeightNG;
float m_fGradePercentTier[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;
float m_fSuperMeterPercentChangeGood;
float m_fSuperMeterPercentChangeBoo;
float m_fSuperMeterPercentChangeMiss;
float m_fSuperMeterPercentChangeHitMine;
float m_fSuperMeterPercentChangeOK;
float m_fSuperMeterPercentChangeNG;
bool m_bMercifulSuperMeter; // negative super deltas are scaled by the players life percentage
bool m_bAutoPlay;
bool m_bDelayedEscape;
+9 -9
View File
@@ -459,13 +459,13 @@ int ScoreKeeperMAX2::TapNoteScoreToDancePoints( TapNoteScore tns )
int TapScoreValues[NUM_TAP_NOTE_SCORES] =
{
0,
PREFSMAN->m_iPercentScoreHitMineWeight,
PREFSMAN->m_iPercentScoreMissWeight,
PREFSMAN->m_iPercentScoreBooWeight,
PREFSMAN->m_iPercentScoreGoodWeight,
PREFSMAN->m_iPercentScoreGreatWeight,
PREFSMAN->m_iPercentScorePerfectWeight,
PREFSMAN->m_iPercentScoreMarvelousWeight,
PREFSMAN->m_iPercentScoreWeightHitMine,
PREFSMAN->m_iPercentScoreWeightMiss,
PREFSMAN->m_iPercentScoreWeightBoo,
PREFSMAN->m_iPercentScoreWeightGood,
PREFSMAN->m_iPercentScoreWeightGreat,
PREFSMAN->m_iPercentScoreWeightPerfect,
PREFSMAN->m_iPercentScoreWeightMarvelous,
};
return TapScoreValues[tns];
}
@@ -475,8 +475,8 @@ int ScoreKeeperMAX2::HoldNoteScoreToDancePoints( HoldNoteScore hns )
int HoldScoreValues[NUM_TAP_NOTE_SCORES] =
{
0,
PREFSMAN->m_iPercentScoreNGWeight,
PREFSMAN->m_iPercentScoreOKWeight,
PREFSMAN->m_iPercentScoreWeightNG,
PREFSMAN->m_iPercentScoreWeightOK,
};
return HoldScoreValues[hns];
}
+8 -8
View File
@@ -39,7 +39,7 @@ void ScoreKeeperRave::HandleTapScore( TapNoteScore score )
float fPercentToMove = 0;
switch( score )
{
case TNS_HIT_MINE: fPercentToMove = PREFSMAN->m_fSuperMeterHitMinePercentChange; break;
case TNS_HIT_MINE: fPercentToMove = PREFSMAN->m_fSuperMeterPercentChangeHitMine; break;
}
AddSuperMeterDelta( fPercentToMove );
@@ -52,12 +52,12 @@ void ScoreKeeperRave::HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTa
float fPercentToMove;
switch( scoreOfLastTap )
{
case TNS_MARVELOUS: fPercentToMove = PREFSMAN->m_fSuperMeterMarvelousPercentChange; break;
case TNS_PERFECT: fPercentToMove = PREFSMAN->m_fSuperMeterPerfectPercentChange; break;
case TNS_GREAT: fPercentToMove = PREFSMAN->m_fSuperMeterGreatPercentChange; break;
case TNS_GOOD: fPercentToMove = PREFSMAN->m_fSuperMeterGoodPercentChange; break;
case TNS_BOO: fPercentToMove = PREFSMAN->m_fSuperMeterBooPercentChange; break;
case TNS_MISS: fPercentToMove = PREFSMAN->m_fSuperMeterMissPercentChange; break;
case TNS_MARVELOUS: fPercentToMove = PREFSMAN->m_fSuperMeterPercentChangeMarvelous; break;
case TNS_PERFECT: fPercentToMove = PREFSMAN->m_fSuperMeterPercentChangePerfect; break;
case TNS_GREAT: fPercentToMove = PREFSMAN->m_fSuperMeterPercentChangeGreat; break;
case TNS_GOOD: fPercentToMove = PREFSMAN->m_fSuperMeterPercentChangeGood; break;
case TNS_BOO: fPercentToMove = PREFSMAN->m_fSuperMeterPercentChangeBoo; break;
case TNS_MISS: fPercentToMove = PREFSMAN->m_fSuperMeterPercentChangeMiss; break;
default: ASSERT(0); fPercentToMove = +0.00f; break;
}
AddSuperMeterDelta( fPercentToMove );
@@ -68,7 +68,7 @@ void ScoreKeeperRave::HandleHoldScore( HoldNoteScore holdScore, TapNoteScore tap
float fPercentToMove = 0;
switch( tapScore )
{
case TNS_HIT_MINE: fPercentToMove = PREFSMAN->m_fSuperMeterHitMinePercentChange; break;
case TNS_HIT_MINE: fPercentToMove = PREFSMAN->m_fSuperMeterPercentChangeHitMine; break;
}
AddSuperMeterDelta( fPercentToMove );
}
+5 -5
View File
@@ -201,10 +201,10 @@ ScreenEvaluation::ScreenEvaluation( CString sClassName ) : Screen(sClassName)
}
}
Grade max_grade = GRADE_NO_DATA;
Grade best_grade = GRADE_NO_DATA;
for( p=0; p<NUM_PLAYERS; p++ )
{
max_grade = max( max_grade, grade[p] );
best_grade = min( best_grade, grade[p] );
// if its extra stage, update # passed stages
if (PREFSMAN->m_bUseUnlockSystem &&
@@ -822,20 +822,20 @@ ScreenEvaluation::ScreenEvaluation( CString sClassName ) : Screen(sClassName)
}
break;
default:
SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation "+GradeToString(max_grade)) );
SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation "+GradeToString(best_grade)) );
break;
}
break;
case course:
case summary:
SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation final "+GradeToString(max_grade)) );
SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation final "+GradeToOldString(best_grade)) );
break;
default:
ASSERT(0);
}
}
switch( max_grade )
switch( best_grade )
{
case GRADE_TIER_1:
case GRADE_TIER_2:
+22 -41
View File
@@ -149,19 +149,19 @@ Grade StageStats::GetGrade( PlayerNumber pn ) const
int TapScoreValues[NUM_TAP_NOTE_SCORES] =
{
0,
PREFSMAN->m_iGradeHitMineWeight,
PREFSMAN->m_iGradeMissWeight,
PREFSMAN->m_iGradeBooWeight,
PREFSMAN->m_iGradeGoodWeight,
PREFSMAN->m_iGradeGreatWeight,
PREFSMAN->m_iGradePerfectWeight,
PREFSMAN->m_iGradeMarvelousWeight,
PREFSMAN->m_iGradeWeightHitMine,
PREFSMAN->m_iGradeWeightMiss,
PREFSMAN->m_iGradeWeightBoo,
PREFSMAN->m_iGradeWeightGood,
PREFSMAN->m_iGradeWeightGreat,
PREFSMAN->m_iGradeWeightPerfect,
PREFSMAN->m_iGradeWeightMarvelous,
};
int HoldScoreValues[NUM_HOLD_NOTE_SCORES] =
{
0,
PREFSMAN->m_iGradeNGWeight,
PREFSMAN->m_iGradeOKWeight,
PREFSMAN->m_iGradeWeightNG,
PREFSMAN->m_iGradeWeightOK,
};
float Possible = 0, Actual = 0;
@@ -178,48 +178,29 @@ Grade StageStats::GetGrade( PlayerNumber pn ) const
Possible += iHoldNoteScores[pn][i] * HoldScoreValues[HNS_OK];
}
float fPercentDancePoints = Actual / Possible;
fPercentDancePoints = max( 0.f, fPercentDancePoints );
LOG->Trace( "GetGrade: Actual: %f, Possible: %f, Percent: %f", Actual, Possible, fPercentDancePoints );
float fPercent = Actual / Possible;
LOG->Trace( "GetGrade: Actual: %f, Possible: %f, Percent: %f", Actual, Possible, fPercent );
/* check for "AAAA". Check DP == 100%: if we're using eg. "LITTLE", we might have all
* marvelouses but still not qualify for a AAAA. */
if( PREFSMAN->m_bGradeTier1IsAllMarvelouses &&
fPercentDancePoints > .9999 &&
iTapNoteScores[pn][TNS_MARVELOUS] > 0 &&
iTapNoteScores[pn][TNS_PERFECT] == 0 &&
iTapNoteScores[pn][TNS_GREAT] == 0 &&
iTapNoteScores[pn][TNS_GOOD] == 0 &&
iTapNoteScores[pn][TNS_BOO] == 0 &&
iTapNoteScores[pn][TNS_MISS] == 0 &&
iHoldNoteScores[pn][HNS_NG] == 0 )
return GRADE_TIER_1;
// calculate grade
if( PREFSMAN->m_bGradeTier2IsAllPerfects &&
fPercentDancePoints > .9999 &&
#define ROUNDING_ERROR 0.00001f
Grade grade = (Grade)(NUM_GRADE_TIERS-1); // lowest non-failing grade
for( int g=0; g<NUM_GRADES; g++ )
if( fPercent >= PREFSMAN->m_fGradePercentTier[g]-ROUNDING_ERROR )
grade = (Grade)g;
if( PREFSMAN->m_bGradeTier02IsAllPerfects &&
iTapNoteScores[pn][TNS_PERFECT] > 0 &&
iTapNoteScores[pn][TNS_GREAT] == 0 &&
iTapNoteScores[pn][TNS_GOOD] == 0 &&
iTapNoteScores[pn][TNS_BOO] == 0 &&
iTapNoteScores[pn][TNS_MISS] == 0 &&
iTapNoteScores[pn][TNS_HIT_MINE] == 0 &&
iHoldNoteScores[pn][HNS_NG] == 0 )
return GRADE_TIER_2;
// Start checking at TIER_3 if m_bGradeTier2IsAllPerfects is true.
// Start checking at TIER_2 if m_bGradeTier1IsAllMarvelouses is true.
int g;
if( PREFSMAN->m_bGradeTier2IsAllPerfects )
g = 2;
else if( PREFSMAN->m_bGradeTier1IsAllMarvelouses )
g = 1;
else
g = 0;
for( ; g<NUM_GRADE_TIERS; g++ )
if( fPercentDancePoints >= PREFSMAN->m_fGradePercentTier[g] )
return (Grade)(GRADE_TIER_1+g);
return (Grade)(GRADE_TIER_1+NUM_GRADE_TIERS-1);
return grade;
}
bool StageStats::OnePassed() const