diff --git a/stepmania/src/GameConstantsAndTypes.cpp b/stepmania/src/GameConstantsAndTypes.cpp index c4029df284..5828c0e0e8 100644 --- a/stepmania/src/GameConstantsAndTypes.cpp +++ b/stepmania/src/GameConstantsAndTypes.cpp @@ -147,6 +147,7 @@ static const char *SongSortOrderNames[NUM_SORT_ORDERS] = { "EASY METER", "MEDIUM METER", "HARD METER", + "CHALLENGE METER", "SORT", "MODE", "COURSES", diff --git a/stepmania/src/GameConstantsAndTypes.h b/stepmania/src/GameConstantsAndTypes.h index f25e8ddfe5..f70c5ddd51 100644 --- a/stepmania/src/GameConstantsAndTypes.h +++ b/stepmania/src/GameConstantsAndTypes.h @@ -148,6 +148,7 @@ enum SongSortOrder { SORT_EASY_METER, SORT_MEDIUM_METER, SORT_HARD_METER, + SORT_CHALLENGE_METER, SORT_SORT_MENU, SORT_MODE_MENU, SORT_ALL_COURSES, diff --git a/stepmania/src/MusicWheel.cpp b/stepmania/src/MusicWheel.cpp index bb8ba7ca47..76c3b8663b 100644 --- a/stepmania/src/MusicWheel.cpp +++ b/stepmania/src/MusicWheel.cpp @@ -437,6 +437,7 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelItemDatas case SORT_EASY_METER: case SORT_MEDIUM_METER: case SORT_HARD_METER: + case SORT_CHALLENGE_METER: { /////////////////////////////////// // Make an array of Song*, then sort them @@ -501,6 +502,9 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelItemDatas case SORT_HARD_METER: SortSongPointerArrayByMeter( arraySongs, DIFFICULTY_HARD ); break; + case SORT_CHALLENGE_METER: + SortSongPointerArrayByMeter( arraySongs, DIFFICULTY_CHALLENGE ); + break; default: ASSERT(0); // unhandled SortOrder } @@ -904,6 +908,7 @@ void MusicWheel::Update( float fDeltaTime ) case SORT_EASY_METER: case SORT_MEDIUM_METER: case SORT_HARD_METER: + case SORT_CHALLENGE_METER: case SORT_ALL_COURSES: case SORT_NONSTOP_COURSES: case SORT_ONI_COURSES: @@ -923,30 +928,18 @@ void MusicWheel::Update( float fDeltaTime ) } // Change difficulty for sorts by meter + Difficulty dc = DIFFICULTY_INVALID; switch( GAMESTATE->m_SongSortOrder ) { - case SORT_EASY_METER: - { - for( int p=0; pIsPlayerEnabled(p) ) - GAMESTATE->m_PreferredDifficulty[p] = DIFFICULTY_EASY; - } - break; - case SORT_MEDIUM_METER: - { - for( int p=0; pIsPlayerEnabled(p) ) - GAMESTATE->m_PreferredDifficulty[p] = DIFFICULTY_MEDIUM; - } - break; - case SORT_HARD_METER: - { - for( int p=0; pIsPlayerEnabled(p) ) - GAMESTATE->m_PreferredDifficulty[p] = DIFFICULTY_HARD; - } - break; + case SORT_EASY_METER: dc = DIFFICULTY_EASY; break; + case SORT_MEDIUM_METER: dc = DIFFICULTY_MEDIUM; break; + case SORT_HARD_METER: dc = DIFFICULTY_HARD; break; + case SORT_CHALLENGE_METER: dc = DIFFICULTY_CHALLENGE; break; } + if( dc != DIFFICULTY_INVALID ) + for( int p=0; pIsPlayerEnabled(p) ) + GAMESTATE->m_PreferredDifficulty[p] = dc; SCREENMAN->PostMessageToTopScreen( SM_SongChanged, 0 ); RebuildMusicWheelItems(); diff --git a/stepmania/src/Song.cpp b/stepmania/src/Song.cpp index 032bb51e7a..f9ff953d8f 100644 --- a/stepmania/src/Song.cpp +++ b/stepmania/src/Song.cpp @@ -1469,6 +1469,13 @@ CString GetSectionNameFromSongAndSort( const Song* pSong, SongSortOrder so ) return ssprintf("%02d", pNotes->GetMeter() ); return "N/A"; } + case SORT_CHALLENGE_METER: + { + Steps* pNotes = pSong->GetStepsByDifficulty(GAMESTATE->GetCurrentStyleDef()->m_StepsType,DIFFICULTY_CHALLENGE); + if( pNotes ) + return ssprintf("%02d", pNotes->GetMeter() ); + return "N/A"; + } case SORT_SORT_MENU: case SORT_MODE_MENU: return "";