automatically move unlocks to the bottom of the preferred sort list
This commit is contained in:
@@ -44,6 +44,7 @@ const RString COURSES_DIR = "/Courses/";
|
|||||||
static const ThemeMetric<RageColor> EXTRA_COLOR ("SongManager","ExtraColor");
|
static const ThemeMetric<RageColor> EXTRA_COLOR ("SongManager","ExtraColor");
|
||||||
static const ThemeMetric<int> EXTRA_COLOR_METER ("SongManager","ExtraColorMeter");
|
static const ThemeMetric<int> EXTRA_COLOR_METER ("SongManager","ExtraColorMeter");
|
||||||
static const ThemeMetric<bool> USE_PREFERRED_SORT_COLOR ("SongManager","UsePreferredSortColor");
|
static const ThemeMetric<bool> USE_PREFERRED_SORT_COLOR ("SongManager","UsePreferredSortColor");
|
||||||
|
static const ThemeMetric<RageColor> UNLOCK_COLOR ("SongManager","UnlockColor");
|
||||||
|
|
||||||
RString SONG_GROUP_COLOR_NAME( size_t i ) { return ssprintf("SongGroupColor%i",(int) i+1); }
|
RString SONG_GROUP_COLOR_NAME( size_t i ) { return ssprintf("SongGroupColor%i",(int) i+1); }
|
||||||
RString COURSE_GROUP_COLOR_NAME( size_t i ) { return ssprintf("CourseGroupColor%i",(int) i+1); }
|
RString COURSE_GROUP_COLOR_NAME( size_t i ) { return ssprintf("CourseGroupColor%i",(int) i+1); }
|
||||||
@@ -70,8 +71,6 @@ void SongManager::InitAll( LoadingWindow *ld )
|
|||||||
InitSongsFromDisk( ld );
|
InitSongsFromDisk( ld );
|
||||||
InitCoursesFromDisk( ld );
|
InitCoursesFromDisk( ld );
|
||||||
InitAutogenCourses();
|
InitAutogenCourses();
|
||||||
|
|
||||||
UpdatePreferredSort();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static LocalizedString RELOADING ( "SongManager", "Reloading..." );
|
static LocalizedString RELOADING ( "SongManager", "Reloading..." );
|
||||||
@@ -348,6 +347,12 @@ RageColor SongManager::GetSongColor( const Song* pSong )
|
|||||||
{
|
{
|
||||||
ASSERT( pSong );
|
ASSERT( pSong );
|
||||||
|
|
||||||
|
// Use unlock color if applicable
|
||||||
|
const UnlockEntry *pUE = UNLOCKMAN->FindSong( pSong );
|
||||||
|
if( pUE )
|
||||||
|
return UNLOCK_COLOR;
|
||||||
|
|
||||||
|
|
||||||
if( USE_PREFERRED_SORT_COLOR )
|
if( USE_PREFERRED_SORT_COLOR )
|
||||||
{
|
{
|
||||||
FOREACH_CONST( SongPointerVector, m_vPreferredSortGroups, v )
|
FOREACH_CONST( SongPointerVector, m_vPreferredSortGroups, v )
|
||||||
@@ -1307,12 +1312,15 @@ void SongManager::UpdateShuffled()
|
|||||||
|
|
||||||
void SongManager::UpdatePreferredSort()
|
void SongManager::UpdatePreferredSort()
|
||||||
{
|
{
|
||||||
|
ASSERT( UNLOCKMAN );
|
||||||
|
|
||||||
m_vPreferredSortGroups.clear();
|
m_vPreferredSortGroups.clear();
|
||||||
|
|
||||||
RString sFile = THEME->GetPathO( "SongManager", "PreferredSort.txt" );
|
RString sFile = THEME->GetPathO( "SongManager", "PreferredSort.txt" );
|
||||||
RageFile file;
|
RageFile file;
|
||||||
if( file.Open( sFile ) )
|
if( !file.Open( sFile ) )
|
||||||
{
|
return;
|
||||||
|
|
||||||
vector<Song*> vpSongs;
|
vector<Song*> vpSongs;
|
||||||
|
|
||||||
RString sLine;
|
RString sLine;
|
||||||
@@ -1342,7 +1350,28 @@ void SongManager::UpdatePreferredSort()
|
|||||||
m_vPreferredSortGroups.push_back( vpSongs );
|
m_vPreferredSortGroups.push_back( vpSongs );
|
||||||
vpSongs.clear();
|
vpSongs.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// move all unlock songs to a group at the bottom
|
||||||
|
vector<Song*> vpUnlockSongs;
|
||||||
|
FOREACH( UnlockEntry, UNLOCKMAN->m_UnlockEntries, ue )
|
||||||
|
{
|
||||||
|
if( ue->m_Type == UnlockRewardType_Song )
|
||||||
|
vpUnlockSongs.push_back( ue->m_pSong );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FOREACH( SongPointerVector, m_vPreferredSortGroups, v )
|
||||||
|
{
|
||||||
|
for( int i=v->size()-1; i>=0; i-- )
|
||||||
|
{
|
||||||
|
Song *pSong = (*v)[i];
|
||||||
|
if( find(vpUnlockSongs.begin(),vpUnlockSongs.end(),pSong) != vpUnlockSongs.end() )
|
||||||
|
{
|
||||||
|
v->erase( v->begin()+i );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_vPreferredSortGroups.push_back( vpUnlockSongs );
|
||||||
}
|
}
|
||||||
|
|
||||||
void SongManager::SortSongs()
|
void SongManager::SortSongs()
|
||||||
|
|||||||
@@ -1059,6 +1059,7 @@ int main(int argc, char* argv[])
|
|||||||
PROFILEMAN = new ProfileManager;
|
PROFILEMAN = new ProfileManager;
|
||||||
PROFILEMAN->Init(); // must load after SONGMAN
|
PROFILEMAN->Init(); // must load after SONGMAN
|
||||||
UNLOCKMAN = new UnlockManager;
|
UNLOCKMAN = new UnlockManager;
|
||||||
|
SONGMAN->UpdatePreferredSort();
|
||||||
|
|
||||||
/* This shouldn't need to be here; if it's taking long enough that this is
|
/* This shouldn't need to be here; if it's taking long enough that this is
|
||||||
* even visible, we should be fixing it, not showing a progress display. */
|
* even visible, we should be fixing it, not showing a progress display. */
|
||||||
|
|||||||
Reference in New Issue
Block a user