Good variety of loops.

This commit is contained in:
Jason Felds
2013-05-01 22:51:50 -04:00
parent 33ca2a3410
commit d67a0fd1de
+27 -32
View File
@@ -141,19 +141,16 @@ namespace ScreenManagerUtil
bool ScreenIsPrepped( const RString &sScreenName ) bool ScreenIsPrepped( const RString &sScreenName )
{ {
FOREACH( LoadedScreen, g_vPreparedScreens, s ) return std::any_of(g_vPreparedScreens.begin(), g_vPreparedScreens.end(), [&](LoadedScreen const &s) {
{ return s.m_pScreen->GetName() == sScreenName;
if( s->m_pScreen->GetName() == sScreenName ) });
return true;
}
return false;
} }
/* If the named screen is loaded, remove it from the prepared list and /* If the named screen is loaded, remove it from the prepared list and
* return it in ls. */ * return it in ls. */
bool GetPreppedScreen( const RString &sScreenName, LoadedScreen &ls ) bool GetPreppedScreen( const RString &sScreenName, LoadedScreen &ls )
{ {
FOREACH( LoadedScreen, g_vPreparedScreens, s ) for (vector<LoadedScreen>::iterator s = g_vPreparedScreens.begin(); s != g_vPreparedScreens.end(); ++s)
{ {
if( s->m_pScreen->GetName() == sScreenName ) if( s->m_pScreen->GetName() == sScreenName )
{ {
@@ -190,12 +187,12 @@ namespace ScreenManagerUtil
* freed by the caller. */ * freed by the caller. */
void GrabPreparedActors( vector<Actor*> &apOut ) void GrabPreparedActors( vector<Actor*> &apOut )
{ {
FOREACH( LoadedScreen, g_vPreparedScreens, s ) for (LoadedScreen const &s : g_vPreparedScreens)
if( s->m_bDeleteWhenDone ) if( s.m_bDeleteWhenDone )
apOut.push_back( s->m_pScreen ); apOut.push_back( s.m_pScreen );
g_vPreparedScreens.clear(); g_vPreparedScreens.clear();
FOREACH( Actor*, g_vPreparedBackgrounds, a ) for (Actor *a : g_vPreparedBackgrounds)
apOut.push_back( *a ); apOut.push_back( a );
g_vPreparedBackgrounds.clear(); g_vPreparedBackgrounds.clear();
g_setGroupedScreens.clear(); g_setGroupedScreens.clear();
@@ -210,8 +207,10 @@ namespace ScreenManagerUtil
GrabPreparedActors( apActorsToDelete ); GrabPreparedActors( apActorsToDelete );
BeforeDeleteScreen(); BeforeDeleteScreen();
FOREACH( Actor*, apActorsToDelete, a ) for (Actor *a : apActorsToDelete)
SAFE_DELETE( *a ); {
SAFE_DELETE( a );
}
AfterDeleteScreen(); AfterDeleteScreen();
} }
}; };
@@ -346,22 +345,16 @@ Screen *ScreenManager::GetScreen( int iPosition )
bool ScreenManager::AllowOperatorMenuButton() const bool ScreenManager::AllowOperatorMenuButton() const
{ {
FOREACH( LoadedScreen, g_ScreenStack, s ) return std::all_of(g_ScreenStack.begin(), g_ScreenStack.end(), [](LoadedScreen const &s) {
{ return s.m_pScreen->AllowOperatorMenuButton();
if( !s->m_pScreen->AllowOperatorMenuButton() ) });
return false;
}
return true;
} }
bool ScreenManager::IsStackedScreen( const Screen *pScreen ) const bool ScreenManager::IsStackedScreen( const Screen *pScreen ) const
{ {
// True if the screen is in the screen stack, but not the first. return std::any_of(g_ScreenStack.begin() + 1, g_ScreenStack.end(), [&](LoadedScreen const &s) {
for( unsigned i = 1; i < g_ScreenStack.size(); ++i ) return s.m_pScreen == pScreen;
if( g_ScreenStack[i].m_pScreen == pScreen ) });
return true;
return false;
} }
/* Pop the top screen off the stack, sending SM_LoseFocus messages and /* Pop the top screen off the stack, sending SM_LoseFocus messages and
@@ -569,11 +562,11 @@ void ScreenManager::PrepareScreen( const RString &sScreenName )
if( !sNewBGA.empty() && sNewBGA != g_pSharedBGA->GetName() ) if( !sNewBGA.empty() && sNewBGA != g_pSharedBGA->GetName() )
{ {
Actor *pNewBGA = NULL; Actor *pNewBGA = NULL;
FOREACH( Actor*, g_vPreparedBackgrounds, a ) for (Actor *a : g_vPreparedBackgrounds)
{ {
if( (*a)->GetName() == sNewBGA ) if( a->GetName() == sNewBGA )
{ {
pNewBGA = *a; pNewBGA = a;
break; break;
} }
} }
@@ -646,7 +639,7 @@ bool ScreenManager::ActivatePreparedScreenAndBackground( const RString &sScreenN
} }
else else
{ {
FOREACH( Actor*, g_vPreparedBackgrounds, a ) for (vector<Actor *>::iterator a = g_vPreparedBackgrounds.begin(); a != g_vPreparedBackgrounds.end(); ++a)
{ {
if( (*a)->GetName() == sNewBGA ) if( (*a)->GetName() == sNewBGA )
{ {
@@ -722,8 +715,10 @@ void ScreenManager::LoadDelayedScreen()
if( !apActorsToDelete.empty() ) if( !apActorsToDelete.empty() )
{ {
BeforeDeleteScreen(); BeforeDeleteScreen();
FOREACH( Actor*, apActorsToDelete, a ) for (Actor *a : apActorsToDelete)
SAFE_DELETE( *a ); {
SAFE_DELETE( a );
}
AfterDeleteScreen(); AfterDeleteScreen();
} }