diff --git a/stepmania/src/ScreenManager.cpp b/stepmania/src/ScreenManager.cpp index 529ef445ee..4e8a953713 100644 --- a/stepmania/src/ScreenManager.cpp +++ b/stepmania/src/ScreenManager.cpp @@ -99,7 +99,7 @@ void ScreenManager::ThemeChanged() m_SystemLayer = new ScreenSystemLayer; m_SystemLayer->Init(); m_SystemLayer->ReloadCreditsText(); - m_SystemLayer->RefreshCreditsMessages(); + this->RefreshCreditsMessages(); } void ScreenManager::EmptyDeleteQueue() @@ -533,7 +533,7 @@ void ScreenManager::SystemMessageNoAnimate( const CString &sMessage ) void ScreenManager::RefreshCreditsMessages() { - m_SystemLayer->RefreshCreditsMessages(); + MESSAGEMAN->Broadcast( "RefreshCreditText" ); /* This is called when GAMESTATE->m_bSideIsJoined changes. */ CString joined; diff --git a/stepmania/src/ScreenSystemLayer.cpp b/stepmania/src/ScreenSystemLayer.cpp index 8eaa939cc6..8209c75670 100644 --- a/stepmania/src/ScreenSystemLayer.cpp +++ b/stepmania/src/ScreenSystemLayer.cpp @@ -31,6 +31,12 @@ //REGISTER_SCREEN_CLASS( ScreenSystemLayer ); ScreenSystemLayer::ScreenSystemLayer() : Screen("ScreenSystemLayer") { + MESSAGEMAN->Subscribe( this, "RefreshCreditText" ); +} + +ScreenSystemLayer::~ScreenSystemLayer() +{ + MESSAGEMAN->Unsubscribe( this, "RefreshCreditText" ); } void ScreenSystemLayer::Init() @@ -210,11 +216,16 @@ CString ScreenSystemLayer::GetCreditsMessage( PlayerNumber pn ) const } } -void ScreenSystemLayer::RefreshCreditsMessages() +void ScreenSystemLayer::HandleMessage( const CString &sMessage ) { - // update joined - FOREACH_PlayerNumber( pn ) - m_textCredits[pn].SetText( GetCreditsMessage(pn) ); + if( sMessage == "RefreshCreditText" ) + { + // update joined + FOREACH_PlayerNumber( pn ) + m_textCredits[pn].SetText( GetCreditsMessage(pn) ); + } + + Screen::HandleMessage( sMessage ); } void ScreenSystemLayer::AddTimestampLine( const CString &txt, const RageColor &color ) diff --git a/stepmania/src/ScreenSystemLayer.h b/stepmania/src/ScreenSystemLayer.h index b808e6c4e7..47014d38e3 100644 --- a/stepmania/src/ScreenSystemLayer.h +++ b/stepmania/src/ScreenSystemLayer.h @@ -13,11 +13,13 @@ class ScreenSystemLayer : public Screen { public: ScreenSystemLayer(); + virtual ~ScreenSystemLayer(); virtual void Init(); + void HandleMessage( const CString &sCommandName ); + void SystemMessage( const CString &sMessage ); void SystemMessageNoAnimate( const CString &sMessage ); void ReloadCreditsText(); - void RefreshCreditsMessages(); void Update( float fDeltaTime ); private: