diff --git a/stepmania/src/ScreenStage.cpp b/stepmania/src/ScreenStage.cpp index a86a05b330..43d3c4ba79 100644 --- a/stepmania/src/ScreenStage.cpp +++ b/stepmania/src/ScreenStage.cpp @@ -31,6 +31,10 @@ ScreenStage::ScreenStage( CString sClassName ) : Screen( sClassName ) LIGHTSMAN->SetLightsMode( LIGHTSMODE_STAGE ); + m_Background.LoadFromAniDir( THEME->GetPathToB(m_sName + " "+GAMESTATE->GetStageText()) ); + m_Background.SetDrawOrder( DRAW_ORDER_BEFORE_EVERYTHING ); + this->AddChild( &m_Background ); + m_Overlay.SetName( "Overlay" ); m_Overlay.LoadFromAniDir( THEME->GetPathToB(m_sName + " overlay")); ON_COMMAND( m_Overlay ); @@ -49,6 +53,9 @@ ScreenStage::ScreenStage( CString sClassName ) : Screen( sClassName ) m_Back.SetDrawOrder( DRAW_ORDER_TRANSITIONS ); this->AddChild( &m_Back ); + /* Prep the new screen once m_In is complete. */ + this->PostScreenMessage( SM_PrepScreen, m_Background.GetLengthSeconds() ); + FOREACH_PlayerNumber(p) { Character* pChar = GAMESTATE->m_pCurCharacters[p]; @@ -81,11 +88,13 @@ ScreenStage::ScreenStage( CString sClassName ) : Screen( sClassName ) SET_XY_AND_ON_COMMAND( m_SongTitle ); if ( SHOW_BANNER ) + { if( GAMESTATE->m_pCurSong && GAMESTATE->m_pCurSong->HasBanner() ) { m_Banner.LoadFromSong( GAMESTATE->m_pCurSong ); this->AddChild( &m_Banner ); } + } m_Banner.SetName("Banner"); SET_XY( m_Banner ); ON_COMMAND(m_Banner); @@ -115,7 +124,7 @@ void ScreenStage::HandleScreenMessage( const ScreenMessage SM ) OFF_COMMAND( m_SongTitle ); OFF_COMMAND( m_Artist ); OFF_COMMAND( m_Banner ); - SCREENMAN->PlaySharedBackgroundOffCommand(); + OFF_COMMAND( m_Background ); this->PostScreenMessage( SM_GoToNextScreen, this->GetTweenTimeLeft() ); break; @@ -131,11 +140,6 @@ void ScreenStage::HandleScreenMessage( const ScreenMessage SM ) void ScreenStage::Update( float fDeltaTime ) { - // The shared BGA isn't loaded until after the screen is showing. It is ready - // to access by the time of the first update. - if( IsFirstUpdate() ) - this->PostScreenMessage( SM_PrepScreen, SCREENMAN->m_pSharedBGA->GetLengthSeconds() ); - if( m_bZeroDeltaOnNextUpdate ) { m_bZeroDeltaOnNextUpdate = false; diff --git a/stepmania/src/ScreenStage.h b/stepmania/src/ScreenStage.h index 0e21913ed5..828e007011 100644 --- a/stepmania/src/ScreenStage.h +++ b/stepmania/src/ScreenStage.h @@ -19,9 +19,12 @@ public: virtual void Update( float fDeltaTime ); virtual void MenuBack( PlayerNumber pn ); + virtual bool UsesBackground() const { return false; } + private: - Transition m_In, m_Out, m_Back; - BGAnimation m_Overlay; // overlays all elements except bitmaptexts + Transition m_In, m_Out, m_Back; + BGAnimation m_Background; + BGAnimation m_Overlay; // overlays all elements except bitmaptexts Banner m_Banner; BitmapText m_SongTitle; BitmapText m_Artist;