Untitled

 avatar
unknown
plain_text
24 days ago
1.3 kB
6
Indexable
package il.ac.tau.cs.software1.core;

import java.util.*;

public class EventManager {

	private static EventManager eventManager = null;
	Map<String, List<EventSubscription>> subscribers = new HashMap<>();


	private EventManager() {};

	public void subscribe(String event, GameObject subscriber, IEventCallback callback) {
		/* Q2 */
		if (subscribers.keySet().contains(event)) {
			System.out.println(event + " is already in subscribers");
			subscribers.get(event).add(new EventSubscription(subscriber,callback));
			System.out.println(subscribers.toString());
		} else {
			System.out.println(event + " not in subscribers");
			subscribers.put(event, new ArrayList<>(Arrays.asList(new EventSubscription(subscriber,callback))));
			System.out.println(subscribers.toString());
		}
	}
	
	public void notifyEvent(String event, GameObject publisher, Object data) {
		/* Q3 */
		List<EventSubscription> subscribersLst = subscribers.get(event);
		if (subscribersLst == null) return;
		for (EventSubscription e : subscribersLst) {
			e.callback.call((EventData) data);
		}
	}
	
	// --------------------------------------- (Singleton)
	/* Q1 */
	public static EventManager getEventManager() {
		if (eventManager == null) {
			eventManager = new EventManager();
		}
		return eventManager;
	}
}
Editor is loading...
Leave a Comment