@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
48 lines • 3.22 kB
JavaScript
export class TgdEvent {
constructor() {
this.listeners = new Set();
}
addListener(listener) {
this.listeners.add(listener);
}
removeListener(listener) {
this.listeners.delete(listener);
}
dispatch(value) {
for (const listener of this.listeners) {
const stop = listener(value);
if (stop)
return stop;
}
}
removeAllListeners() {
this.listeners.clear();
}
}
export class TgdEventPriority {
constructor() {
this.listeners = [];
}
addListener(listener, priority = 0) {
this.removeListener(listener);
this.listeners.push([listener, priority]);
this.listeners.sort((a, b) => b[1] - a[1]);
}
removeListener(listener) {
const index = this.listeners.findIndex((item) => item[0] === listener);
if (index === -1)
return;
this.listeners.splice(index, 1);
}
dispatch(value) {
for (const [listener] of this.listeners) {
const stop = listener(value);
if (stop)
return stop;
}
}
removeAllListeners() {
this.listeners.splice(0);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnQvZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFFBQVE7SUFBckI7UUFDcUIsY0FBUyxHQUFHLElBQUksR0FBRyxFQUFlLENBQUE7SUFvQnZELENBQUM7SUFsQkcsV0FBVyxDQUFDLFFBQXFCO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFFRCxjQUFjLENBQUMsUUFBcUI7UUFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFRO1FBQ2IsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQzVCLElBQUksSUFBSTtnQkFBRSxPQUFPLElBQUksQ0FBQTtRQUN6QixDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDMUIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLGdCQUFnQjtJQUE3QjtRQUNxQixjQUFTLEdBQWdELEVBQUUsQ0FBQTtJQXlCaEYsQ0FBQztJQXZCRyxXQUFXLENBQUMsUUFBcUIsRUFBRSxRQUFRLEdBQUcsQ0FBQztRQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDOUMsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFxQjtRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFBO1FBQ3RFLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQztZQUFFLE9BQU07UUFFeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBUTtRQUNiLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDNUIsSUFBSSxJQUFJO2dCQUFFLE9BQU8sSUFBSSxDQUFBO1FBQ3pCLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDNUIsQ0FBQztDQUNKIn0=