diff --git a/stepmania/src/PrefsManager.cpp b/stepmania/src/PrefsManager.cpp index 564e0e1b97..ea992c8809 100644 --- a/stepmania/src/PrefsManager.cpp +++ b/stepmania/src/PrefsManager.cpp @@ -135,60 +135,6 @@ bool g_bAutoRestart = false; # define TRUE_IF_DEBUG false #endif -void PercentScoreWeightInit( size_t /*ScoreEvent*/ i, RString &sNameOut, int &defaultValueOut ) -{ - sNameOut = "PercentScoreWeight" + ScoreEventToString( (ScoreEvent)i ); - switch( i ) - { - default: ASSERT(0); - case SE_W1: defaultValueOut = 3; break; - case SE_W2: defaultValueOut = 2; break; - case SE_W3: defaultValueOut = 1; break; - case SE_W4: defaultValueOut = 0; break; - case SE_W5: defaultValueOut = 0; break; - case SE_Miss: defaultValueOut = 0; break; - case SE_HitMine: defaultValueOut = -2; break; - case SE_Held: defaultValueOut = 3; break; - case SE_LetGo: defaultValueOut = 0; break; - } -} - -void GradeWeightInit( size_t /*ScoreEvent*/ i, RString &sNameOut, int &defaultValueOut ) -{ - sNameOut = "GradeWeight" + ScoreEventToString( (ScoreEvent)i ); - switch( i ) - { - default: ASSERT(0); - case SE_W1: defaultValueOut = 2; break; - case SE_W2: defaultValueOut = 2; break; - case SE_W3: defaultValueOut = 1; break; - case SE_W4: defaultValueOut = 0; break; - case SE_W5: defaultValueOut = -4; break; - case SE_Miss: defaultValueOut = -8; break; - case SE_HitMine: defaultValueOut = -8; break; - case SE_Held: defaultValueOut = 6; break; - case SE_LetGo: defaultValueOut = 0; break; - } -} - -void SuperMeterPercentChangeInit( size_t /*ScoreEvent*/ i, RString &sNameOut, float &defaultValueOut ) -{ - sNameOut = "SuperMeterPercentChange" + ScoreEventToString( (ScoreEvent)i ); - switch( i ) - { - default: ASSERT(0); - case SE_W1: defaultValueOut = +0.05f; break; - case SE_W2: defaultValueOut = +0.04f; break; - case SE_W3: defaultValueOut = +0.02f; break; - case SE_W4: defaultValueOut = +0.00f; break; - case SE_W5: defaultValueOut = -0.00f; break; - case SE_Miss: defaultValueOut = -0.20f; break; - case SE_HitMine: defaultValueOut = -0.40f; break; - case SE_Held: defaultValueOut = +0.04f; break; - case SE_LetGo: defaultValueOut = -0.20f; break; - } -} - void ValidateDisplayAspectRatio( float &val ) { if( val < 0 ) @@ -247,12 +193,6 @@ PrefsManager::PrefsManager() : m_bFailOffInBeginner ( "FailOffInBeginner", false ), m_bFailOffForFirstStageEasy ( "FailOffForFirstStageEasy", false ), m_bMercifulBeginner ( "MercifulBeginner", false ), - - m_iPercentScoreWeight ( PercentScoreWeightInit, NUM_ScoreEvent ), - - m_iGradeWeight ( GradeWeightInit, NUM_ScoreEvent ), - - m_fSuperMeterPercentChange ( SuperMeterPercentChangeInit, NUM_ScoreEvent ), m_bMercifulSuperMeter ( "MercifulSuperMeter", true ), m_AutoPlay ( "AutoPlay", PC_HUMAN ), diff --git a/stepmania/src/PrefsManager.h b/stepmania/src/PrefsManager.h index 9513eee3dc..0b4b03abef 100644 --- a/stepmania/src/PrefsManager.h +++ b/stepmania/src/PrefsManager.h @@ -139,15 +139,6 @@ public: Preference m_bFailOffInBeginner; Preference m_bFailOffForFirstStageEasy; Preference m_bMercifulBeginner; // don't subtract from percent score or grade DP, larger W5 window - - // percent score (the number that is shown on the screen and saved to memory card) - Preference1D m_iPercentScoreWeight; - - // grades are calculated based on a percentage, but might have different weights than the percent score - Preference1D m_iGradeWeight; - - // super meter used in rave - Preference1D m_fSuperMeterPercentChange; Preference m_bMercifulSuperMeter; // negative super deltas are scaled by the players life percentage Preference m_AutoPlay; diff --git a/stepmania/src/ScoreKeeperNormal.cpp b/stepmania/src/ScoreKeeperNormal.cpp index 80043e7769..6a4063f18f 100644 --- a/stepmania/src/ScoreKeeperNormal.cpp +++ b/stepmania/src/ScoreKeeperNormal.cpp @@ -18,6 +18,46 @@ #include "song.h" #include "NoteDataWithScoring.h" + +void PercentScoreWeightInit( size_t /*ScoreEvent*/ i, RString &sNameOut, int &defaultValueOut ) +{ + sNameOut = "PercentScoreWeight" + ScoreEventToString( (ScoreEvent)i ); + switch( i ) + { + default: ASSERT(0); + case SE_W1: defaultValueOut = 3; break; + case SE_W2: defaultValueOut = 2; break; + case SE_W3: defaultValueOut = 1; break; + case SE_W4: defaultValueOut = 0; break; + case SE_W5: defaultValueOut = 0; break; + case SE_Miss: defaultValueOut = 0; break; + case SE_HitMine: defaultValueOut = -2; break; + case SE_Held: defaultValueOut = 3; break; + case SE_LetGo: defaultValueOut = 0; break; + } +} + +void GradeWeightInit( size_t /*ScoreEvent*/ i, RString &sNameOut, int &defaultValueOut ) +{ + sNameOut = "GradeWeight" + ScoreEventToString( (ScoreEvent)i ); + switch( i ) + { + default: ASSERT(0); + case SE_W1: defaultValueOut = 2; break; + case SE_W2: defaultValueOut = 2; break; + case SE_W3: defaultValueOut = 1; break; + case SE_W4: defaultValueOut = 0; break; + case SE_W5: defaultValueOut = -4; break; + case SE_Miss: defaultValueOut = -8; break; + case SE_HitMine: defaultValueOut = -8; break; + case SE_Held: defaultValueOut = 6; break; + case SE_LetGo: defaultValueOut = 0; break; + } +} + +static Preference1D g_iPercentScoreWeight( PercentScoreWeightInit, NUM_ScoreEvent ); +static Preference1D g_iGradeWeight( GradeWeightInit, NUM_ScoreEvent ); + ScoreKeeperNormal::ScoreKeeperNormal( PlayerState *pPlayerState, PlayerStageStats *pPlayerStageStats ): ScoreKeeper(pPlayerState, pPlayerStageStats) { @@ -569,13 +609,13 @@ int ScoreKeeperNormal::TapNoteScoreToDancePoints( TapNoteScore tns, bool bBeginn { DEFAULT_FAIL( tns ); case TNS_None: iWeight = 0; break; - case TNS_HitMine: iWeight = PREFSMAN->m_iPercentScoreWeight[SE_HitMine]; break; - case TNS_Miss: iWeight = PREFSMAN->m_iPercentScoreWeight[SE_Miss]; break; - case TNS_W5: iWeight = PREFSMAN->m_iPercentScoreWeight[SE_W5]; break; - case TNS_W4: iWeight = PREFSMAN->m_iPercentScoreWeight[SE_W4]; break; - case TNS_W3: iWeight = PREFSMAN->m_iPercentScoreWeight[SE_W3]; break; - case TNS_W2: iWeight = PREFSMAN->m_iPercentScoreWeight[SE_W2]; break; - case TNS_W1: iWeight = PREFSMAN->m_iPercentScoreWeight[SE_W1]; break; + case TNS_HitMine: iWeight = g_iPercentScoreWeight[SE_HitMine]; break; + case TNS_Miss: iWeight = g_iPercentScoreWeight[SE_Miss]; break; + case TNS_W5: iWeight = g_iPercentScoreWeight[SE_W5]; break; + case TNS_W4: iWeight = g_iPercentScoreWeight[SE_W4]; break; + case TNS_W3: iWeight = g_iPercentScoreWeight[SE_W3]; break; + case TNS_W2: iWeight = g_iPercentScoreWeight[SE_W2]; break; + case TNS_W1: iWeight = g_iPercentScoreWeight[SE_W1]; break; } if( bBeginner && PREFSMAN->m_bMercifulBeginner ) iWeight = max( 0, iWeight ); @@ -589,8 +629,8 @@ int ScoreKeeperNormal::HoldNoteScoreToDancePoints( HoldNoteScore hns, bool bBegi { DEFAULT_FAIL( hns ); case HNS_None: iWeight = 0; break; - case HNS_LetGo: iWeight = PREFSMAN->m_iPercentScoreWeight[SE_LetGo]; break; - case HNS_Held: iWeight = PREFSMAN->m_iPercentScoreWeight[SE_Held]; break; + case HNS_LetGo: iWeight = g_iPercentScoreWeight[SE_LetGo]; break; + case HNS_Held: iWeight = g_iPercentScoreWeight[SE_Held]; break; } if( bBeginner && PREFSMAN->m_bMercifulBeginner ) iWeight = max( 0, iWeight ); @@ -610,13 +650,13 @@ int ScoreKeeperNormal::TapNoteScoreToGradePoints( TapNoteScore tns, bool bBeginn DEFAULT_FAIL( tns ); case TNS_None: iWeight = 0; break; case TNS_AvoidMine: iWeight = 0; break; - case TNS_HitMine: iWeight = PREFSMAN->m_iGradeWeight[SE_HitMine]; break; - case TNS_Miss: iWeight = PREFSMAN->m_iGradeWeight[SE_Miss]; break; - case TNS_W5: iWeight = PREFSMAN->m_iGradeWeight[SE_W5]; break; - case TNS_W4: iWeight = PREFSMAN->m_iGradeWeight[SE_W4]; break; - case TNS_W3: iWeight = PREFSMAN->m_iGradeWeight[SE_W3]; break; - case TNS_W2: iWeight = PREFSMAN->m_iGradeWeight[SE_W2]; break; - case TNS_W1: iWeight = PREFSMAN->m_iGradeWeight[SE_W1]; break; + case TNS_HitMine: iWeight = g_iGradeWeight[SE_HitMine]; break; + case TNS_Miss: iWeight = g_iGradeWeight[SE_Miss]; break; + case TNS_W5: iWeight = g_iGradeWeight[SE_W5]; break; + case TNS_W4: iWeight = g_iGradeWeight[SE_W4]; break; + case TNS_W3: iWeight = g_iGradeWeight[SE_W3]; break; + case TNS_W2: iWeight = g_iGradeWeight[SE_W2]; break; + case TNS_W1: iWeight = g_iGradeWeight[SE_W1]; break; } if( bBeginner && PREFSMAN->m_bMercifulBeginner ) iWeight = max( 0, iWeight ); @@ -630,8 +670,8 @@ int ScoreKeeperNormal::HoldNoteScoreToGradePoints( HoldNoteScore hns, bool bBegi { DEFAULT_FAIL( hns ); case HNS_None: iWeight = 0; break; - case HNS_LetGo: iWeight = PREFSMAN->m_iGradeWeight[SE_LetGo]; break; - case HNS_Held: iWeight = PREFSMAN->m_iGradeWeight[SE_Held]; break; + case HNS_LetGo: iWeight = g_iGradeWeight[SE_LetGo]; break; + case HNS_Held: iWeight = g_iGradeWeight[SE_Held]; break; } if( bBeginner && PREFSMAN->m_bMercifulBeginner ) iWeight = max( 0, iWeight ); diff --git a/stepmania/src/ScoreKeeperRave.cpp b/stepmania/src/ScoreKeeperRave.cpp index 2383b788cd..04ff83db80 100644 --- a/stepmania/src/ScoreKeeperRave.cpp +++ b/stepmania/src/ScoreKeeperRave.cpp @@ -13,6 +13,27 @@ ThemeMetric ATTACK_DURATION_SECONDS ("ScoreKeeperRave","AttackDurationSeconds"); + +static void SuperMeterPercentChangeInit( size_t /*ScoreEvent*/ i, RString &sNameOut, float &defaultValueOut ) +{ + sNameOut = "SuperMeterPercentChange" + ScoreEventToString( (ScoreEvent)i ); + switch( i ) + { + default: ASSERT(0); + case SE_W1: defaultValueOut = +0.05f; break; + case SE_W2: defaultValueOut = +0.04f; break; + case SE_W3: defaultValueOut = +0.02f; break; + case SE_W4: defaultValueOut = +0.00f; break; + case SE_W5: defaultValueOut = -0.00f; break; + case SE_Miss: defaultValueOut = -0.20f; break; + case SE_HitMine: defaultValueOut = -0.40f; break; + case SE_Held: defaultValueOut = +0.04f; break; + case SE_LetGo: defaultValueOut = -0.20f; break; + } +} + +static Preference1D g_fSuperMeterPercentChange( SuperMeterPercentChangeInit, NUM_ScoreEvent ); + ScoreKeeperRave::ScoreKeeperRave( PlayerState *pPlayerState, PlayerStageStats *pPlayerStageStats ) : ScoreKeeper(pPlayerState, pPlayerStageStats) { @@ -24,7 +45,7 @@ void ScoreKeeperRave::HandleTapScore( const TapNote &tn ) float fPercentToMove = 0; if( score == TNS_HitMine ) - fPercentToMove = PREFSMAN->m_fSuperMeterPercentChange[SE_HitMine]; + fPercentToMove = g_fSuperMeterPercentChange[SE_HitMine]; AddSuperMeterDelta( fPercentToMove ); } @@ -43,12 +64,12 @@ void ScoreKeeperRave::HandleTapRowScore( const NoteData &nd, int iRow ) switch( scoreOfLastTap ) { DEFAULT_FAIL( scoreOfLastTap ); - case TNS_W1: fPercentToMove = PREFSMAN->m_fSuperMeterPercentChange[SE_W1]; break; - case TNS_W2: fPercentToMove = PREFSMAN->m_fSuperMeterPercentChange[SE_W2]; break; - case TNS_W3: fPercentToMove = PREFSMAN->m_fSuperMeterPercentChange[SE_W3]; break; - case TNS_W4: fPercentToMove = PREFSMAN->m_fSuperMeterPercentChange[SE_W4]; break; - case TNS_W5: fPercentToMove = PREFSMAN->m_fSuperMeterPercentChange[SE_W5]; break; - case TNS_Miss: fPercentToMove = PREFSMAN->m_fSuperMeterPercentChange[SE_Miss]; break; + case TNS_W1: fPercentToMove = g_fSuperMeterPercentChange[SE_W1]; break; + case TNS_W2: fPercentToMove = g_fSuperMeterPercentChange[SE_W2]; break; + case TNS_W3: fPercentToMove = g_fSuperMeterPercentChange[SE_W3]; break; + case TNS_W4: fPercentToMove = g_fSuperMeterPercentChange[SE_W4]; break; + case TNS_W5: fPercentToMove = g_fSuperMeterPercentChange[SE_W5]; break; + case TNS_Miss: fPercentToMove = g_fSuperMeterPercentChange[SE_Miss]; break; } AddSuperMeterDelta( fPercentToMove ); } @@ -59,7 +80,7 @@ void ScoreKeeperRave::HandleHoldScore( const TapNote &tn ) float fPercentToMove = 0; switch( tapScore ) { - case TNS_HitMine: fPercentToMove = PREFSMAN->m_fSuperMeterPercentChange[SE_HitMine]; break; + case TNS_HitMine: fPercentToMove = g_fSuperMeterPercentChange[SE_HitMine]; break; } AddSuperMeterDelta( fPercentToMove ); }