-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEventBus.java
More file actions
38 lines (27 loc) · 1011 Bytes
/
Copy pathEventBus.java
File metadata and controls
38 lines (27 loc) · 1011 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package org.opengame.engine.event;
import lombok.extern.java.Log;
import java.util.*;
import java.util.function.Consumer;
/**
* Connect event producers and consumers
*/
@Log
public enum EventBus {
INSTANCE;
private final Map<EventType, List<Consumer<Object>>> eventListeners;
EventBus() {
eventListeners = new HashMap<>();
}
public static void subscribeToEvent(EventType eventType, Consumer<Object> consumer) {
log.info("Subscribed to " + eventType);
if (!INSTANCE.eventListeners.containsKey(eventType)) {
INSTANCE.eventListeners.put(eventType, new ArrayList<>());
}
INSTANCE.eventListeners.get(eventType).add(consumer);
}
public static void broadcastEvent(EventType eventType, Object data) {
//log.warning("Event broadcast " + eventType);
if (!INSTANCE.eventListeners.containsKey(eventType)) return;
INSTANCE.eventListeners.get(eventType).forEach((consumer) -> consumer.accept(data));
}
}