From f1b8e38c3e2b191ec86d7a89817a920d54ca64bb Mon Sep 17 00:00:00 2001 From: MollTheCoder Date: Sat, 29 Jul 2023 00:12:03 -0400 Subject: [PATCH] Update libhooktick.js Adds additional capabilities and functionality --- mods/libhooktick.js | 44 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/mods/libhooktick.js b/mods/libhooktick.js index 36a00ba2..0800abfc 100644 --- a/mods/libhooktick.js +++ b/mods/libhooktick.js @@ -1,15 +1,49 @@ -let __registeredTickCallbacks = []; +let __registeredAfterTickCallbacks = []; +let __registeredBeforeTickCallbacks = []; window.addEventListener("load", ()=>{ - let oldTick = tick; + const oldTick = tick; clearInterval(tickInterval); tick = function(){ + __registeredBeforeTickCallbacks.forEach(func=>{ + func(); + }); oldTick(); - __registeredTickCallbacks.forEach(func=>{ + __registeredAfterTickCallbacks.forEach(func=>{ func(); }); } tickInterval = setInterval(tick, 1000/tps); }); -function everyTick(callback){ - __registeredTickCallbacks.push(callback); +function everyTick(callback) { + afterEveryTick(callback); } +window.everyTick = everyTick; +function beforeEveryTick(callback) { + __registeredBeforeTickCallbacks.push(callback); +} +window.beforeEveryTick = beforeEveryTick; +function afterEveryTick(callback) { + __registeredAfterTickCallbacks.push(callback); +} +window.afterEveryTick = afterEveryTick; +function removeTickListener(callback, mode) { + let removed = false; + if(mode!=="before") { + let index = __registeredAfterTickCallbacks.indexOf(callback); + if (index === -1 && mode === "after") throw new Error(`Could not find callback.`); + if(index !== -1) { + __registeredAfterTickCallbacks.splice(index, 1); + removed = true; + } + } + if(mode!=="after") { + let index = __registeredBeforeTickCallbacks.indexOf(callback); + if (index === -1 && mode === "before") throw new Error(`Could not find callback.`); + if(index !== -1) { + __registeredBeforeTickCallbacks.splice(index, 1); + removed = true; + } + } + return removed; +} +window.removeTickListener = removeTickListener;