corgi/src/clock/ClockTimer.ts
2021-04-29 18:39:03 +08:00

51 lines
1.0 KiB
TypeScript

import { Delayed, Type } from "./Delayed";
import { Clock } from './Clock'
export default class ClockTimer extends Clock {
delayed: Delayed[] = [];
constructor (autoStart: boolean = false) {
super(autoStart);
}
tick () {
super.tick();
if (this.paused) {
return
}
let delayedList = this.delayed;
let i = delayedList.length;
while (i--) {
const delayed = delayedList[i];
if (delayed.active) {
delayed.tick(this.deltaTime);
} else {
delayedList.splice(i, 1);
continue;
}
}
}
setInterval (handler: Function, time: number, ...args: any[]) {
let delayed = new Delayed(handler, args, time, Type.Interval);
this.delayed.push(delayed);
return delayed;
}
setTimeout (handler: Function, time: number, ...args: any[]) {
let delayed = new Delayed(handler, args, time, Type.Timeout);
this.delayed.push(delayed);
return delayed;
}
clear () {
let i = this.delayed.length;
while (i--) { this.delayed[i].clear(); }
this.delayed = [];
}
}