@moderrkowo/jsgl
Version:
Client-side JavaScript library for creating web 2D games. Focusing at objective game.
26 lines (22 loc) • 539 B
text/typescript
import { GameEvent } from './GameEvent';
import { Listener } from '../structs/Listener';
/**
* @group Game Events
*/
export class Signals {
listeners: Array<Listener>;
constructor() {
this.listeners = [];
}
emit(channel: string, event: GameEvent) {
for (const listener of this.listeners) {
if (channel === listener.channel) listener.callback(event);
}
}
on(channel: string, callback: (event: GameEvent) => void) {
this.listeners.push({
channel: channel,
callback: callback,
});
}
}