diff options
author | Soopyboo32 <49228220+Soopyboo32@users.noreply.github.com> | 2022-09-17 23:47:59 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-17 23:47:59 +0800 |
commit | 364caae9b6e47b8d5e1bab950aebc5b35bc4baad (patch) | |
tree | e554b5859e0135b8f644986768306d5f3ee5683e /src/utils/delayUtils.js | |
parent | eb8bc77bf2d790e97fe793eb96ad77e1b4d2bbbf (diff) | |
parent | 12f3a81cf12c6ffc24a7f2a0e8102dfba3fddf82 (diff) | |
download | SoopyV2-364caae9b6e47b8d5e1bab950aebc5b35bc4baad.tar.gz SoopyV2-364caae9b6e47b8d5e1bab950aebc5b35bc4baad.tar.bz2 SoopyV2-364caae9b6e47b8d5e1bab950aebc5b35bc4baad.zip |
Merge pull request #71 from Soopyboo32/Babel
Diffstat (limited to 'src/utils/delayUtils.js')
-rw-r--r-- | src/utils/delayUtils.js | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/utils/delayUtils.js b/src/utils/delayUtils.js new file mode 100644 index 0000000..3ec6d95 --- /dev/null +++ b/src/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++ + functions.set(id, callback) + functionQueue.push(id, Date.now() + time) + } + + register("tick", () => { + while (functionQueue.length > 0 && Date.now() > functionQueue.peekValue()) { + let id = functionQueue.pop() + + functions.get(id)() + functions.delete(id) + } + }) + + global.delayThingSoopy = { + delay: delay + } +} + +module.exports = global.delayThingSoopy |