51 lines
1.0 KiB
TypeScript
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 = [];
|
|
}
|
|
|
|
}
|