@fuwu-yuan/bgew
Version:
Baguette Game Engine Web is a french 2D Web game engine
38 lines (37 loc) • 1.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Dispatcher = void 0;
const DispatcherEvent_1 = require("./DispatcherEvent");
class Dispatcher {
constructor() {
this.events = {};
}
dispatch(eventName, ...args) {
const event = this.events[eventName];
if (event) {
event.fire(...args);
}
const all = this.events["all"];
if (all) {
all.fire(...args);
}
}
on(eventName, callback, options) {
let event = this.events[eventName];
if (!event) {
event = new DispatcherEvent_1.DispatcherEvent(eventName);
this.events[eventName] = event;
}
event.registerCallback(callback, options);
}
off(eventName, callback) {
const event = this.events[eventName];
if (event) {
event.unregisterCallback(callback);
if (event.callbacks.length === 0) {
delete this.events[eventName];
}
}
}
}
exports.Dispatcher = Dispatcher;