aboutsummaryrefslogtreecommitdiffstats
path: root/frontend/ts/timer.ts
blob: f8dab253361816d1497111645a0a959c8de82ae8 (plain) (blame)
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
export default class Timer {
    divTimer!: HTMLElement;

    interval!: any;
    async start(playerIndex: number, finishTime: number): Promise<void> {
        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);
    }
}