Files
wsmud/os/task/events.js
2026-05-26 16:41:20 +08:00

49 lines
1.2 KiB
JavaScript

EVENTS = function () {
}
EVENTS.inherits(BASE);
EVENTS.add = function (item) {
if (!item || !item.id) return;
Object.setPrototypeOf(item, EVENT_BASE);
const items = WORLD.USER_EVENTS;
for (var i = 0; i < items.length; i++) {
if (items[i].id == item.id) {
items[i] = item;
return this.notify(item, 1);
}
}
items.push(item);
this.notify(item, 0);
}
EVENTS.ACTIONS = ['add', 'update', 'finish'];
EVENTS.notify = function (item, act) {
let users = WORLD.USERS;
let msg = `{type: "dialog", dialog: "events",${EVENTS.ACTIONS[act]}:1}`;
for (let user of users) {
if (!user.socket) continue;
if (item.check && !item.check(user))
continue;
user.send(msg);
}
}
EVENTS.remove = function (id) {
if (!id) return;
const items = WORLD.USER_EVENTS;
for (var i = 0; i < items.length; i++) {
if (items[i].id == id) {
EVENTS.notify(items[i], 2);
return items.splice(i, 1);
}
}
}
const EVENT_BASE = {
query_desc: function () {
return this.desc;
},
query_grade: function () {
return this.grade;
}
};