From d41ba9480c39f9b1a93b2046ce6a74e04c08306f Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Fri, 22 Jul 2005 05:44:54 +0000 Subject: [PATCH] more to implementation --- stepmania/src/ScreenManager.cpp | 81 +++++++++++++++++---------------- stepmania/src/ScreenManager.h | 5 -- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/stepmania/src/ScreenManager.cpp b/stepmania/src/ScreenManager.cpp index 059cee9368..7ffe135b26 100644 --- a/stepmania/src/ScreenManager.cpp +++ b/stepmania/src/ScreenManager.cpp @@ -51,7 +51,12 @@ namespace bool m_bDeleteWhenDone; ScreenMessage m_SendOnPop; }; + Actor *g_pSharedBGA; // BGA object that's persistent between screens vector g_ScreenStack; // bottommost to topmost + vector g_OverlayScreens; + + vector g_vPreparedScreens; + vector g_vPreparedBackgrounds; }; void RegisterScreenClass( const CString& sClassName, CreateScreenFn pfn ) @@ -68,7 +73,7 @@ void RegisterScreenClass( const CString& sClassName, CreateScreenFn pfn ) ScreenManager::ScreenManager() { - m_pSharedBGA = new Actor; + g_pSharedBGA = new Actor; m_bZeroNextUpdate = false; m_PopTopScreen = SM_Invalid; @@ -80,15 +85,15 @@ ScreenManager::~ScreenManager() { LOG->Trace( "ScreenManager::~ScreenManager()" ); - SAFE_DELETE( m_pSharedBGA ); + SAFE_DELETE( g_pSharedBGA ); for( unsigned i=0; iGetPathS("Common","screenshot") ); // reload overlay screens - for( unsigned i=0; iGetMetric( "Common","OverlayScreens" ); vector asOverlays; @@ -113,7 +118,7 @@ void ScreenManager::ThemeChanged() for( unsigned i=0; iRefreshCreditsMessages(); @@ -197,10 +202,10 @@ void ScreenManager::Update( float fDeltaTime ) if( pScreen ) pScreen->Update( fDeltaTime ); - m_pSharedBGA->Update( fDeltaTime ); + g_pSharedBGA->Update( fDeltaTime ); - for( unsigned i=0; iUpdate( fDeltaTime ); + for( unsigned i=0; iUpdate( fDeltaTime ); } // // Handle messages after updating. @@ -209,10 +214,10 @@ void ScreenManager::Update( float fDeltaTime ) for( unsigned i=0; iProcessMessages( fDeltaTime ); - m_pSharedBGA->ProcessMessages( fDeltaTime ); + g_pSharedBGA->ProcessMessages( fDeltaTime ); - for( unsigned i=0; iProcessMessages( fDeltaTime ); + for( unsigned i=0; iProcessMessages( fDeltaTime ); } /* The music may be started on the first update. If we're reading from a CD, @@ -271,13 +276,13 @@ void ScreenManager::Draw() if( !DISPLAY->BeginFrame() ) return; - m_pSharedBGA->Draw(); + g_pSharedBGA->Draw(); for( unsigned i=0; iDraw(); - for( unsigned i=0; iDraw(); + for( unsigned i=0; iDraw(); DISPLAY->EndFrame(); @@ -293,9 +298,9 @@ void ScreenManager::Input( const DeviceInput& DeviceI, const InputEventType type // true, it handled the input, so don't pass it further. OverlayInput could // probably be merged with Input, but that would require changing all Input // overloads, as well as all MenuLeft, etc. overloads. - for( unsigned i = 0; i < m_OverlayScreens.size(); ++i ) + for( unsigned i = 0; i < g_OverlayScreens.size(); ++i ) { - Screen *pScreen = m_OverlayScreens[i]; + Screen *pScreen = g_OverlayScreens[i]; if( pScreen->OverlayInput(DeviceI, type, GameI, MenuI, StyleI) ) return; } @@ -333,9 +338,9 @@ Screen* ScreenManager::MakeNewScreen( const CString &sScreenName ) void ScreenManager::PrepareScreen( const CString &sScreenName ) { // If the screen is already prepared, stop. - for( int i = (int)m_vPreparedScreens.size()-1; i>=0; i-- ) + for( int i = (int)g_vPreparedScreens.size()-1; i>=0; i-- ) { - Screen *&pScreen = m_vPreparedScreens[i]; + Screen *&pScreen = g_vPreparedScreens[i]; if( pScreen->GetName() == sScreenName ) return; } @@ -345,7 +350,7 @@ void ScreenManager::PrepareScreen( const CString &sScreenName ) SONGMAN->Cleanup(); Screen* pNewScreen = MakeNewScreen(sScreenName); - m_vPreparedScreens.push_back( pNewScreen ); + g_vPreparedScreens.push_back( pNewScreen ); /* Don't delete previously prepared versions of the screen's background, * and only prepare it if it's different than the current background @@ -354,10 +359,10 @@ void ScreenManager::PrepareScreen( const CString &sScreenName ) if( pNewScreen->UsesBackground() ) sNewBGA = THEME->GetPathB(sScreenName,"background"); - if( !sNewBGA.empty() && sNewBGA != m_pSharedBGA->GetName() ) + if( !sNewBGA.empty() && sNewBGA != g_pSharedBGA->GetName() ) { Actor *pNewBGA = NULL; - FOREACH( Actor*, m_vPreparedBackgrounds, a ) + FOREACH( Actor*, g_vPreparedBackgrounds, a ) { if( (*a)->GetName() == sNewBGA ) { @@ -372,7 +377,7 @@ void ScreenManager::PrepareScreen( const CString &sScreenName ) { pNewBGA = ActorUtil::MakeActor( sNewBGA ); pNewBGA->SetName( sNewBGA ); - m_vPreparedBackgrounds.push_back( pNewBGA ); + g_vPreparedBackgrounds.push_back( pNewBGA ); } } } @@ -394,12 +399,12 @@ bool ScreenManager::ConcurrentlyPrepareScreen( const CString &sScreenName, Scree void ScreenManager::DeletePreparedScreens() { - FOREACH( Screen*, m_vPreparedScreens, s ) + FOREACH( Screen*, g_vPreparedScreens, s ) SAFE_DELETE( *s ); - m_vPreparedScreens.clear(); - FOREACH( Actor*, m_vPreparedBackgrounds, a ) + g_vPreparedScreens.clear(); + FOREACH( Actor*, g_vPreparedBackgrounds, a ) SAFE_DELETE( *a ); - m_vPreparedBackgrounds.clear(); + g_vPreparedBackgrounds.clear(); TEXTUREMAN->DeleteCachedTextures(); } @@ -473,12 +478,12 @@ void ScreenManager::LoadDelayedScreen() // Find the prepped screen. // Screen* pNewScreen = NULL; - FOREACH( Screen*, m_vPreparedScreens, s ) + FOREACH( Screen*, g_vPreparedScreens, s ) { if( (*s)->GetName() == sScreenName ) { pNewScreen = *s; - m_vPreparedScreens.erase( s ); + g_vPreparedScreens.erase( s ); break; } } @@ -501,28 +506,28 @@ void ScreenManager::LoadDelayedScreen() CString sNewBGA; if( pNewScreen->UsesBackground() ) sNewBGA = THEME->GetPathB(sScreenName,"background"); - if( sNewBGA != m_pSharedBGA->GetName() ) + if( sNewBGA != g_pSharedBGA->GetName() ) { Actor *pNewBGA = NULL; if( sNewBGA.empty() ) pNewBGA = new Actor; else { - FOREACH( Actor*, m_vPreparedBackgrounds, a ) + FOREACH( Actor*, g_vPreparedBackgrounds, a ) { if( (*a)->GetName() == sNewBGA ) { pNewBGA = *a; - m_vPreparedBackgrounds.erase( a ); + g_vPreparedBackgrounds.erase( a ); break; } } } ASSERT( pNewBGA != NULL ); - SAFE_DELETE( m_pSharedBGA ); - m_pSharedBGA = pNewBGA; - m_pSharedBGA->PlayCommand( "On" ); + SAFE_DELETE( g_pSharedBGA ); + g_pSharedBGA = pNewBGA; + g_pSharedBGA->PlayCommand( "On" ); } bool bIsOnSystemMenu = pNewScreen->GetScreenType() == system_menu; @@ -653,7 +658,7 @@ void ScreenManager::PlayScreenshotSound() void ScreenManager::PlaySharedBackgroundOffCommand() { - m_pSharedBGA->PlayCommand("Off"); + g_pSharedBGA->PlayCommand("Off"); } // lua start diff --git a/stepmania/src/ScreenManager.h b/stepmania/src/ScreenManager.h index 650faec73a..bc52ab1dcc 100644 --- a/stepmania/src/ScreenManager.h +++ b/stepmania/src/ScreenManager.h @@ -65,14 +65,9 @@ public: void PlaySharedBackgroundOffCommand(); void ZeroNextUpdate(); private: - vector m_OverlayScreens; Screen *m_pInputFocus; // NULL = top of m_ScreenStack - Actor *m_pSharedBGA; // BGA object that's persistent between screens - CString m_sSystemMessage; - vector m_vPreparedScreens; - vector m_vPreparedBackgrounds; // Screen loads, removals, and concurrent prepares are delayed until the next update. CString m_sDelayedScreen;