Use range-based for loops in ScreenManager.cpp

Modernizing some of the old code - improve reliability by replacing traditional iterator loops where they are not needed.

Update ScreenManager.cpp
This commit is contained in:
sukibaby
2024-05-08 01:55:51 -07:00
committed by teejusb
parent f7a7252dbb
commit eb8b428d0f
+20 -22
View File
@@ -266,15 +266,17 @@ ScreenManager::~ScreenManager()
LOG->UnmapLog("ScreenManager::TopScreen");
SAFE_DELETE(g_pSharedBGA);
for( unsigned i=0; i<g_ScreenStack.size(); i++ )
for (LoadedScreen& screen : g_ScreenStack)
{
if( g_ScreenStack[i].m_bDeleteWhenDone )
SAFE_DELETE( g_ScreenStack[i].m_pScreen );
if (screen.m_bDeleteWhenDone)
SAFE_DELETE(screen.m_pScreen);
}
g_ScreenStack.clear();
DeletePreparedScreens();
for( unsigned i=0; i<g_OverlayScreens.size(); i++ )
SAFE_DELETE( g_OverlayScreens[i] );
for (Screen* overlayScreen : g_OverlayScreens)
{
SAFE_DELETE(overlayScreen);
}
g_OverlayScreens.clear();
// Unregister with Lua.
@@ -306,17 +308,17 @@ void ScreenManager::ThemeChanged()
void ScreenManager::ReloadOverlayScreens()
{
// unload overlay screens
for( unsigned i=0; i<g_OverlayScreens.size(); i++ )
SAFE_DELETE( g_OverlayScreens[i] );
for (Screen* screen : g_OverlayScreens)
SAFE_DELETE(screen);
g_OverlayScreens.clear();
// reload overlay screens
RString sOverlays = THEME->GetMetric("Common", "OverlayScreens");
std::vector<RString> asOverlays;
split(sOverlays, ",", asOverlays);
for( unsigned i=0; i<asOverlays.size(); i++ )
for (const RString& overlay : asOverlays)
{
Screen *pScreen = MakeNewScreen( asOverlays[i] );
Screen* pScreen = MakeNewScreen(overlay);
if (pScreen)
{
LuaThreadVariable var2("LoadingScreen", pScreen->GetName());
@@ -467,15 +469,13 @@ void ScreenManager::Update( float fDeltaTime )
}
// Update screens.
{
for( unsigned i=0; i<g_ScreenStack.size(); i++ )
g_ScreenStack[i].m_pScreen->Update( fDeltaTime );
for (const LoadedScreen& screen : g_ScreenStack)
screen.m_pScreen->Update(fDeltaTime);
g_pSharedBGA->Update(fDeltaTime);
for( unsigned i=0; i<g_OverlayScreens.size(); i++ )
g_OverlayScreens[i]->Update( fDeltaTime );
}
for (Screen* overlay : g_OverlayScreens)
overlay->Update(fDeltaTime);
/* The music may be started on the first update. If we're reading from a CD,
* it might not start immediately. Make sure we start playing the sound before
@@ -509,12 +509,11 @@ void ScreenManager::Draw()
g_pSharedBGA->Draw();
DISPLAY->CameraPopMatrix();
for( unsigned i=0; i<g_ScreenStack.size(); i++ ) // Draw all screens bottom to top
g_ScreenStack[i].m_pScreen->Draw();
for( unsigned i=0; i<g_OverlayScreens.size(); i++ )
g_OverlayScreens[i]->Draw();
for (const LoadedScreen& screen : g_ScreenStack) // Draw all screens bottom to top
screen.m_pScreen->Draw();
for (Screen* overlayScreen : g_OverlayScreens)
overlayScreen->Draw();
DISPLAY->EndFrame();
}
@@ -527,9 +526,8 @@ void ScreenManager::Input( const InputEventPlus &input )
// First, give overlay screens a shot at the input. If Input returns
// true, it handled the input, so don't pass it further.
for( unsigned i = 0; i < g_OverlayScreens.size(); ++i )
for (Screen* pScreen : g_OverlayScreens)
{
Screen *pScreen = g_OverlayScreens[i];
bool handled = pScreen->Input(input);
// Pass input to the screen and lua. Contention shouldn't be a problem
// because anybody setting an input callback is probably doing it to