diff --git a/src/controllers/custom/configController.ts b/src/controllers/custom/configController.ts index 70b61174..1b0eeecb 100644 --- a/src/controllers/custom/configController.ts +++ b/src/controllers/custom/configController.ts @@ -2,7 +2,7 @@ import type { RequestHandler } from "express"; import { config, syncConfigWithDatabase } from "../../services/configService.ts"; import { getAccountForRequest, isAdministrator } from "../../services/loginService.ts"; import { saveConfig } from "../../services/configWriterService.ts"; -import { sendWsBroadcastEx } from "../../services/wsService.ts"; +import { sendWsBroadcastEx, sendWsBroadcast } from "../../services/wsService.ts"; export const getConfigController: RequestHandler = async (req, res) => { const account = await getAccountForRequest(req); @@ -21,11 +21,14 @@ export const getConfigController: RequestHandler = async (req, res) => { export const setConfigController: RequestHandler = async (req, res) => { const account = await getAccountForRequest(req); if (isAdministrator(account)) { + let isWorldStateUpdate = false; for (const [id, value] of Object.entries(req.body as Record)) { + if (id.startsWith("worldState")) isWorldStateUpdate = true; const [obj, idx] = configIdToIndexable(id); obj[idx] = value; } sendWsBroadcastEx({ config_reloaded: true }, undefined, parseInt(String(req.query.wsid))); + if (isWorldStateUpdate) sendWsBroadcast({ sync_world_state: true }); syncConfigWithDatabase(); await saveConfig(); res.end(); diff --git a/src/services/wsService.ts b/src/services/wsService.ts index 6850e1a2..9538deb9 100644 --- a/src/services/wsService.ts +++ b/src/services/wsService.ts @@ -92,6 +92,7 @@ interface IWsMsgToClient { // to game/bootstrapper (https://openwf.io/bootstrapper-manual) sync_inventory?: boolean; + sync_world_state?: boolean; tunables?: ITunables; }