armory/Sources/armory/system/Event.hx

39 lines
934 B
Haxe
Raw Normal View History

2017-04-16 14:46:35 +02:00
package armory.system;
class Event {
static var events = new Map<String, Array<TEvent>>();
2019-12-19 23:54:08 +01:00
public static function send(name: String, mask = -1) {
2017-04-16 14:46:35 +02:00
var entries = get(name);
2017-08-07 10:47:29 +02:00
if (entries != null) for (e in entries) if (mask == -1 || mask == e.mask ) e.onEvent();
2017-04-16 14:46:35 +02:00
}
2019-12-19 23:54:08 +01:00
public static function get(name: String): Array<TEvent> {
2017-04-16 14:46:35 +02:00
return events.get(name);
}
2019-12-19 23:54:08 +01:00
public static function add(name: String, onEvent: Void->Void, mask = -1): TEvent {
var e: TEvent = { name: name, onEvent: onEvent, mask: mask };
2017-04-16 14:46:35 +02:00
var entries = events.get(name);
if (entries != null) entries.push(e);
else events.set(name, [e]);
2018-03-03 13:09:08 +01:00
return e;
2017-04-16 14:46:35 +02:00
}
2019-12-19 23:54:08 +01:00
public static function remove(name: String) {
2017-04-16 14:46:35 +02:00
events.remove(name);
}
2018-03-03 13:09:08 +01:00
2019-12-19 23:54:08 +01:00
public static function removeListener(event: TEvent) {
2018-03-03 13:09:08 +01:00
var entries = events.get(event.name);
if (entries != null) entries.remove(event);
}
2017-04-16 14:46:35 +02:00
}
typedef TEvent = {
2019-12-19 23:54:08 +01:00
var name: String;
var onEvent: Void->Void;
var mask: Int;
2017-04-16 14:46:35 +02:00
}