split out GrabPreparedActors
This commit is contained in:
@@ -173,25 +173,34 @@ namespace
|
|||||||
SONGMAN->Cleanup();
|
SONGMAN->Cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Called when changing screen groups. Delete all prepared screens,
|
/* Take ownership of all screens and backgrounds that are owned by
|
||||||
* reset the screen group and list of persistant screens. */
|
* us (this excludes screens where m_bDeleteWhenDone is false).
|
||||||
void DeletePreparedScreens()
|
* Clear the prepared lists. The contents of apOut must be
|
||||||
|
* freed by the caller. */
|
||||||
|
void GrabPreparedActors( vector<Actor*> &apOut )
|
||||||
{
|
{
|
||||||
BeforeDeleteScreen();
|
|
||||||
|
|
||||||
FOREACH( LoadedScreen, g_vPreparedScreens, s )
|
FOREACH( LoadedScreen, g_vPreparedScreens, s )
|
||||||
{
|
|
||||||
if( s->m_bDeleteWhenDone )
|
if( s->m_bDeleteWhenDone )
|
||||||
SAFE_DELETE( s->m_pScreen );
|
apOut.push_back( s->m_pScreen );
|
||||||
}
|
|
||||||
g_vPreparedScreens.clear();
|
g_vPreparedScreens.clear();
|
||||||
FOREACH( Actor*, g_vPreparedBackgrounds, a )
|
FOREACH( Actor*, g_vPreparedBackgrounds, a )
|
||||||
SAFE_DELETE( *a );
|
apOut.push_back( *a );
|
||||||
g_vPreparedBackgrounds.clear();
|
g_vPreparedBackgrounds.clear();
|
||||||
|
|
||||||
g_setGroupedScreens.clear();
|
g_setGroupedScreens.clear();
|
||||||
g_setPersistantScreens.clear();
|
g_setPersistantScreens.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Called when changing screen groups. Delete all prepared screens,
|
||||||
|
* reset the screen group and list of persistant screens. */
|
||||||
|
void DeletePreparedScreens()
|
||||||
|
{
|
||||||
|
vector<Actor*> apActorsToDelete;
|
||||||
|
GrabPreparedActors( apActorsToDelete );
|
||||||
|
|
||||||
|
BeforeDeleteScreen();
|
||||||
|
FOREACH( Actor*, apActorsToDelete, a )
|
||||||
|
SAFE_DELETE( *a );
|
||||||
AfterDeleteScreen();
|
AfterDeleteScreen();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user