use SongID in DisabledSongs logic
This commit is contained in:
@@ -92,7 +92,7 @@ ThemeMetric<RString> DEFAULT_SONG ("GameState","DefaultSong");
|
|||||||
Song* GameState::GetDefaultSong() const
|
Song* GameState::GetDefaultSong() const
|
||||||
{
|
{
|
||||||
SongID sid;
|
SongID sid;
|
||||||
sid.LoadFromDir( DEFAULT_SONG );
|
sid.FromString( DEFAULT_SONG );
|
||||||
return sid.ToSong();
|
return sid.ToSong();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -908,21 +908,20 @@ void SongManager::SetPreferences()
|
|||||||
|
|
||||||
void SongManager::SaveEnabledSongsToPref()
|
void SongManager::SaveEnabledSongsToPref()
|
||||||
{
|
{
|
||||||
vector<RString> asDisabledSongs;
|
vector<RString> vsDisabledSongs;
|
||||||
split( g_sDisabledSongs, ";", asDisabledSongs, true );
|
|
||||||
|
// Intentionally drop disabled song entries for songs that aren't currently loaded.
|
||||||
|
|
||||||
const vector<Song*> &apSongs = SONGMAN->GetSongs();
|
const vector<Song*> &apSongs = SONGMAN->GetSongs();
|
||||||
FOREACH_CONST( Song *, apSongs, s )
|
FOREACH_CONST( Song *, apSongs, s )
|
||||||
{
|
{
|
||||||
Song *pSong = (*s);
|
Song *pSong = (*s);
|
||||||
bool bEnabled = pSong->GetEnabled();
|
SongID sid;
|
||||||
vector<RString>::iterator it = find( asDisabledSongs.begin(), asDisabledSongs.end(), pSong->GetSongDir() );
|
sid.FromSong( pSong );
|
||||||
if( bEnabled && it == asDisabledSongs.end() )
|
if( !pSong->GetEnabled() )
|
||||||
asDisabledSongs.push_back( pSong->GetSongDir() );
|
vsDisabledSongs.push_back( sid.ToString() );
|
||||||
else if( !bEnabled && it != asDisabledSongs.end() )
|
|
||||||
asDisabledSongs.erase( it );
|
|
||||||
}
|
}
|
||||||
g_sDisabledSongs.Set( join(";", asDisabledSongs) );
|
g_sDisabledSongs.Set( join(";", vsDisabledSongs) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void SongManager::LoadEnabledSongsFromPref()
|
void SongManager::LoadEnabledSongsFromPref()
|
||||||
@@ -935,7 +934,9 @@ void SongManager::LoadEnabledSongsFromPref()
|
|||||||
|
|
||||||
FOREACH_CONST( RString, asDisabledSongs, s )
|
FOREACH_CONST( RString, asDisabledSongs, s )
|
||||||
{
|
{
|
||||||
Song *pSong = this->FindSong( *s );
|
SongID sid;
|
||||||
|
sid.FromString( *s );
|
||||||
|
Song *pSong = sid.ToSong();
|
||||||
if( pSong )
|
if( pSong )
|
||||||
pSong->SetEnabled( false );
|
pSong->SetEnabled( false );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ public:
|
|||||||
|
|
||||||
XNode* CreateNode() const;
|
XNode* CreateNode() const;
|
||||||
void LoadFromNode( const XNode* pNode );
|
void LoadFromNode( const XNode* pNode );
|
||||||
void LoadFromDir( RString _sDir ) { sDir = _sDir; }
|
void FromString( RString _sDir ) { sDir = _sDir; }
|
||||||
RString ToString() const;
|
RString ToString() const;
|
||||||
bool IsValid() const;
|
bool IsValid() const;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user