From 9dafcc176ee2745e0af8014df504ea958bdcee38 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sun, 7 Dec 2003 07:46:21 +0000 Subject: [PATCH] overhauling stats: keep per-player category info to simplify --- stepmania/src/GameConstantsAndTypes.h | 2 - stepmania/src/GameState.cpp | 27 ++++--- stepmania/src/ProfileManager.cpp | 111 +++++++++++++------------- stepmania/src/ProfileManager.h | 19 ++--- stepmania/src/ScreenRanking.cpp | 4 +- 5 files changed, 82 insertions(+), 81 deletions(-) diff --git a/stepmania/src/GameConstantsAndTypes.h b/stepmania/src/GameConstantsAndTypes.h index 2a1676d541..c0bff26d73 100644 --- a/stepmania/src/GameConstantsAndTypes.h +++ b/stepmania/src/GameConstantsAndTypes.h @@ -265,8 +265,6 @@ const int ITEM_NONE = -1; #define RANDOMMOVIES_DIR CString(BASE_PATH "RandomMovies" SLASH) -#define PROFILES_DIR BASE_PATH "Data" SLASH "Profiles" SLASH - // // Coin stuff diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index c0e932cdc1..907e819c51 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -951,21 +951,24 @@ void GameState::GetRankingFeats( PlayerNumber pn, vector &asFeatsO GetFinalEvalStatsAndSongs( stats, vSongs ); - for( i=0; i &vHighScores = PROFILEMAN->m_CategoryDatas[nt][i].vHighScores; - for( unsigned j=0; j &vHighScores = PROFILEMAN->m_CategoryDatas[mc][nt][i].vHighScores; + for( unsigned j=0; j &asProfileIDsOut ) { - GetDirListing( PROFILES_DIR "*", asProfileIDsOut, true, false ); + GetDirListing( USER_PROFILES_DIR "*", asProfileIDsOut, true, false ); } void ProfileManager::GetMachineProfileNames( vector &asNamesOut ) @@ -89,7 +88,7 @@ void ProfileManager::GetMachineProfileNames( vector &asNamesOut ) CString sProfileID = vsProfileIDs[i]; Profile pro; - pro.LoadFromIni( PROFILES_DIR + sProfileID + SLASH + PROFILE_FILE ); + pro.LoadFromIni( USER_PROFILES_DIR + sProfileID + SLASH + PROFILE_FILE ); asNamesOut.push_back( pro.m_sName ); } } @@ -112,8 +111,9 @@ bool ProfileManager::LoadProfile( PlayerNumber pn, CString sProfileDir, bool bIs } // Load scores into SONGMAN - PROFILEMAN->ReadStepsMemCardDataFromFile( m_sProfileDir[pn]+STEPS_MEM_CARD_DATA_FILE, (MemoryCard)pn ); - PROFILEMAN->ReadCourseMemCardDataFromFile( m_sProfileDir[pn]+COURSE_MEM_CARD_DATA_FILE, (MemoryCard)pn ); + PROFILEMAN->ReadCategoryScoresFromFile( m_sProfileDir[pn]+SONG_SCORES_FILE, (MemoryCard)pn ); + PROFILEMAN->ReadSongScoresFromFile( m_sProfileDir[pn]+SONG_SCORES_FILE, (MemoryCard)pn ); + PROFILEMAN->ReadCourseScoresFromFile( m_sProfileDir[pn]+COURSE_SCORES_FILE, (MemoryCard)pn ); // apply saved default modifiers if any if( m_Profile[pn].m_bUsingProfileDefaultModifiers ) @@ -148,7 +148,7 @@ bool ProfileManager::LoadDefaultProfileFromMachine( PlayerNumber pn ) return false; } - CString sDir = PROFILES_DIR + sProfileID + SLASH; + CString sDir = USER_PROFILES_DIR + sProfileID + SLASH; return LoadProfile( pn, sDir, false ); } @@ -202,12 +202,10 @@ bool ProfileManager::SaveProfile( PlayerNumber pn ) m_Profile[pn].SaveToIni( m_sProfileDir[pn]+PROFILE_FILE ); - // - // Save scores into SONGMAN - // - // TODO: move record data to this class - SaveStepsMemCardDataToFile( m_sProfileDir[pn]+STEPS_MEM_CARD_DATA_FILE, (MemoryCard)pn ); - SaveCourseMemCardDataToFile( m_sProfileDir[pn]+COURSE_MEM_CARD_DATA_FILE, (MemoryCard)pn ); + SaveCategoryScoresToFile( m_sProfileDir[pn]+CATEGORY_SCORES_FILE, (MemoryCard)pn ); + SaveSongScoresToFile( m_sProfileDir[pn]+SONG_SCORES_FILE, (MemoryCard)pn ); + SaveCourseScoresToFile( m_sProfileDir[pn]+COURSE_SCORES_FILE, (MemoryCard)pn ); + SaveStatsWebPageToFile( m_sProfileDir[pn]+STATS_HTML_FILE, (MemoryCard)pn ); return true; } @@ -278,7 +276,7 @@ bool ProfileManager::CreateMachineProfile( CString sName ) for( i=0; iWarn("Error parsing file '%s' at %s:%d",fn.c_str(),__FILE__,__LINE__); return; } -void ProfileManager::ReadStepsMemCardDataFromFile( CString fn, int mc ) +void ProfileManager::ReadSongScoresFromFile( CString fn, MemoryCard mc ) { RageFile f(fn); if (!f.IsOpen() || f.GetError() != 0) @@ -431,7 +430,7 @@ void ProfileManager::ReadStepsMemCardDataFromFile( CString fn, int mc ) int version; if( !FileRead(f, version) ) WARN_AND_RETURN; - if( version != STEPS_MEM_CARD_DATA_VERSION ) + if( version != STEPS_SCORES_VERSION ) WARN_AND_RETURN; int iNumSongs; @@ -517,7 +516,7 @@ void ProfileManager::ReadStepsMemCardDataFromFile( CString fn, int mc ) } -void ProfileManager::ReadCategoryRankingsFromFile( CString fn ) +void ProfileManager::ReadCategoryScoresFromFile( CString fn, MemoryCard mc ) { RageFile f(fn); if (!f.IsOpen() || f.GetError() != 0) @@ -533,7 +532,7 @@ void ProfileManager::ReadCategoryRankingsFromFile( CString fn ) { for( int rc=0; rcTrace("SongManager::SaveCategoryRankingsToFile"); @@ -716,29 +715,29 @@ void ProfileManager::SaveCategoryRankingsToFile( CString fn ) { for( int rc=0; rcTrace("SongManager::SaveCourseMemCardDataToFile"); + LOG->Trace("SongManager::SaveCourseScoresToFile"); RageFile f(fn); if (!f.IsOpen() || f.GetError() != 0) return; - FileWrite( f, COURSE_MEM_CARD_DATA_VERSION ); + FileWrite( f, COURSE_SCORES_VERSION ); vector vpCourses; SONGMAN->GetAllCourses( vpCourses, true ); @@ -786,15 +785,15 @@ void ProfileManager::SaveCourseMemCardDataToFile( CString fn, int mc ) } } -void ProfileManager::SaveStepsMemCardDataToFile( CString fn, int mc ) +void ProfileManager::SaveSongScoresToFile( CString fn, MemoryCard mc ) { - LOG->Trace("SongManager::SaveStepsMemCardDataToFile %s", fn.c_str()); + LOG->Trace("SongManager::SaveSongScoresToFile %s", fn.c_str()); RageFile f(fn); if (!f.IsOpen() || f.GetError() != 0) return; - FileWrite( f, STEPS_MEM_CARD_DATA_VERSION ); + FileWrite( f, STEPS_SCORES_VERSION ); const vector &vpSongs = SONGMAN->GetAllSongs(); @@ -889,10 +888,10 @@ static CString HTMLQuoteDoubleQuotes( CString str ) return str; } -void ProfileManager::WriteStatsWebPage() +void ProfileManager::SaveStatsWebPageToFile( CString fn, MemoryCard mc ) { RageFile f; - if( !f.Open( STATS_PATH, RageFile::WRITE ) ) + if( !f.Open( fn, RageFile::WRITE ) ) return; f.PutLine( "" ); diff --git a/stepmania/src/ProfileManager.h b/stepmania/src/ProfileManager.h index 841afc5749..540cef4c5f 100644 --- a/stepmania/src/ProfileManager.h +++ b/stepmania/src/ProfileManager.h @@ -92,22 +92,24 @@ public: void AddHighScore( HighScore hs, int &iIndexOut ); - } m_CategoryDatas[NUM_STEPS_TYPES][NUM_RANKING_CATEGORIES]; + } m_CategoryDatas[NUM_MEMORY_CARDS][NUM_STEPS_TYPES][NUM_RANKING_CATEGORIES]; void AddHighScore( StepsType nt, RankingCategory rc, PlayerNumber pn, CategoryData::HighScore hs, int &iMachineIndexOut ) { hs.sName = RANKING_TO_FILL_IN_MARKER[pn]; - m_CategoryDatas[nt][rc].AddHighScore( hs, iMachineIndexOut ); + m_CategoryDatas[pn][nt][rc].AddHighScore( hs, iMachineIndexOut ); + m_CategoryDatas[MEMORY_CARD_MACHINE][nt][rc].AddHighScore( hs, iMachineIndexOut ); } void ReadSM300NoteScores(); - void ReadStepsMemCardDataFromFile( CString fn, int c ); - void ReadCourseMemCardDataFromFile( CString fn, int c ); - void ReadCategoryRankingsFromFile( CString fn ); + void ReadSongScoresFromFile( CString fn, MemoryCard mc ); + void ReadCourseScoresFromFile( CString fn, MemoryCard mc ); + void ReadCategoryScoresFromFile( CString fn, MemoryCard mc ); - void SaveStepsMemCardDataToFile( CString fn, int c ); - void SaveCourseMemCardDataToFile( CString fn, int c ); - void SaveCategoryRankingsToFile( CString fn ); + void SaveSongScoresToFile( CString fn, MemoryCard mc ); + void SaveCourseScoresToFile( CString fn, MemoryCard mc ); + void SaveCategoryScoresToFile( CString fn, MemoryCard mc ); + void SaveStatsWebPageToFile( CString fn, MemoryCard mc ); private: bool LoadDefaultProfileFromMachine( PlayerNumber pn ); @@ -126,7 +128,6 @@ private: Profile m_MachineProfile; - void WriteStatsWebPage(); }; diff --git a/stepmania/src/ScreenRanking.cpp b/stepmania/src/ScreenRanking.cpp index 9695315098..bff55960bf 100644 --- a/stepmania/src/ScreenRanking.cpp +++ b/stepmania/src/ScreenRanking.cpp @@ -421,8 +421,8 @@ void ScreenRanking::SetPage( PageToShow pts ) for( int l=0; lm_CategoryDatas[pts.nt][pts.category].vHighScores.size() ) - hs = PROFILEMAN->m_CategoryDatas[pts.nt][pts.category].vHighScores[l]; + if( l < (int)PROFILEMAN->m_CategoryDatas[MEMORY_CARD_MACHINE][pts.nt][pts.category].vHighScores.size() ) + hs = PROFILEMAN->m_CategoryDatas[MEMORY_CARD_MACHINE][pts.nt][pts.category].vHighScores[l]; if( hs.sName.empty() ) hs.sName = EMPTY_SCORE_NAME;