|
- module.exports = {
- callbacks: [],
-
- speed: 100,
-
- init: function () {
- setInterval(this.update.bind(this), this.speed);
- },
-
- register: function (sourceId, callback, time, destroyCallback) {
- let obj = {
- sourceId: sourceId,
- callback: callback,
- destroyCallback: destroyCallback,
- time: time
- };
-
- this.callbacks.push(obj);
-
- return obj;
- },
- unregister: function (sourceId) {
- let callbacks = this.callbacks;
- let cLen = callbacks.length;
- for (let i = 0; i < cLen; i++) {
- let c = callbacks[i];
-
- if (c.sourceId === sourceId) {
- if (c.destroyCallback)
- c.destroyCallback();
- callbacks.splice(i, 1);
- i--;
- cLen--;
- }
- }
- },
-
- update: function () {
- let speed = this.speed;
-
- let callbacks = this.callbacks;
- let cLen = callbacks.length;
- for (let i = 0; i < cLen; i++) {
- let c = callbacks[i];
-
- //If a spellCallback kills a mob he'll unregister his callbacks
- if (!c) {
- i--;
- cLen--;
- continue;
- }
-
- c.time -= speed;
-
- if (c.time <= 0) {
- if (c.callback)
- c.callback();
- if (c.destroyCallback)
- c.destroyCallback();
- callbacks.splice(i, 1);
- i--;
- cLen--;
- }
- }
- }
- };
|