From cc0914e9b2a258444246a03d521847830ff00c14 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Tue, 21 Nov 2006 02:49:59 +0000 Subject: [PATCH] dep fixes: move Player's timing prefs into Player; add and use accessor; fix using SE_ instead of TW_; move code back into GCAT (was in PrefsMan due to dependency for SMPackage) --- stepmania/src/GameConstantsAndTypes.cpp | 12 ++++++ stepmania/src/NetworkSyncServer.cpp | 12 +++--- stepmania/src/Player.cpp | 52 ++++++++++++++++++------- stepmania/src/Player.h | 1 + stepmania/src/PrefsManager.cpp | 36 ----------------- stepmania/src/PrefsManager.h | 5 --- 6 files changed, 57 insertions(+), 61 deletions(-) diff --git a/stepmania/src/GameConstantsAndTypes.cpp b/stepmania/src/GameConstantsAndTypes.cpp index c49468c9f1..00a3812d1b 100644 --- a/stepmania/src/GameConstantsAndTypes.cpp +++ b/stepmania/src/GameConstantsAndTypes.cpp @@ -199,6 +199,18 @@ HoldNoteScore StringToHoldNoteScore( const RString &s ) } XToLocalizedString( HoldNoteScore ); +static const char *TimingWindowNames[] = { + "W1", + "W2", + "W3", + "W4", + "W5", + "Mine", + "Attack", + "Hold", + "Roll", +}; +XToString( TimingWindow ); static const char *MemoryCardStateNames[] = { "ready", diff --git a/stepmania/src/NetworkSyncServer.cpp b/stepmania/src/NetworkSyncServer.cpp index 4ca5061346..f9096cf225 100644 --- a/stepmania/src/NetworkSyncServer.cpp +++ b/stepmania/src/NetworkSyncServer.cpp @@ -1,7 +1,9 @@ #include "global.h" +#include "GamePreferences.h" #include "NetworkSyncServer.h" #include "RageLog.h" #include "PrefsManager.h" +#include "Player.h" #include #if defined(WITHOUT_NETWORKING) @@ -980,19 +982,19 @@ void StepManiaLanServer::CheckLowerJudge(const unsigned int clientNum) if (Client[clientNum]->IsPlaying(x)) { if ((Client[clientNum]->Player[x].currstep == 2)&& - (PREFSMAN->m_fTimingWindowSeconds[SE_W5] < Client[clientNum]->Player[x].offset)) + (Player::GetWindowSeconds(TW_W5) < Client[clientNum]->Player[x].offset)) Client[clientNum]->lowerJudge = true; if ((Client[clientNum]->Player[x].currstep == 3)&& - (PREFSMAN->m_fTimingWindowSeconds[SE_W4] < Client[clientNum]->Player[x].offset)) + (Player::GetWindowSeconds(TW_W4) < Client[clientNum]->Player[x].offset)) Client[clientNum]->lowerJudge = true; if ((Client[clientNum]->Player[x].currstep == 4)&& - (PREFSMAN->m_fTimingWindowSeconds[SE_W3] < Client[clientNum]->Player[x].offset)) + (Player::GetWindowSeconds(TW_W3) < Client[clientNum]->Player[x].offset)) Client[clientNum]->lowerJudge = true; if ((Client[clientNum]->Player[x].currstep == 5)&& - (PREFSMAN->m_fTimingWindowSeconds[SE_W2] < Client[clientNum]->Player[x].offset)) + (Player::GetWindowSeconds(TW_W2) < Client[clientNum]->Player[x].offset)) Client[clientNum]->lowerJudge = true; if ((Client[clientNum]->Player[x].currstep == 6)&& - (PREFSMAN->m_fTimingWindowSeconds[SE_W1] < Client[clientNum]->Player[x].offset)) + (Player::GetWindowSeconds(TW_W1) < Client[clientNum]->Player[x].offset)) Client[clientNum]->lowerJudge = true; } } diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp index c5cf719463..3e3eb44e55 100644 --- a/stepmania/src/Player.cpp +++ b/stepmania/src/Player.cpp @@ -49,11 +49,33 @@ RString ATTACK_DISPLAY_X_NAME( size_t p, size_t both_sides ) { return "AttackDis static const float StepSearchDistance = 1.0f; static const float JUMP_WINDOW_SECONDS = 0.25f; -static float ADJUSTED_WINDOW_SECONDS( TimingWindow tw ) +void TimingWindowSecondsInit( size_t /*TimingWindow*/ i, RString &sNameOut, float &defaultValueOut ) { - float fSecs = PREFSMAN->m_fTimingWindowSeconds[tw]; - fSecs *= PREFSMAN->m_fTimingWindowScale; - fSecs += PREFSMAN->m_fTimingWindowAdd; + sNameOut = "TimingWindowSeconds" + TimingWindowToString( (TimingWindow)i ); + switch( i ) + { + default: ASSERT(0); + case TW_W1: defaultValueOut = 0.0225f; break; + case TW_W2: defaultValueOut = 0.045f; break; + case TW_W3: defaultValueOut = 0.090f; break; + case TW_W4: defaultValueOut = 0.135f; break; + case TW_W5: defaultValueOut = 0.180f; break; + case TW_Mine: defaultValueOut = 0.090f; break; // same as great + case TW_Hold: defaultValueOut = 0.250f; break; // allow enough time to take foot off and put back on + case TW_Roll: defaultValueOut = 0.350f; break; + case TW_Attack: defaultValueOut = 0.135f; break; + } +} + +static Preference m_fTimingWindowScale ( "TimingWindowScale", 1.0f ); +static Preference m_fTimingWindowAdd ( "TimingWindowAdd", 0 ); +static Preference1D m_fTimingWindowSeconds( TimingWindowSecondsInit, NUM_TimingWindow ); + +float Player::GetWindowSeconds( TimingWindow tw ) +{ + float fSecs = m_fTimingWindowSeconds[tw]; + fSecs *= m_fTimingWindowScale; + fSecs += m_fTimingWindowAdd; return fSecs; } @@ -679,7 +701,7 @@ void Player::Update( float fDeltaTime ) else { // Decrease life - fLife -= fDeltaTime/ADJUSTED_WINDOW_SECONDS(TW_Hold); + fLife -= fDeltaTime/GetWindowSeconds(TW_Hold); fLife = max( fLife, 0 ); // clamp } break; @@ -690,7 +712,7 @@ void Player::Update( float fDeltaTime ) // give positive life in Step(), not here. // Decrease life - fLife -= fDeltaTime/ADJUSTED_WINDOW_SECONDS(TW_Roll); + fLife -= fDeltaTime/GetWindowSeconds(TW_Roll); fLife = max( fLife, 0 ); // clamp break; default: @@ -1211,23 +1233,23 @@ void Player::StepOrStrum( int col, int row, const RageTimer &tm, bool bHeld, boo { case TapNote::mine: // Stepped too close to mine? - if( !bRelease && fSecondsFromExact <= ADJUSTED_WINDOW_SECONDS(TW_Mine) ) + if( !bRelease && fSecondsFromExact <= GetWindowSeconds(TW_Mine) ) score = TNS_HitMine; break; case TapNote::attack: - if( !bRelease && fSecondsFromExact <= ADJUSTED_WINDOW_SECONDS(TW_Attack) && !pTN->result.bHidden ) + if( !bRelease && fSecondsFromExact <= GetWindowSeconds(TW_Attack) && !pTN->result.bHidden ) score = TNS_W2; /* sentinel */ break; default: if( (pTN->type == TapNote::lift) == bRelease ) { - if( fSecondsFromExact <= ADJUSTED_WINDOW_SECONDS(TW_W1) ) score = TNS_W1; - else if( fSecondsFromExact <= ADJUSTED_WINDOW_SECONDS(TW_W2) ) score = TNS_W2; - else if( fSecondsFromExact <= ADJUSTED_WINDOW_SECONDS(TW_W3) ) score = TNS_W3; - else if( fSecondsFromExact <= ADJUSTED_WINDOW_SECONDS(TW_W4) ) score = TNS_W4; - else if( fSecondsFromExact <= ADJUSTED_WINDOW_SECONDS(TW_W5) ) score = TNS_W5; + if( fSecondsFromExact <= GetWindowSeconds(TW_W1) ) score = TNS_W1; + else if( fSecondsFromExact <= GetWindowSeconds(TW_W2) ) score = TNS_W2; + else if( fSecondsFromExact <= GetWindowSeconds(TW_W3) ) score = TNS_W3; + else if( fSecondsFromExact <= GetWindowSeconds(TW_W4) ) score = TNS_W4; + else if( fSecondsFromExact <= GetWindowSeconds(TW_W5) ) score = TNS_W5; } break; } @@ -1242,7 +1264,7 @@ void Player::StepOrStrum( int col, int row, const RageTimer &tm, bool bHeld, boo // GetTapNoteScore always returns TNS_W1 in autoplay. // If the step is far away, don't judge it. if( m_pPlayerState->m_PlayerController == PC_AUTOPLAY && - fSecondsFromExact > ADJUSTED_WINDOW_SECONDS(TW_W5) ) + fSecondsFromExact > GetWindowSeconds(TW_W5) ) { score = TNS_None; break; @@ -1894,7 +1916,7 @@ void Player::HandleHoldScore( const TapNote &tn ) float Player::GetMaxStepDistanceSeconds() { - return GAMESTATE->m_SongOptions.GetCurrent().m_fMusicRate * ADJUSTED_WINDOW_SECONDS(TW_W5); + return GAMESTATE->m_SongOptions.GetCurrent().m_fMusicRate * GetWindowSeconds(TW_W5); } void Player::FadeToFail() diff --git a/stepmania/src/Player.h b/stepmania/src/Player.h index 7a1a11a7b0..00f48f42a5 100644 --- a/stepmania/src/Player.h +++ b/stepmania/src/Player.h @@ -126,6 +126,7 @@ public: void SetPaused( bool bPaused ) { m_bPaused = bPaused; } static float GetMaxStepDistanceSeconds(); + static float GetWindowSeconds( TimingWindow tw ); const NoteData &GetNoteData() const { return m_NoteData; } bool HasNoteField() const { return m_pNoteField != NULL; } diff --git a/stepmania/src/PrefsManager.cpp b/stepmania/src/PrefsManager.cpp index 8461f0bd3d..7d75dd0097 100644 --- a/stepmania/src/PrefsManager.cpp +++ b/stepmania/src/PrefsManager.cpp @@ -18,20 +18,6 @@ PrefsManager* PREFSMAN = NULL; // global and accessable from anywhere in our program -static const char *TimingWindowNames[] = { - "W1", - "W2", - "W3", - "W4", - "W5", - "Mine", - "Attack", - "Hold", - "Roll", -}; -XToString( TimingWindow ); - - static const char *ScoreEventNames[] = { "W1", "W2", @@ -149,24 +135,6 @@ bool g_bAutoRestart = false; # define TRUE_IF_DEBUG false #endif -void TimingWindowSecondsInit( size_t /*TimingWindow*/ i, RString &sNameOut, float &defaultValueOut ) -{ - sNameOut = "TimingWindowSeconds" + TimingWindowToString( (TimingWindow)i ); - switch( i ) - { - default: ASSERT(0); - case TW_W1: defaultValueOut = 0.0225f; break; - case TW_W2: defaultValueOut = 0.045f; break; - case TW_W3: defaultValueOut = 0.090f; break; - case TW_W4: defaultValueOut = 0.135f; break; - case TW_W5: defaultValueOut = 0.180f; break; - case TW_Mine: defaultValueOut = 0.090f; break; // same as great - case TW_Hold: defaultValueOut = 0.250f; break; // allow enough time to take foot off and put back on - case TW_Roll: defaultValueOut = 0.350f; break; - case TW_Attack: defaultValueOut = 0.135f; break; - } -} - void PercentScoreWeightInit( size_t /*ScoreEvent*/ i, RString &sNameOut, int &defaultValueOut ) { sNameOut = "PercentScoreWeight" + ScoreEventToString( (ScoreEvent)i ); @@ -289,10 +257,6 @@ PrefsManager::PrefsManager() : m_bOnlyDedicatedMenuButtons ( "OnlyDedicatedMenuButtons", false ), m_bMenuTimer ( "MenuTimer", true ), - m_fTimingWindowScale ( "TimingWindowScale", 1.0f ), - m_fTimingWindowAdd ( "TimingWindowAdd", 0 ), - m_fTimingWindowSeconds ( TimingWindowSecondsInit, NUM_TimingWindow ), - m_fLifeDifficultyScale ( "LifeDifficultyScale", 1.0f ), diff --git a/stepmania/src/PrefsManager.h b/stepmania/src/PrefsManager.h index 9db6633379..aa13094aae 100644 --- a/stepmania/src/PrefsManager.h +++ b/stepmania/src/PrefsManager.h @@ -130,11 +130,6 @@ public: Preference m_bOnlyDedicatedMenuButtons; Preference m_bMenuTimer; - Preference m_fTimingWindowScale; - Preference m_fTimingWindowAdd; // this is useful for compensating for changes in sampling rate between devices - - Preference1D m_fTimingWindowSeconds; - Preference m_fLifeDifficultyScale; // Whoever added these: Please add a comment saying what they do. -Chris