options name cleanup, fixes
This commit is contained in:
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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 );
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user