From 7fcefd1621f9aa6e02bfbec03c05d28687ef0f15 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 19 Jul 2021 20:26:12 +0200 Subject: [PATCH] feat #1818: Threads can now fire events on all threads --- src/server/world/atlas.js | 4 ++++ src/server/world/worker.js | 27 +++++++++++++++------------ 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/server/world/atlas.js b/src/server/world/atlas.js index 5f31a847..42f80c60 100644 --- a/src/server/world/atlas.js +++ b/src/server/world/atlas.js @@ -157,6 +157,10 @@ module.exports = { this.threads.forEach(t => t.worker.send(message)); }, + fireEventOnAllThreads: function ({ msg: { event, data } }) { + this.threads.forEach(t => t.worker.send({ event, data })); + }, + thread: { onReady: function (thread) { thread.worker.send({ diff --git a/src/server/world/worker.js b/src/server/world/worker.js index 1ac24217..456782e0 100644 --- a/src/server/world/worker.js +++ b/src/server/world/worker.js @@ -6,19 +6,20 @@ global.instancer = require('./instancer'); global.eventManager = require('../events/events'); global.clientConfig = require('../config/clientConfig'); -let components = require('../components/components'); -let mods = require('../misc/mods'); -let animations = require('../config/animations'); -let skins = require('../config/skins'); -let factions = require('../config/factions'); -let classes = require('../config/spirits'); -let spellsConfig = require('../config/spellsConfig'); -let spells = require('../config/spells'); -let recipes = require('../config/recipes/recipes'); -let itemTypes = require('../items/config/types'); -let mapList = require('../config/maps/mapList'); -let itemEffects = require('../items/itemEffects'); +const components = require('../components/components'); +const mods = require('../misc/mods'); +const animations = require('../config/animations'); +const skins = require('../config/skins'); +const factions = require('../config/factions'); +const classes = require('../config/spirits'); +const spellsConfig = require('../config/spellsConfig'); +const spells = require('../config/spells'); +const recipes = require('../config/recipes/recipes'); +const itemTypes = require('../items/config/types'); +const mapList = require('../config/maps/mapList'); +const itemEffects = require('../items/itemEffects'); const profanities = require('../misc/profanities'); +const eventEmitter = require('../misc/events'); let onCpnsReady = async function () { factions.init(); @@ -100,4 +101,6 @@ process.on('message', m => { global[m.threadModule][m.method](m.data); else if (m.method) instancer[m.method](m.args); + else if (m.event) + eventEmitter.emit(m.event, m.data); });