var TickTime = 1000; | |||||
var DT = 0; | |||||
var LTime = 0; | |||||
var CPUCLK = null: | |||||
class Clock{ | |||||
constructor(){} | |||||
get hz(){return Math.floor(1000 / TickTime);} | |||||
set hz(hz){ | |||||
if(hz >= 1) | |||||
TickTime = 1000 / hz; | |||||
} | |||||
get wired(){return (CPUCLK !== null);} | |||||
set wire(clk){ | |||||
if(clk == null || typeof clk === 'function') | |||||
CPUCLK = clk; | |||||
} | |||||
tick(){ | |||||
let ctime = Date.getTime(); | |||||
if(LTime !== 0){ | |||||
DT += ctime - LTime; | |||||
while(DT > TickTime){ | |||||
if (CPUCLK) | |||||
CPUCLK(); | |||||
DT -= TickTime | |||||
} | |||||
} | |||||
LTime = ctime; | |||||
} | |||||
} | |||||
module.exports = Clock; |