Untitled
unknown
plain_text
a year ago
1.3 kB
9
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