From 48a6f0f963f1a2238de49048eae48c1027bc0894 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sat, 18 Mar 2006 12:05:15 +0000 Subject: [PATCH] Don't add up actual scores for Courses that aren't installed or aren't shown. --- stepmania/src/Profile.cpp | 72 ++++++++++++++------------------------- 1 file changed, 26 insertions(+), 46 deletions(-) diff --git a/stepmania/src/Profile.cpp b/stepmania/src/Profile.cpp index 33bd1b785b..0619ba119d 100644 --- a/stepmania/src/Profile.cpp +++ b/stepmania/src/Profile.cpp @@ -387,23 +387,31 @@ float Profile::GetSongsPercentComplete( StepsType st, Difficulty dc ) const return GetSongsActual(st,dc) / GetSongsPossible(st,dc); } +static GetHighScoreCourses( vector &vpCoursesOut ) +{ + vpCoursesOut.clear(); + + vector vpCourses; + SONGMAN->GetAllCourses( vpCourses, false ); + FOREACH_CONST( Course*, vpCourses, c ) + { + // Don't count any course that has any entries that change over time. + if( !(*c)->AllSongsAreFixed() ) + continue; + + vpCoursesOut.push_back( *c ); + } +} float Profile::GetCoursesPossible( StepsType st, CourseDifficulty cd ) const { int iTotalTrails = 0; - // add course high scores - vector vCourses; - SONGMAN->GetAllCourses( vCourses, false ); - for( unsigned i=0; i vpCourses; + GetHighScoreCourses( vpCourses ); + FOREACH_CONST( Course*, vpCourses, c ) { - const Course* pCourse = vCourses[i]; - - // Don't count any course that has any entries that change over time. - if( !pCourse->AllSongsAreFixed() ) - continue; - - Trail* pTrail = pCourse->GetTrail(st,cd); + Trail* pTrail = (*c)->GetTrail(st,cd); if( pTrail == NULL ) continue; @@ -417,44 +425,16 @@ float Profile::GetCoursesActual( StepsType st, CourseDifficulty cd ) const { float fTotalPercents = 0; - // add course high scores - FOREACHM_CONST( CourseID, HighScoresForACourse, m_CourseHighScores, i ) + vector vpCourses; + GetHighScoreCourses( vpCourses ); + FOREACH_CONST( Course*, vpCourses, c ) { - CourseID id = i->first; - const Course* pCourse = id.ToCourse(); - - // If the Course isn't loaded on the current machine, then we can't - // get radar values to compute dance points. - if( pCourse == NULL ) - continue; - - // Don't count any course that has any entries that change over time. - if( !pCourse->AllSongsAreFixed() ) + Trail *pTrail = (*c)->GetTrail( st, cd ); + if( pTrail == NULL ) continue; - const HighScoresForACourse &hsfac = i->second; - - FOREACHM_CONST( TrailID, HighScoresForATrail, hsfac.m_TrailHighScores, j ) - { - const TrailID &id = j->first; - Trail* pTrail = id.ToTrail( pCourse, true ); - - // If the Steps isn't loaded on the current machine, then we can't - // get radar values to compute dance points. - if( pTrail == NULL ) - continue; - - if( pTrail->m_StepsType != st ) - continue; - - if( pTrail->m_CourseDifficulty != cd ) - continue; - - const HighScoresForATrail& h = j->second; - const HighScoreList& hsl = h.hsl; - - fTotalPercents += hsl.GetTopScore().GetPercentDP(); - } + const HighScoreList& hsl = GetCourseHighScoreList( *c, pTrail ); + fTotalPercents += hsl.GetTopScore().GetPercentDP(); } return fTotalPercents;