diff --git a/src/SongManager.cpp b/src/SongManager.cpp index 5ee280d66c..cc0785f75e 100644 --- a/src/SongManager.cpp +++ b/src/SongManager.cpp @@ -90,6 +90,7 @@ void SongManager::InitAll( LoadingWindow *ld ) m_GroupsToNeverCache.insert(*group); } InitSongsFromDisk( ld ); + SAFE_DELETE(ld); // Destroy this before the scoremanager loading window is created } static LocalizedString RELOADING ( "SongManager", "Reloading..." ); @@ -341,6 +342,12 @@ void Playlist::LoadFromNode(const XNode* node) { for (size_t i = 0; i < chartlist.size(); ++i) chartrates.emplace_back(chartlist[i].rate); + + vector playlistgroup; + for (auto& n : chartlist) + playlistgroup.emplace_back(SONGMAN->GetSongByChartkey(n.key)); + + SONGMAN->groupderps[name] = playlistgroup; } vector Playlist::GetKeys() { @@ -366,6 +373,9 @@ void SongManager::AddKeyedPointers(Song* new_song) { } } } + + groupderps[new_song->m_sGroupName].emplace_back(new_song); + SongUtil::SortSongPointerArrayByTitle(groupderps[new_song->m_sGroupName]); } // Get a steps pointer given a chartkey, the assumption here is we want _a_ matching steps, not the original steps - mina @@ -782,7 +792,7 @@ RageColor SongManager::GetSongGroupColor( const RString &sSongGroup ) const { for( unsigned i=0; i allplaylists; string activeplaylist; string playlistcourse; + + map> groupderps; protected: void LoadStepManiaSongDir( RString sDir, LoadingWindow *ld ); void LoadDWISongDir( const RString &sDir );