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(ListenerPtr listener, EventType type)
	{
		// Register event type
		if (mEventRegistry.find(type) == mEventRegistry.end())
			Register(type);

		// Get listeners
		ListenerRegistry::iterator mIt = mRegistry.find(type);
		if (mIt == mRegistry.end())
		{
			// Initialize listener list
			ListenerRegistry::value_type entry(type, ListenerList());
			mIt = mRegistry.insert(entry).first;
		}

		ListenerList& list = mIt->second;

		// Ensure listener not exists
		const ListenerList::const_iterator i = std::find(list.begin(), list.end(), listener);
		if (i != list.end())
			return;

		// Insert
		list.push_back(listener);
	}
// - Global stuff -
DataManager::DataManager() 
{
	this->subscribers.insert(SubscriptionMap::value_type(TYPE_GROUPS, ListenerList()));
	this->subscribers.insert(SubscriptionMap::value_type(TYPE_GRID, ListenerList()));
	this->subscribers.insert(SubscriptionMap::value_type(TYPE_USER_INFO, ListenerList()));
	this->subscribers.insert(SubscriptionMap::value_type(TYPE_RESOURCE, ListenerList()));
	this->subscribers.insert(SubscriptionMap::value_type(TYPE_ONSITE, ListenerList()));
	this->subscribers.insert(SubscriptionMap::value_type(TYPE_STAFF, ListenerList()));
	this->subscribers.insert(SubscriptionMap::value_type(TYPE_PART, ListenerList()));
	this->subscribers.insert(SubscriptionMap::value_type(TYPE_PERMIT, ListenerList()));
	this->subscribers.insert(SubscriptionMap::value_type(TYPE_PERMIT_QUEUE, ListenerList()));
	gridConvX = OGRE_GRID_WIDTH / GRID_WIDTH ;
	gridConvY = OGRE_GRID_HEIGHT / GRID_HEIGHT;
	gridDispX = OGRE_GRID_WIDTH / 2 - gridConvX / 2;
	gridDispY = OGRE_GRID_HEIGHT / 2 - gridConvX / 2;
}
// - Global stuff -
DataManager::DataManager() 
{
	this->subscribers.insert(SubscriptionMap::value_type(TYPE_GROUPS, ListenerList()));
	this->subscribers.insert(SubscriptionMap::value_type(TYPE_GRID, ListenerList()));
	this->subscribers.insert(SubscriptionMap::value_type(TYPE_USER_INFO, ListenerList()));
}