only keep top 3 scores in players' stats.xml to keep the file size small

This commit is contained in:
Chris Danford
2004-05-28 04:46:43 +00:00
parent 58439b1ed8
commit aee70ad0cc
7 changed files with 36 additions and 24 deletions
+4 -2
View File
@@ -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 );
+1 -1
View File
@@ -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;
+6 -3
View File
@@ -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 );
+2 -1
View File
@@ -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
+19 -15
View File
@@ -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();
}
+2
View File
@@ -88,6 +88,8 @@ public:
void AddStepTotals( int iNumTapsAndHolds, int iNumJumps, int iNumHolds, int iNumMines, int iNumHands );
bool IsMachine() const;
//
// Editable data
//
+2 -2
View File
@@ -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; i<PREFSMAN->m_iMaxHighScoresPerList; i++ )
m_Items.resize( PREFSMAN->m_iMaxHighScoresPerListForMachine );
for( int i=0; i<PREFSMAN->m_iMaxHighScoresPerListForMachine; i++ )
{
if( unsigned(i) < hsl.vHighScores.size() )
m_Items[i].Load( i, hsl.vHighScores[i] );