#pragma once #include #include #include namespace extra2d { /** * @brief 计时器服务接口 */ class ITimerService : public IService { public: virtual ~ITimerService() = default; virtual u32 add(f32 delay, Timer::Fn fn) = 0; virtual u32 addRepeat(f32 interval, Timer::Fn fn) = 0; virtual void cancel(u32 timerId) = 0; virtual void pauseTimer(u32 timerId) = 0; virtual void resumeTimer(u32 timerId) = 0; virtual void clear() = 0; virtual size_t count() const = 0; }; /** * @brief 计时器服务实现 */ class TimerService : public ITimerService { public: TimerService(); ~TimerService() override = default; ServiceInfo info() const override; bool init() override; void shutdown() override; void update(f32 dt) override; u32 add(f32 delay, Timer::Fn fn) override; u32 addRepeat(f32 interval, Timer::Fn fn) override; void cancel(u32 timerId) override; void pauseTimer(u32 timerId) override; void resumeTimer(u32 timerId) override; void clear() override; size_t count() const override; TimerManager& mgr() { return mgr_; } const TimerManager& mgr() const { return mgr_; } private: TimerManager mgr_; // 服务注册元数据 E2D_AUTO_REGISTER_SERVICE(ITimerService, TimerService); }; }