From 9c5a4658f2209c1a4771b2fae28e2d5a585e679e Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Fri, 22 Feb 2008 01:19:47 +0000 Subject: [PATCH] use SongID in DisabledSongs logic --- stepmania/src/GameState.cpp | 2 +- stepmania/src/SongManager.cpp | 21 +++++++++++---------- stepmania/src/SongUtil.h | 2 +- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index a2a5e68940..608d24ab94 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -92,7 +92,7 @@ ThemeMetric DEFAULT_SONG ("GameState","DefaultSong"); Song* GameState::GetDefaultSong() const { SongID sid; - sid.LoadFromDir( DEFAULT_SONG ); + sid.FromString( DEFAULT_SONG ); return sid.ToSong(); } diff --git a/stepmania/src/SongManager.cpp b/stepmania/src/SongManager.cpp index a5247e2f34..5c54d10f47 100644 --- a/stepmania/src/SongManager.cpp +++ b/stepmania/src/SongManager.cpp @@ -908,21 +908,20 @@ void SongManager::SetPreferences() void SongManager::SaveEnabledSongsToPref() { - vector asDisabledSongs; - split( g_sDisabledSongs, ";", asDisabledSongs, true ); + vector vsDisabledSongs; + + // Intentionally drop disabled song entries for songs that aren't currently loaded. const vector &apSongs = SONGMAN->GetSongs(); FOREACH_CONST( Song *, apSongs, s ) { Song *pSong = (*s); - bool bEnabled = pSong->GetEnabled(); - vector::iterator it = find( asDisabledSongs.begin(), asDisabledSongs.end(), pSong->GetSongDir() ); - if( bEnabled && it == asDisabledSongs.end() ) - asDisabledSongs.push_back( pSong->GetSongDir() ); - else if( !bEnabled && it != asDisabledSongs.end() ) - asDisabledSongs.erase( it ); + SongID sid; + sid.FromSong( pSong ); + if( !pSong->GetEnabled() ) + vsDisabledSongs.push_back( sid.ToString() ); } - g_sDisabledSongs.Set( join(";", asDisabledSongs) ); + g_sDisabledSongs.Set( join(";", vsDisabledSongs) ); } void SongManager::LoadEnabledSongsFromPref() @@ -935,7 +934,9 @@ void SongManager::LoadEnabledSongsFromPref() FOREACH_CONST( RString, asDisabledSongs, s ) { - Song *pSong = this->FindSong( *s ); + SongID sid; + sid.FromString( *s ); + Song *pSong = sid.ToSong(); if( pSong ) pSong->SetEnabled( false ); } diff --git a/stepmania/src/SongUtil.h b/stepmania/src/SongUtil.h index fdb0b3f003..7d2468861c 100644 --- a/stepmania/src/SongUtil.h +++ b/stepmania/src/SongUtil.h @@ -138,7 +138,7 @@ public: XNode* CreateNode() const; void LoadFromNode( const XNode* pNode ); - void LoadFromDir( RString _sDir ) { sDir = _sDir; } + void FromString( RString _sDir ) { sDir = _sDir; } RString ToString() const; bool IsValid() const; };