diff --git a/stepmania/src/MessageManager.cpp b/stepmania/src/MessageManager.cpp index 8a720a69cf..f97f1559e5 100644 --- a/stepmania/src/MessageManager.cpp +++ b/stepmania/src/MessageManager.cpp @@ -218,6 +218,12 @@ void MessageManager::Broadcast( MessageID m ) const Broadcast( MessageIDToString(m) ); } +bool MessageManager::IsSubscribedToMessage( IMessageSubscriber* pSubscriber, const RString &sMessage ) const +{ + SubscribersSet& subs = g_MessageToSubscribers[sMessage]; + return subs.find( pSubscriber ) != subs.end(); +} + void IMessageSubscriber::ClearMessages( const RString sMessage ) { } diff --git a/stepmania/src/MessageManager.h b/stepmania/src/MessageManager.h index 1ef772e8c2..f36f8a6572 100644 --- a/stepmania/src/MessageManager.h +++ b/stepmania/src/MessageManager.h @@ -159,8 +159,6 @@ public: // void SubscribeToMessage( MessageID message ); // will automatically unsubscribe void SubscribeToMessage( const RString &sMessageName ); // will automatically unsubscribe - inline bool IsSubscribedToMessage( const RString &sMessageName ) const { return find( m_vsSubscribedTo.begin(), m_vsSubscribedTo.end(), sMessageName ) != m_vsSubscribedTo.end(); } - inline bool IsSubscribedToMessage( MessageID message ) const { return IsSubscribedToMessage( MessageIDToString(message) ); } void UnsubscribeAll(); @@ -182,6 +180,8 @@ public: void Broadcast( Message &msg ) const; void Broadcast( const RString& sMessage ) const; void Broadcast( MessageID m ) const; + bool IsSubscribedToMessage( IMessageSubscriber* pSubscriber, const RString &sMessage ) const; + inline bool IsSubscribedToMessage( IMessageSubscriber* pSubscriber, MessageID message ) const { return IsSubscribedToMessage( pSubscriber, MessageIDToString(message) ); } // Lua void PushSelf( lua_State *L ); diff --git a/stepmania/src/ScreenSelect.cpp b/stepmania/src/ScreenSelect.cpp index deb0344fc3..de9efb4f1f 100644 --- a/stepmania/src/ScreenSelect.cpp +++ b/stepmania/src/ScreenSelect.cpp @@ -29,7 +29,7 @@ void ScreenSelect::Init() for( unsigned i = 0; i < m_asSubscribedMessages.size(); ++i ) MESSAGEMAN->Subscribe( this, m_asSubscribedMessages[i] ); // Only subscribe once. - if( !this->IsSubscribedToMessage(Message_PlayerJoined) ) + if( !MESSAGEMAN->IsSubscribedToMessage(this, Message_PlayerJoined) ) this->SubscribeToMessage( Message_PlayerJoined ); //