• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.badlogic.gdx.tools.flame;
2 
3 import com.badlogic.gdx.utils.Array;
4 import com.badlogic.gdx.utils.ObjectMap;
5 
6 /** @author Inferno */
7 public class EventManager
8 {
9 	private static EventManager mInstance;
10 	public interface Listener
11 	{
handle( int aEventType, Object aEventData)12 		public void handle( int aEventType, Object aEventData);
13 	}
14 
15 	private ObjectMap<Integer, Array<Listener>> mListeners;
16 
EventManager()17 	private EventManager()
18 	{
19 		mListeners = new ObjectMap<Integer, Array<Listener>>();
20 	}
21 
get()22 	public static EventManager get()
23 	{
24 		if(mInstance == null) mInstance = new EventManager();
25 		return mInstance;
26 	}
27 
attach(int aEventType, Listener aListener)28 	public void attach(int aEventType, Listener aListener)
29 	{
30 		boolean isNew = false;
31 		Array<Listener> listeners = mListeners.get(aEventType);
32 		if(listeners == null)
33 		{
34 			listeners = new Array<EventManager.Listener>();
35 			mListeners.put(aEventType, listeners);
36 			isNew = true;
37 		}
38 
39 		if(isNew || !listeners.contains(aListener, true))
40 		{
41 			listeners.add(aListener);
42 		}
43 
44 	}
45 
detach(int aEventType, Listener aListener)46 	public void detach(int aEventType, Listener aListener)
47 	{
48 		Array<Listener> listeners = mListeners.get(aEventType);
49 		if(listeners != null)
50 		{
51 			listeners.removeValue(aListener, true);
52 			if(listeners.size == 0) mListeners.remove(aEventType);
53 		}
54 	}
55 
fire( int aEventType, Object aEventData)56 	public void fire( int aEventType, Object aEventData)
57 	{
58 		Array<Listener> listeners = mListeners.get(aEventType);
59 		if(listeners != null)
60 		for(Listener listener : listeners)
61 		{
62 			listener.handle(aEventType, aEventData);
63 		}
64 	}
65 
clear()66 	public void clear(){
67 		mListeners.clear();
68 	}
69 
70 }
71