/**
 * @Author: Gongxh
 * @Date: 2025-02-14
 * @Description: 内部使用的全局定时器
 */
import { Timer } from "../tool/timer/Timer";

/** @internal */
export class InnerTimer {
    private static _timer: Timer = null;
    /**
     * 初始化全局定时器，设置定时器间隔为16毫秒。
     * 此方法用于启动一个定时器实例，以便在整个应用程序中跟踪时间相关的操作。
     */
    public static initTimer(): void {
        this._timer = new Timer(16);
    }

    /**
     * 启动一个定时器，执行指定的回调函数。
     * @param callback - 要定时执行的回调函数。
     * @param interval - 定时器的时间间隔（秒）。
     * @param loop - [loop=0] 重复次数：0：回调一次，1~n：回调n次，-1：无限重复
     * @returns 返回定时器的ID。
     */
    public static startTimer(callback: () => void, interval: number, loop: number = 0): number {
        return this._timer.start(callback, interval, loop);
    }

    /**
     * 停止指定ID的计时器。
     * @param timerId - 要停止的计时器的唯一标识符。
     */
    public static stopTimer(timerId: number): void {
        this._timer.stop(timerId);
    }

    public static update(dt: number): void {
        this._timer?.update(dt);
    }
}