add grade counts, screenshots to stats.html

This commit is contained in:
Chris Danford
2004-02-17 01:16:57 +00:00
parent ec6039769c
commit d1a3f1fbde
9 changed files with 202 additions and 21 deletions
+84
View File
@@ -48,6 +48,7 @@ const int SM_390A12_COURSE_SCORES_VERSION = 8;
#define CATEGORY_SCORES_XML "CategoryScores.xml"
#define SONG_SCORES_XML "SongScores.xml"
#define COURSE_SCORES_XML "CourseScores.xml"
#define SCREENSHOT_DATA_XML "ScreenshotData.xml"
#define DEFAULT_PROFILE_NAME ""
@@ -96,6 +97,11 @@ void Profile::InitCategoryScores()
m_CategoryHighScores[st][rc].Init();
}
void Profile::InitScreenshotData()
{
m_vScreenshots.clear();
}
CString Profile::GetDisplayName() const
{
if( !m_sName.empty() )
@@ -283,6 +289,7 @@ bool Profile::LoadAllFromDir( CString sDir )
LoadSongScoresFromDir( sDir );
LoadCourseScoresFromDir( sDir );
LoadCategoryScoresFromDir( sDir );
LoadScreenshotDataFromDir( sDir );
return bResult;
}
@@ -300,6 +307,7 @@ bool Profile::SaveAllToDir( CString sDir ) const
DeleteCourseScoresFromDirSM390a12( sDir );
SaveCategoryScoresToDir( sDir );
DeleteCategoryScoresFromDirSM390a12( sDir );
SaveScreenshotDataToDir( sDir );
SaveStatsWebPageToDir( sDir );
SaveMachinePublicKeyToDir( sDir );
return bResult;
@@ -1007,3 +1015,79 @@ void Profile::SaveMachinePublicKeyToDir( CString sDir ) const
{
FileCopy( CRYPTMAN->GetPublicKeyFileName(), "public.key.rsa" );
}
void Profile::AddScreenshot( Screenshot screenshot )
{
m_vScreenshots.push_back( screenshot );
}
void Profile::LoadScreenshotDataFromDir( CString sDir )
{
CHECKPOINT;
CString fn = sDir + SCREENSHOT_DATA_XML;
CRYPT_VERIFY_FILE;
XNode xml;
if( !xml.LoadFromFile( fn ) )
{
LOG->Warn( "Couldn't open file \"%s\" for writing.", fn.c_str() );
return;
}
if( xml.name != "ScreenshotData" )
WARN_AND_RETURN;
for( XNodes::iterator screenshot = xml.childs.begin();
screenshot != xml.childs.end();
screenshot++ )
{
if( (*screenshot)->name != "Screenshot" )
WARN_AND_CONTINUE;
Screenshot ss;
if( !(*screenshot)->GetChildValue("FileName",ss.sFileName) )
WARN_AND_CONTINUE;
if( !(*screenshot)->GetChildValue("Signature",ss.sSignature) )
WARN_AND_CONTINUE;
XNode *pHighScoreNode = (*screenshot)->GetChild("HighScore");
if( pHighScoreNode == NULL )
WARN_AND_CONTINUE;
HighScore &hs = ss.highScore;
hs.LoadFromNode( pHighScoreNode );
m_vScreenshots.push_back( ss );
}
}
void Profile::SaveScreenshotDataToDir( CString sDir ) const
{
CHECKPOINT;
const Profile* pProfile = this;
ASSERT( pProfile );
CString fn = sDir + SCREENSHOT_DATA_XML;
XNode xml;
xml.name = "ScreenshotData";
for( int i=0; i<m_vScreenshots.size(); i++ )
{
const Screenshot &ss = m_vScreenshots[i];
XNode* pScreenshotNode = xml.AppendChild( "Screenshot" );
pScreenshotNode->AppendChild( "FileName", ss.sFileName );
pScreenshotNode->AppendChild( "Signature", ss.sSignature );
pScreenshotNode->AppendChild( ss.highScore.CreateNode() );
}
xml.SaveToFile( fn );
CRYPT_WRITE_SIG;
}