have Actors automatically subscribe to a message for each command that ends in "MessageCommand"

This commit is contained in:
Chris Danford
2005-02-23 18:53:54 +00:00
parent ed044bd2f9
commit 2e5b94e064
4 changed files with 67 additions and 20 deletions
+7 -7
View File
@@ -15,19 +15,19 @@ MessageManager::~MessageManager()
{
}
void MessageManager::Subscribe( Actor* pActor, const CString& sMessage )
void MessageManager::Subscribe( IMessageSubscriber* pSubscriber, const CString& sMessage )
{
SubscribersSet& subs = m_MessageToSubscribers[sMessage];
#if _DEBUG
SubscribersSet::iterator iter = subs.find(pActor);
SubscribersSet::iterator iter = subs.find(pSubscriber);
ASSERT_M( iter == subs.end(), "already subscribed" );
#endif
subs.insert( pActor );
subs.insert( pSubscriber );
}
void MessageManager::Unsubscribe( Actor* pActor, const CString& sMessage )
void MessageManager::Unsubscribe( IMessageSubscriber* pSubscriber, const CString& sMessage )
{
SubscribersSet& subs = m_MessageToSubscribers[sMessage];
SubscribersSet::iterator iter = subs.find(pActor);
SubscribersSet::iterator iter = subs.find(pSubscriber);
ASSERT( iter != subs.end() );
subs.erase( iter );
}
@@ -35,9 +35,9 @@ void MessageManager::Unsubscribe( Actor* pActor, const CString& sMessage )
void MessageManager::Broadcast( const CString& sMessage )
{
SubscribersSet& subs = m_MessageToSubscribers[sMessage];
FOREACHS_CONST( Actor*, subs, p )
FOREACHS_CONST( IMessageSubscriber*, subs, p )
{
(*p)->PlayCommand( sMessage );
(*p)->HandleMessage( sMessage );
}
}