From 11b9427b9c1c5db5917e0ae69fa91fed124aae1b Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Mon, 9 May 2005 17:33:22 +0000 Subject: [PATCH] add pref PreferredSortUsesGroups --- stepmania/src/MusicWheel.cpp | 4 +++- stepmania/src/PrefsManager.cpp | 3 ++- stepmania/src/PrefsManager.h | 1 + stepmania/src/SongUtil.cpp | 8 +------- stepmania/src/SongUtil.h | 3 ++- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/stepmania/src/MusicWheel.cpp b/stepmania/src/MusicWheel.cpp index cdc080bfc6..27725a0fa4 100644 --- a/stepmania/src/MusicWheel.cpp +++ b/stepmania/src/MusicWheel.cpp @@ -498,7 +498,9 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelItemDatas { case SORT_PREFERRED: case SORT_ROULETTE: - SongUtil::SortSongPointerArrayByGroupAndDifficulty( arraySongs ); + SongUtil::SortSongPointerArrayByMeter( arraySongs, DIFFICULTY_EASY ); + if( (bool)PREFSMAN->m_bPreferredSortUsesGroups ) + stable_sort( arraySongs.begin(), arraySongs.end(), SongUtil::CompareSongPointersByGroup ); bUseSections = false; break; case SORT_GROUP: diff --git a/stepmania/src/PrefsManager.cpp b/stepmania/src/PrefsManager.cpp index 24e930e5f7..7c5b16e22f 100644 --- a/stepmania/src/PrefsManager.cpp +++ b/stepmania/src/PrefsManager.cpp @@ -242,7 +242,8 @@ PrefsManager::PrefsManager() : m_iMaxRecentScoresForMachine ( Options, "MaxRecentScoresForMachine", 100 ), m_iMaxRecentScoresForPlayer ( Options, "MaxRecentScoresForPlayer", 20 ), m_bAllowMultipleHighScoreWithSameName ( Options, "AllowMultipleHighScoreWithSameName", true ), - m_bCelShadeModels ( Options, "CelShadeModels", false ) // Work-In-Progress.. disable by default. + m_bCelShadeModels ( Options, "CelShadeModels", false ), // Work-In-Progress.. disable by default. + m_bPreferredSortUsesGroups ( Options, "PreferredSortUsesGroups", true ) { Init(); ReadGlobalPrefsFromDisk(); diff --git a/stepmania/src/PrefsManager.h b/stepmania/src/PrefsManager.h index 5b84a6fb60..15285d4bf8 100644 --- a/stepmania/src/PrefsManager.h +++ b/stepmania/src/PrefsManager.h @@ -225,6 +225,7 @@ public: Preference m_iMaxRecentScoresForPlayer; Preference m_bAllowMultipleHighScoreWithSameName; Preference m_bCelShadeModels; + Preference m_bPreferredSortUsesGroups; /* experimental: force a specific update rate. This prevents big * animation jumps on frame skips. */ diff --git a/stepmania/src/SongUtil.cpp b/stepmania/src/SongUtil.cpp index fbd3d6d052..4aa56abdf9 100644 --- a/stepmania/src/SongUtil.cpp +++ b/stepmania/src/SongUtil.cpp @@ -163,17 +163,11 @@ void SongUtil::SortSongPointerArrayByGenre( vector &vpSongsInOut ) stable_sort( vpSongsInOut.begin(), vpSongsInOut.end(), CompareSongPointersByGenre ); } -static int CompareSongPointersByGroup(const Song *pSong1, const Song *pSong2) +int SongUtil::CompareSongPointersByGroup(const Song *pSong1, const Song *pSong2) { return pSong1->m_sGroupName < pSong2->m_sGroupName; } -void SongUtil::SortSongPointerArrayByGroupAndDifficulty( vector &vpSongsInOut ) -{ - SortSongPointerArrayByMeter( vpSongsInOut, DIFFICULTY_EASY ); - stable_sort( vpSongsInOut.begin(), vpSongsInOut.end(), CompareSongPointersByGroup ); -} - int CompareSongPointersByGroupAndTitle(const Song *pSong1, const Song *pSong2) { const CString &sGroup1 = pSong1->m_sGroupName; diff --git a/stepmania/src/SongUtil.h b/stepmania/src/SongUtil.h index ee07521041..12ca09e62e 100644 --- a/stepmania/src/SongUtil.h +++ b/stepmania/src/SongUtil.h @@ -19,7 +19,6 @@ namespace SongUtil void SortSongPointerArrayByArtist( vector &vpSongsInOut ); void SortSongPointerArrayByDisplayArtist( vector &vpSongsInOut ); void SortSongPointerArrayByGenre( vector &vpSongsInOut ); - void SortSongPointerArrayByGroupAndDifficulty( vector &vpSongsInOut ); void SortSongPointerArrayByGroupAndTitle( vector &vpSongsInOut ); void SortSongPointerArrayByNumPlays( vector &vpSongsInOut, ProfileSlot slot, bool bDescending ); void SortSongPointerArrayByNumPlays( vector &vpSongsInOut, const Profile* pProfile, bool bDescending ); @@ -27,6 +26,8 @@ namespace SongUtil CString GetSectionNameFromSongAndSort( const Song* pSong, SortOrder so ); void SortSongPointerArrayBySectionName( vector &vpSongsInOut, SortOrder so ); void SortByMostRecentlyPlayedForMachine( vector &vpSongsInOut ); + + int CompareSongPointersByGroup(const Song *pSong1, const Song *pSong2); } class SongID