armory/Sources/armory/system/Event.hx
2019-12-19 23:54:08 +01:00

39 lines
934 B
Haxe

package armory.system;
class Event {
static var events = new Map<String, Array<TEvent>>();
public static function send(name: String, mask = -1) {
var entries = get(name);
if (entries != null) for (e in entries) if (mask == -1 || mask == e.mask ) e.onEvent();
}
public static function get(name: String): Array<TEvent> {
return events.get(name);
}
public static function add(name: String, onEvent: Void->Void, mask = -1): TEvent {
var e: TEvent = { name: name, onEvent: onEvent, mask: mask };
var entries = events.get(name);
if (entries != null) entries.push(e);
else events.set(name, [e]);
return e;
}
public static function remove(name: String) {
events.remove(name);
}
public static function removeListener(event: TEvent) {
var entries = events.get(event.name);
if (entries != null) entries.remove(event);
}
}
typedef TEvent = {
var name: String;
var onEvent: Void->Void;
var mask: Int;
}