simplify NoteSkinManager::GetNoteSkinNames, add bFilterDefault

This commit is contained in:
Glenn Maynard
2004-09-06 03:19:15 +00:00
parent e717cc88f0
commit d6ffc80ba2
2 changed files with 23 additions and 24 deletions
+22 -23
View File
@@ -102,16 +102,29 @@ void NoteSkinManager::LoadNoteSkinDataRecursive( const CString &sNoteSkinName, N
void NoteSkinManager::GetNoteSkinNames( CStringArray &AddTo )
{
/* If the skin data for the current game isn't already load it, load it now. */
if( m_pCurGame != GAMESTATE->m_pCurGame )
RefreshNoteSkinData( GAMESTATE->m_pCurGame );
GetNoteSkinNames( GAMESTATE->m_pCurGame, AddTo );
}
/* Don't call GetNoteSkinNames below, since we don't want to call RefreshNoteSkinData; it's
* slow. */
for( map<CString,NoteSkinData>::const_iterator iter = m_mapNameToData.begin();
iter != m_mapNameToData.end(); ++iter )
void NoteSkinManager::GetNoteSkinNames( const Game* pGame, CStringArray &AddTo, bool bFilterDefault )
{
if( pGame == m_pCurGame )
{
AddTo.push_back( iter->second.sName );
/* Faster: */
for( map<CString,NoteSkinData>::const_iterator iter = m_mapNameToData.begin();
iter != m_mapNameToData.end(); ++iter )
{
AddTo.push_back( iter->second.sName );
}
}
else
{
CString sBaseSkinFolder = NOTESKINS_DIR + pGame->m_szName + "/";
GetDirListing( sBaseSkinFolder + "*", AddTo, true );
// strip out "CVS"
for( int i=AddTo.size()-1; i>=0; i-- )
if( 0 == stricmp("cvs", AddTo[i]) )
AddTo.erase( AddTo.begin()+i, AddTo.begin()+i+1 );
}
/* Move "default" to the front if it exists. */
@@ -120,26 +133,12 @@ void NoteSkinManager::GetNoteSkinNames( CStringArray &AddTo )
if( iter != AddTo.end() )
{
AddTo.erase( iter );
if( !PREFSMAN->m_bHideDefaultNoteSkin )
if( !bFilterDefault || !PREFSMAN->m_bHideDefaultNoteSkin )
AddTo.insert( AddTo.begin(), "default" );
}
}
}
void NoteSkinManager::GetNoteSkinNames( const Game* game, CStringArray &AddTo )
{
RefreshNoteSkinData( game );
for( map<CString,NoteSkinData>::const_iterator iter = m_mapNameToData.begin();
iter != m_mapNameToData.end(); ++iter )
{
AddTo.push_back( iter->second.sName );
}
/* Put the note skins back. */
RefreshNoteSkinData( GAMESTATE->m_pCurGame );
}
bool NoteSkinManager::DoesNoteSkinExist( CString sSkinName )
{