Example #1
0
	//
	// Manager::getListenerList		- Chapter 10, page 300
	//
	// Get the list of listeners associated with a specific event
	// type
	//
	ListenerList Manager::GetListenerList( TypeId const & eventType ) const
	{
		// invalid event type, so sad
		if ( ! VValidateType( eventType ) )
			return ListenerList();

		EventListenerMap::const_iterator itListeners = m_registry.find( eventType.Value() );

		// no listerners currently for this event type, so sad
		if ( itListeners == m_registry.end() )
			return ListenerList();

		EventListenerTable const & table = itListeners->second;

		// there was, but is not now, any listerners currently for
		// this event type, so sad
		if ( table.size() == 0 )
			return ListenerList();

		ListenerList result;

		result.reserve( table.size() );
	
		for ( EventListenerTable::const_iterator it = table.begin(), end = table.end();
				it != end;
					it++ )
		{
			result.push_back( *it );
		}

		return result;
	}
Example #2
0
void EventManager::addListener(GameObject *listener, EventID eventID)
{
    ListenerMap::iterator mapIter = mListenerMap.find(eventID);
 
    // listener list for eventID is empty, need create first
    if (mapIter == mListenerMap.end())
    {
        ListenerList *newList = new ListenerList;
        mListenerMap.insert(ListenerMap::value_type(eventID, newList));
        newList->push_back(listener);
    }
    else
    {
        (mapIter->second)->push_back(listener);
    }
}