Spaces:
Runtime error
Runtime error
| 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; | |