Spaces:
Runtime error
Runtime error
File size: 1,599 Bytes
30c32c8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
class Timer {
constructor (startingTime, pausingTime) {
this.startTime = startingTime ? startingTime : Date.now();
if (pausingTime) {
this.pauseTime = pausingTime;
}
this.stopped = true;
}
start (vmUnpause = false) {
const paused = (this.pauseTime !== null);
// check if we are stopped or paused before continuing
if (!(this.stopped || paused) || (paused && (vmUnpause && !this.vmPaused))) return;
if (this.stopped) {
this.startTime = Date.now();
} else {
// we are unpausing
this.startTime += Date.now() - this.pauseTime;
}
this.vmPaused = false;
this.pauseTime = null;
this.stopped = false;
}
pause (vmPause = false) {
const paused = (this.pauseTime !== null);
if (paused) return;
this.vmPaused = vmPause;
this.pauseTime = Date.now();
}
stop () {
if (this.stopped) return;
this.stopped = true;
this.pauseTime = Date.now();
}
reset () {
this.stopped = true;
this.pauseTime = Date.now();
this.startTime = Date.now();
}
add (seconds) {
this.startTime -= seconds;
}
getTime (inSeconds) {
const paused = (this.pauseTime !== null);
const pausedTime = Number(this.pauseTime) - this.startTime;
const normalTime = Date.now() - this.startTime;
const divisor = inSeconds ? 1000 : 1;
return (paused ? pausedTime : normalTime) / divisor;
}
}
module.exports = Timer;
|