keep a list of styles and StepsTypes to show, instead of toggles for

each, since that causes ProfileHtml metrics to become out of date
each time a style or StepsType is added
This commit is contained in:
Glenn Maynard
2004-05-22 20:42:28 +00:00
parent a12cc31f3a
commit fcff80559a
+43 -9
View File
@@ -39,9 +39,9 @@ const CString STYLE_CSS = "Style.css";
#define VERIFICATION_TEXT THEME->GetMetric("ProfileHtml","VerificationText") #define VERIFICATION_TEXT THEME->GetMetric("ProfileHtml","VerificationText")
#define SHOW_PLAY_MODE(pm) THEME->GetMetricB("ProfileHtml","ShowPlayMode"+PlayModeToString(pm)) #define SHOW_PLAY_MODE(pm) THEME->GetMetricB("ProfileHtml","ShowPlayMode"+PlayModeToString(pm))
#define SHOW_RADAR_CATEGORY(rc) THEME->GetMetricB("ProfileHtml","ShowRadarCategory"+RadarCategoryToString(rc)) #define SHOW_RADAR_CATEGORY(rc) THEME->GetMetricB("ProfileHtml","ShowRadarCategory"+RadarCategoryToString(rc))
#define SHOW_STYLE(s) THEME->GetMetricB("ProfileHtml","ShowStyle"+Capitalize(GAMEMAN->GetStyleDefForStyle(s)->m_szName))
#define SHOW_DIFFICULTY(dc) THEME->GetMetricB("ProfileHtml","ShowDifficulty"+DifficultyToString(dc)) #define SHOW_DIFFICULTY(dc) THEME->GetMetricB("ProfileHtml","ShowDifficulty"+DifficultyToString(dc))
#define SHOW_STEPS_TYPE(st) THEME->GetMetricB("ProfileHtml","ShowStepsType"+Capitalize(GAMEMAN->NotesTypeToString(st))) #define STYLES_TO_SHOW THEME->GetMetric ("ProfileHtml","StylesToShow")
#define STEPS_TYPES_TO_SHOW THEME->GetMetric ("ProfileHtml","StepsTypesToShow")
#define SHOW_HIGH_SCORE_SCORE THEME->GetMetricB("ProfileHtml","ShowHighScoreScore") #define SHOW_HIGH_SCORE_SCORE THEME->GetMetricB("ProfileHtml","ShowHighScoreScore")
#define SHOW_HIGH_SCORE_GRADE THEME->GetMetricB("ProfileHtml","ShowHighScoreGrade") #define SHOW_HIGH_SCORE_GRADE THEME->GetMetricB("ProfileHtml","ShowHighScoreGrade")
#define SHOW_HIGH_SCORE_PERCENT THEME->GetMetricB("ProfileHtml","ShowHighScorePercent") #define SHOW_HIGH_SCORE_PERCENT THEME->GetMetricB("ProfileHtml","ShowHighScorePercent")
@@ -311,6 +311,20 @@ void PrintInstructions( RageFile &f, const Profile *pProfile, CString sTitle )
void PrintStatistics( RageFile &f, const Profile *pProfile, CString sTitle, vector<Song*> &vpSongs, vector<Steps*> &vpAllSteps, vector<StepsType> &vStepsTypesToShow, map<Steps*,Song*> mapStepsToSong, vector<Course*> vpCourses ) void PrintStatistics( RageFile &f, const Profile *pProfile, CString sTitle, vector<Song*> &vpSongs, vector<Steps*> &vpAllSteps, vector<StepsType> &vStepsTypesToShow, map<Steps*,Song*> mapStepsToSong, vector<Course*> vpCourses )
{ {
/* We don't convert these to Style, because Style is game-specific and these strings
* affect all styles with the same name. */
set<CString> StylesToShow;
{
CString sStyles = STYLES_TO_SHOW;
vector<CString> vStyles;
split( sStyles, ",", vStyles, true );
for( unsigned i = 0; i < vStyles.size(); ++i )
{
vStyles[i].MakeLower();
StylesToShow.insert(vStyles[i]);
}
}
PRINT_OPEN(f,sTitle,true); PRINT_OPEN(f,sTitle,true);
{ {
PRINT_OPEN(f,"General Info",true); PRINT_OPEN(f,"General Info",true);
@@ -365,7 +379,7 @@ void PrintStatistics( RageFile &f, const Profile *pProfile, CString sTitle, vect
// only show if this style plays a StepsType that we're showing // only show if this style plays a StepsType that we're showing
if( find(vStepsTypesToShow.begin(),vStepsTypesToShow.end(),st) == vStepsTypesToShow.end() ) if( find(vStepsTypesToShow.begin(),vStepsTypesToShow.end(),st) == vStepsTypesToShow.end() )
continue; // skip continue; // skip
if( !SHOW_STYLE(style) ) if( StylesToShow.find(pStyleDef->m_szName) == StylesToShow.end() )
continue; continue;
CString s = GAMEMAN->StyleToThemedString(style); CString s = GAMEMAN->StyleToThemedString(style);
TABLE_LINE2( s, pProfile->m_iNumSongsPlayedByStyle[style] ); TABLE_LINE2( s, pProfile->m_iNumSongsPlayedByStyle[style] );
@@ -1330,13 +1344,32 @@ void SaveStatsWebPage(
// Calculate which StepTypes to show // Calculate which StepTypes to show
// //
vector<StepsType> vStepsTypesToShow; vector<StepsType> vStepsTypesToShow;
for( StepsType st=(StepsType)0; st<NUM_STEPS_TYPES; st=(StepsType)(st+1) )
{ {
CString sShow = STEPS_TYPES_TO_SHOW;
vector<CString> vTypes;
split( sShow, ",", vTypes, true );
for( unsigned i = 0; i < vTypes.size(); ++i )
{
StepsType st = GAMEMAN->StringToNotesType( vTypes[i] );
if( st == STEPS_TYPE_INVALID )
{
LOG->Warn( "ProfileHtml::StepsTypesToShow: unknown steps type \"%s\"", vTypes[i].c_str() );
continue;
}
vStepsTypesToShow.push_back( st );
}
}
for( unsigned i = 0; i < vStepsTypesToShow.size(); ++i )
{
StepsType st = vStepsTypesToShow[i];
// don't show if there are no Steps of this StepsType // don't show if there are no Steps of this StepsType
bool bOneSongHasStepsForThisStepsType = false; bool bOneSongHasStepsForThisStepsType = false;
for( unsigned i=0; i<vpSongs.size(); i++ ) for( unsigned j=0; j<vpSongs.size(); j++ )
{ {
Song* pSong = vpSongs[i]; Song* pSong = vpSongs[j];
vector<Steps*> vpSteps; vector<Steps*> vpSteps;
pSong->GetSteps( vpSteps, st, DIFFICULTY_INVALID, -1, -1, "", false ); pSong->GetSteps( vpSteps, st, DIFFICULTY_INVALID, -1, -1, "", false );
if( !vpSteps.empty() ) if( !vpSteps.empty() )
@@ -1346,10 +1379,11 @@ void SaveStatsWebPage(
} }
} }
if( !bOneSongHasStepsForThisStepsType ) if( !bOneSongHasStepsForThisStepsType )
{
vStepsTypesToShow.erase( vStepsTypesToShow.begin()+i );
--i;
continue; continue;
if( !SHOW_STEPS_TYPE(st) ) }
continue;
vStepsTypesToShow.push_back( st );
} }
// //