| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 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
- };
- }
- public get runtime() { return this.data; }
- /** 关卡结束后调用,让 GC 自动回收 */
- public clear() { this.data = null; }
- // ======== 本局金币接口 ========
- public getCoins(): number { return this.data?.sessionCoins ?? 0; }
- 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<amt) return false; this.data.sessionCoins-=amt; return true; }
- }
|