import { FSM } from "../../Framework/FSM/FSM"; import { AppStatusBoot } from "./AppStatusBoot"; import { AppStatusLogin } from "./AppStatusLogin"; import { AppStatusGame } from "./AppStatusGame"; /** * 应用状态管理器 * 职责: * - 管理应用的整体状态流转 * - 提供单例访问 * - 初始化所有应用状态 * * 状态流程: Boot -> Login -> Game */ export class AppStatusManager { private static _instance: AppStatusManager | null = null; private _fsm: FSM; /** * 构造函数(私有) */ private constructor() { this._fsm = new FSM(); this.initStates(); } /** * 获取单例 */ static getInstance(): AppStatusManager { if (!this._instance) { this._instance = new AppStatusManager(); } return this._instance; } /** * 初始化所有状态 */ private initStates(): void { console.log("[AppStatusManager] 初始化应用状态..."); // 添加应用状态: Boot -> Login -> Game this._fsm.addState(new AppStatusBoot(this._fsm)); this._fsm.addState(new AppStatusLogin(this._fsm)); this._fsm.addState(new AppStatusGame(this._fsm)); console.log("[AppStatusManager] 应用状态初始化完成"); } /** * 启动应用 * 从Boot状态开始 */ start(): void { console.log("[AppStatusManager] 启动应用..."); this._fsm.changeState("Boot"); } /** * 切换状态 * @param stateName 状态名称 * @param params 可选参数 */ changeState(stateName: string, params?: any): void { this._fsm.changeState(stateName, params); } /** * 获取当前状态名称 */ getCurrentStateName(): string | null { return this._fsm.getCurrentStateName(); } /** * 获取当前状态 */ getCurrentState(): any { return this._fsm.getCurrentState(); } /** * 更新状态机(在主循环中调用) * @param dt 距离上一帧的时间增量(秒) */ update(dt: number): void { this._fsm.update(dt); } /** * 获取状态机实例 * 用于高级操作 */ getFSM(): FSM { return this._fsm; } /** * 销毁管理器 */ destroy(): void { console.log("[AppStatusManager] 销毁应用状态管理器"); this._fsm.clear(); AppStatusManager._instance = null; } }