export default class Timer {
divTimer!: HTMLElement;
interval!: any;
async start(playerIndex: number, finishTime: number): Promise {
return new Promise(resolve => {
let divTimer = document.getElementById(`${playerIndex}-player-time`);
if (divTimer === null)
throw new Error("divTimer doesn't Exist");
else
this.divTimer = divTimer;
this.interval = setInterval(() => {
this.updateDisplay(finishTime - Date.now(), resolve);
}, 1000);
})
}
updateDisplay(time: number, resolve: Function): void {
let secondsElapsed = Math.floor(time / 1000);
this.divTimer.innerHTML = secondsElapsed.toString();
if (secondsElapsed === 0) {
resolve();
clearInterval(this.interval);
}
}
stop(): void {
clearInterval(this.interval);
}
}