import { EventBus } from '../event-bus';
import { RAFTimer } from './raf';
import { Timer } from './timer';
export class Scheduler extends EventBus {
    constructor(logicPerSecond) {
        super();
        this.logicPerSecond = logicPerSecond;
        this.init();
    }
    init() {
        const interval = 1000 / this.logicPerSecond;
        this.logicTimer = new Timer(interval, {
            id: 0,
            func: (dt) => {
                this.emit('preupdate.logic');
                this.emit('update.logic', dt);
                this.emit('postupdate.logic');
            }
        });
        this.drawTimer = new RAFTimer({
            id: 1,
            func: (dt) => {
                this.emit('preupdate.draw');
                this.emit('update.draw', dt);
                this.emit('postupdate.draw');
            }
        });
    }
    start() {
        this.logicTimer.start();
        this.drawTimer.start();
    }
    stop() {
        this.logicTimer.stop();
        this.drawTimer.stop();
    }
}
