Avoid refreshing note data during gameplay.

This commit is contained in:
Glenn Maynard
2003-09-12 04:18:43 +00:00
parent 1c97485e4b
commit 38855e3d91
3 changed files with 20 additions and 3 deletions
+17 -3
View File
@@ -33,6 +33,7 @@ const CString GLOBAL_BASE_NOTESKIN_DIR = NOTESKINS_DIR + "common" SLASH "default
NoteSkinManager::NoteSkinManager()
{
m_CurGame = GAME_INVALID;
}
NoteSkinManager::~NoteSkinManager()
@@ -41,6 +42,10 @@ NoteSkinManager::~NoteSkinManager()
void NoteSkinManager::RefreshNoteSkinData( Game game )
{
/* Reload even if we don't need to, so exiting out of the menus refreshes the note
* skin list (so you don't have to restart to see new noteskins). */
m_CurGame = GAMESTATE->m_CurGame;
GameDef* pGameDef = GAMEMAN->GetGameDefForGame( game );
CString sBaseSkinFolder = NOTESKINS_DIR + pGameDef->m_szName + SLASH;
@@ -97,7 +102,17 @@ void NoteSkinManager::LoadNoteSkinData( CString sNoteSkinName, NoteSkinData& dat
void NoteSkinManager::GetNoteSkinNames( CStringArray &AddTo )
{
GetNoteSkinNames( GAMESTATE->m_CurGame, AddTo );
/* If the skin data for the current game isn't already load it, load it now. */
if( m_CurGame != GAMESTATE->m_CurGame )
RefreshNoteSkinData( GAMESTATE->m_CurGame );
/* 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 )
{
AddTo.push_back( iter->second.sName );
}
}
void NoteSkinManager::GetNoteSkinNames( Game game, CStringArray &AddTo )
@@ -105,8 +120,7 @@ void NoteSkinManager::GetNoteSkinNames( Game game, CStringArray &AddTo )
RefreshNoteSkinData( game );
for( map<CString,NoteSkinData>::const_iterator iter = m_mapNameToData.begin();
iter != m_mapNameToData.end();
++iter )
iter != m_mapNameToData.end(); ++iter )
{
AddTo.push_back( iter->second.sName );
}