export interface LevelRuntimeData { levelId: number; // 本局关卡 wallHealth: number; // 当前墙血 enemiesTotal: number; // 本关总敌人 enemiesKilled: number; // 已击杀 currentWave: number; // 当前波 //drops: DropItemData[]; // 已掉落的道具 startTime: number; sessionCoins: number; // 本局金币(购买方块) } export class LevelSessionManager { private static _inst: LevelSessionManager; public static get inst() { return this._inst || (this._inst = new LevelSessionManager()); } private data: LevelRuntimeData = null; /** 准备本关运行期数据 */ public initialize(levelId: number, wallHealth: number) { this.data = { levelId, wallHealth, enemiesTotal: 0, enemiesKilled: 0, currentWave: 1, //drops: [], startTime: Date.now(), sessionCoins: 45 }; console.log(`[LevelSessionManager] 初始化完成,sessionCoins设置为: ${this.data.sessionCoins}`); } public get runtime() { return this.data; } /** 关卡结束后调用,让 GC 自动回收 */ public clear() { this.data = null; } // ======== 本局金币接口 ======== public getCoins(): number { const coins = this.data?.sessionCoins ?? 0; console.log(`[LevelSessionManager] getCoins() 返回: ${coins}, data存在: ${!!this.data}`); return coins; } public addCoins(amt:number){ if(this.data) this.data.sessionCoins += amt; } /** 成功返回true */ public spendCoins(amt:number):boolean{ if(!this.data || amt<=0) return false; if(this.data.sessionCoins