From eedf2e6b47ea57d87065af4a71a1ab61c088d7a2 Mon Sep 17 00:00:00 2001 From: Soopyboo32 <49228220+Soopyboo32@users.noreply.github.com> Date: Thu, 9 Jun 2022 17:31:08 +0800 Subject: + make soulflow overlay use new soulflow api + util library for delaying function calls --- utils/delayUtils.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 utils/delayUtils.js (limited to 'utils') diff --git a/utils/delayUtils.js b/utils/delayUtils.js new file mode 100644 index 0000000..4c66d0f --- /dev/null +++ b/utils/delayUtils.js @@ -0,0 +1,29 @@ +const { default: FlatQueue } = require("../datastructures/flatqueue") + +if (!global.delayThingSoopy) { + + let functionQueue = new FlatQueue() + let functions = new Map() + let functionId = 0 + + function delay(time, callback) { + let id = functionId++ + functionQueue.push(id, Date.now() + time) + functions.set(id, callback) + } + + register("tick", () => { + while (functionQueue.length > 0 && Date.now() > functionQueue.peekValue()) { + let id = functionQueue.pop() + + functions.get(id)() + functions.delete(id) + } + }) + + global.delayThingSoopy = { + delay + } +} + +module.exports = global.delayThingSoopy -- cgit