diff --git a/stepmania/src/HighScore.cpp b/stepmania/src/HighScore.cpp index 5a92047d0c..913284defc 100644 --- a/stepmania/src/HighScore.cpp +++ b/stepmania/src/HighScore.cpp @@ -125,7 +125,7 @@ void HighScoreList::Init() vHighScores.clear(); } -void HighScoreList::AddHighScore( HighScore hs, int &iIndexOut ) +void HighScoreList::AddHighScore( HighScore hs, int &iIndexOut, bool bIsMachine ) { int i; for( i=0; i<(int)vHighScores.size(); i++ ) @@ -133,7 +133,9 @@ void HighScoreList::AddHighScore( HighScore hs, int &iIndexOut ) if( hs >= vHighScores[i] ) break; } - const int iMaxScores = PREFSMAN->m_iMaxHighScoresPerList; + const int iMaxScores = bIsMachine ? + PREFSMAN->m_iMaxHighScoresPerListForMachine : + PREFSMAN->m_iMaxHighScoresPerListForPlayer; if( i < iMaxScores ) { vHighScores.insert( vHighScores.begin()+i, hs ); diff --git a/stepmania/src/HighScore.h b/stepmania/src/HighScore.h index 28633bb992..85d6b6df22 100644 --- a/stepmania/src/HighScore.h +++ b/stepmania/src/HighScore.h @@ -93,7 +93,7 @@ struct HighScoreList void Init(); - void AddHighScore( HighScore hs, int &iIndexOut ); + void AddHighScore( HighScore hs, int &iIndexOut, bool bIsMachine ); const HighScore& GetTopScore() const; diff --git a/stepmania/src/PrefsManager.cpp b/stepmania/src/PrefsManager.cpp index 7ec7ae3451..55d834cea1 100644 --- a/stepmania/src/PrefsManager.cpp +++ b/stepmania/src/PrefsManager.cpp @@ -224,7 +224,8 @@ void PrefsManager::Init() m_iAttractSoundFrequency = 1; m_bAllowExtraStage = true; m_bHideDefaultNoteSkin = false; - m_iMaxHighScoresPerList = 10; + m_iMaxHighScoresPerListForMachine = 10; + m_iMaxHighScoresPerListForPlayer = 3; m_fPadStickSeconds = 0; m_bForceMipMaps = false; m_bTrilinearFiltering = false; @@ -533,7 +534,8 @@ void PrefsManager::ReadPrefsFromFile( CString sIni ) ini.GetValue( "Options", "AttractSoundFrequency", m_iAttractSoundFrequency ); ini.GetValue( "Options", "AllowExtraStage", m_bAllowExtraStage ); ini.GetValue( "Options", "HideDefaultNoteSkin", m_bHideDefaultNoteSkin ); - ini.GetValue( "Options", "MaxHighScoresPerList", m_iMaxHighScoresPerList ); + ini.GetValue( "Options", "MaxHighScoresPerListForMachine", m_iMaxHighScoresPerListForMachine ); + ini.GetValue( "Options", "MaxHighScoresPerListForPlayer", m_iMaxHighScoresPerListForPlayer ); ini.GetValue( "Options", "PadStickSeconds", m_fPadStickSeconds ); ini.GetValue( "Options", "ForceMipMaps", m_bForceMipMaps ); ini.GetValue( "Options", "TrilinearFiltering", m_bTrilinearFiltering ); @@ -760,7 +762,8 @@ void PrefsManager::SaveGlobalPrefsToDisk() const ini.SetValue( "Options", "AttractSoundFrequency", m_iAttractSoundFrequency ); ini.SetValue( "Options", "AllowExtraStage", m_bAllowExtraStage ); ini.SetValue( "Options", "HideDefaultNoteSkin", m_bHideDefaultNoteSkin ); - ini.SetValue( "Options", "MaxHighScoresPerList", m_iMaxHighScoresPerList ); + ini.SetValue( "Options", "MaxHighScoresPerListForMachine", m_iMaxHighScoresPerListForMachine ); + ini.SetValue( "Options", "MaxHighScoresPerListForPlayer", m_iMaxHighScoresPerListForPlayer ); ini.SetValue( "Options", "PadStickSeconds", m_fPadStickSeconds ); ini.SetValue( "Options", "ForceMipMaps", m_bForceMipMaps ); ini.SetValue( "Options", "TrilinearFiltering", m_bTrilinearFiltering ); diff --git a/stepmania/src/PrefsManager.h b/stepmania/src/PrefsManager.h index 61c3c540da..649058ae49 100644 --- a/stepmania/src/PrefsManager.h +++ b/stepmania/src/PrefsManager.h @@ -196,7 +196,8 @@ public: int m_iAttractSoundFrequency; // 0 = never, 1 = every time bool m_bAllowExtraStage; bool m_bHideDefaultNoteSkin; - int m_iMaxHighScoresPerList; + int m_iMaxHighScoresPerListForMachine; + int m_iMaxHighScoresPerListForPlayer; bool m_bCelShadeDancers; // Number of seconds it takes for a button on the controller to release diff --git a/stepmania/src/Profile.cpp b/stepmania/src/Profile.cpp index cebe8b9af5..bc58755e3e 100644 --- a/stepmania/src/Profile.cpp +++ b/stepmania/src/Profile.cpp @@ -419,7 +419,7 @@ int Profile::GetSongNumTimesPlayed( const SongID& songID ) const // void Profile::AddStepsHighScore( const Song* pSong, const Steps* pSteps, HighScore hs, int &iIndexOut ) { - GetStepsHighScoreList(pSong,pSteps).AddHighScore( hs, iIndexOut ); + GetStepsHighScoreList(pSong,pSteps).AddHighScore( hs, iIndexOut, IsMachine() ); } const HighScoreList& Profile::GetStepsHighScoreList( const Song* pSong, const Steps* pSteps ) const @@ -483,7 +483,7 @@ void Profile::GetGrades( const Song* pSong, StepsType st, int iCounts[NUM_GRADES // void Profile::AddCourseHighScore( const Course* pCourse, const Trail* pTrail, HighScore hs, int &iIndexOut ) { - GetCourseHighScoreList(pCourse,pTrail).AddHighScore( hs, iIndexOut ); + GetCourseHighScoreList(pCourse,pTrail).AddHighScore( hs, iIndexOut, IsMachine() ); } const HighScoreList& Profile::GetCourseHighScoreList( const Course* pCourse, const Trail* pTrail ) const @@ -541,7 +541,7 @@ void Profile::IncrementCoursePlayCount( const Course* pCourse, const Trail* pTra // void Profile::AddCategoryHighScore( StepsType st, RankingCategory rc, HighScore hs, int &iIndexOut ) { - m_CategoryHighScores[st][rc].AddHighScore( hs, iIndexOut ); + m_CategoryHighScores[st][rc].AddHighScore( hs, iIndexOut, IsMachine() ); } const HighScoreList& Profile::GetCategoryHighScoreList( StepsType st, RankingCategory rc ) const @@ -604,13 +604,14 @@ bool Profile::LoadAllFromDir( CString sDir, bool bRequireSignature ) // // Don't unreasonably large stats.xml files. // - const bool bThisIsMachineProfile = (this == PROFILEMAN->GetMachineProfile()); // XXX - - int iBytes = FILEMAN->GetFileSizeInBytes( fn ); - if( !bThisIsMachineProfile && iBytes > MAX_PLAYER_STATS_XML_SIZE_BYTES ) + if( !IsMachine() ) // only check stats coming from the player { - LOG->Warn( "The file '%s' is unreasonably large. It won't be loaded.", fn.c_str() ); - break; + int iBytes = FILEMAN->GetFileSizeInBytes( fn ); + if( iBytes > MAX_PLAYER_STATS_XML_SIZE_BYTES ) + { + LOG->Warn( "The file '%s' is unreasonably large. It won't be loaded.", fn.c_str() ); + break; + } } if( bRequireSignature ) @@ -696,9 +697,8 @@ bool Profile::SaveAllToDir( CString sDir, bool bSignData ) const } } - const bool bThisIsMachineProfile = (this == PROFILEMAN->GetMachineProfile()); // XXX - if( (bThisIsMachineProfile && PREFSMAN->m_bWriteMachineStatsHtml) || - (!bThisIsMachineProfile && PREFSMAN->m_bWritePlayerStatsHtml) ) + if( (IsMachine() && PREFSMAN->m_bWriteMachineStatsHtml) || + (!IsMachine() && PREFSMAN->m_bWritePlayerStatsHtml) ) SaveStatsWebPageToDir( sDir ); // @@ -1253,13 +1253,11 @@ void Profile::SaveStatsWebPageToDir( CString sDir ) const { ASSERT( PROFILEMAN ); - bool bThisIsMachineProfile = (this == PROFILEMAN->GetMachineProfile()); // UGLY - SaveStatsWebPage( sDir, this, PROFILEMAN->GetMachineProfile(), - bThisIsMachineProfile ? HTML_TYPE_MACHINE : HTML_TYPE_PLAYER + IsMachine() ? HTML_TYPE_MACHINE : HTML_TYPE_PLAYER ); } @@ -1711,3 +1709,9 @@ const Profile::HighScoresForACourse *Profile::GetHighScoresForACourse( const Cou return NULL; return &it->second; } + +bool Profile::IsMachine() const +{ + // TODO: Think of a better way to handle this + return this == PROFILEMAN->GetMachineProfile(); +} diff --git a/stepmania/src/Profile.h b/stepmania/src/Profile.h index 8e05aadbcd..3b1aae9859 100644 --- a/stepmania/src/Profile.h +++ b/stepmania/src/Profile.h @@ -88,6 +88,8 @@ public: void AddStepTotals( int iNumTapsAndHolds, int iNumJumps, int iNumHolds, int iNumMines, int iNumHands ); + bool IsMachine() const; + // // Editable data // diff --git a/stepmania/src/ScreenNameEntryTraditional.cpp b/stepmania/src/ScreenNameEntryTraditional.cpp index 74b62df1a9..aa5e485ac3 100644 --- a/stepmania/src/ScreenNameEntryTraditional.cpp +++ b/stepmania/src/ScreenNameEntryTraditional.cpp @@ -100,8 +100,8 @@ void HighScoreWheelItem::ShowFocus() void HighScoreWheel::Load( const HighScoreList& hsl, int iIndexToFocus ) { - m_Items.resize( PREFSMAN->m_iMaxHighScoresPerList ); - for( int i=0; im_iMaxHighScoresPerList; i++ ) + m_Items.resize( PREFSMAN->m_iMaxHighScoresPerListForMachine ); + for( int i=0; im_iMaxHighScoresPerListForMachine; i++ ) { if( unsigned(i) < hsl.vHighScores.size() ) m_Items[i].Load( i, hsl.vHighScores[i] );