don't reload note skin when entering play mode in the editor

This commit is contained in:
Glenn Maynard
2005-01-15 03:26:38 +00:00
parent 0efe680c70
commit 4478914862
4 changed files with 35 additions and 6 deletions
+31 -2
View File
@@ -51,6 +51,8 @@ void NoteField::Unload()
void NoteField::CacheNoteSkin( CString skin )
{
skin.ToLower();
if( m_NoteDisplays.find(skin) != m_NoteDisplays.end() )
return;
@@ -64,13 +66,38 @@ void NoteField::CacheNoteSkin( CString skin )
m_NoteDisplays[ skin ] = nd;
}
void NoteField::CacheAllUsedNoteSkins()
void NoteField::CacheAllUsedNoteSkins( bool bDeleteUnused )
{
/* Cache note skins. */
vector<CString> skins;
GAMESTATE->GetAllUsedNoteSkins( skins );
for( unsigned i=0; i < skins.size(); ++i )
CacheNoteSkin( skins[i] );
if( bDeleteUnused )
{
set<CString> setToDelete;
for( map<CString, NoteDisplayCols *>::iterator it = m_NoteDisplays.begin();
it != m_NoteDisplays.end(); ++it )
{
setToDelete.insert( it->first );
}
for( unsigned i=0; i < skins.size(); ++i )
{
CString sSkin = skins[i];
sSkin.ToLower();
setToDelete.erase( sSkin );
}
/* Free note skins that are no longer used. */
for( set<CString>::iterator it = setToDelete.begin(); it != setToDelete.end(); ++it )
{
NoteDisplayCols *pNoteDisplay = m_NoteDisplays[*it];
delete pNoteDisplay;
m_NoteDisplays.erase( *it );
}
}
}
void NoteField::Load(
@@ -98,7 +125,9 @@ void NoteField::Load(
this->CopyAll( *pNoteData );
ASSERT( GetNumTracks() == GAMESTATE->GetCurrentStyle()->m_iColsPerPlayer );
CacheAllUsedNoteSkins();
/* If we're in gameplay, we havn't applied course modifiers yet, so we don't know what
* note skins we'll need. Don't delete unused skins yet. */
CacheAllUsedNoteSkins( false );
RefreshBeatToNoteSkin();
}
+1 -1
View File
@@ -36,7 +36,7 @@ public:
float m_fBeginMarker, m_fEndMarker; // only used with MODE_EDIT
void FadeToFail();
void CacheAllUsedNoteSkins();
void CacheAllUsedNoteSkins( bool bDeleteUnused );
void CacheNoteSkin( CString skin );
void Step( int iCol, TapNoteScore score );
+1 -1
View File
@@ -54,7 +54,7 @@ public:
static float GetMaxStepDistanceSeconds();
void CacheAllUsedNoteSkins() { m_pNoteField->CacheAllUsedNoteSkins(); }
void CacheAllUsedNoteSkins( bool bDeleteUnused ) { m_pNoteField->CacheAllUsedNoteSkins(bDeleteUnused); }
NoteDataWithScoring m_NoteData;
+2 -2
View File
@@ -866,8 +866,8 @@ void ScreenGameplay::SetupSong( PlayerNumber p, int iSongIndex )
GAMESTATE->m_SongOptions.FromString( a.sModifier );
}
/* Now that course options are applied, load any needed note skins. */
m_Player[p].CacheAllUsedNoteSkins();
/* Now that course options are applied, load any needed note skins and unload old ones. */
m_Player[p].CacheAllUsedNoteSkins( true );
/* Update attack bOn flags. */
GAMESTATE->Update(0);