import { sys } from 'cc'; /** * 本地存储管理器 * 统一管理用户数据的本地持久化存储 */ export class StorageManager { /** 生命值存储键 */ private static readonly KEY_LIVES = 'game_lives'; /** 默认生命值 */ private static readonly DEFAULT_LIVES = 10; /** 最小生命值 */ private static readonly MIN_LIVES = 0; // ==================== 生命值管理 ==================== /** * 获取当前生命值 * @returns 当前生命值,新用户返回默认值 10 */ static getLives(): number { const stored = sys.localStorage.getItem(StorageManager.KEY_LIVES); if (stored === null || stored === '') { // 新用户,设置默认值 StorageManager.setLives(StorageManager.DEFAULT_LIVES); return StorageManager.DEFAULT_LIVES; } const lives = parseInt(stored, 10); // 防止异常数据 if (isNaN(lives) || lives < 0) { StorageManager.setLives(StorageManager.DEFAULT_LIVES); return StorageManager.DEFAULT_LIVES; } return lives; } /** * 设置生命值 * @param lives 生命值 */ static setLives(lives: number): void { const validLives = Math.max(StorageManager.MIN_LIVES, lives); sys.localStorage.setItem(StorageManager.KEY_LIVES, validLives.toString()); console.log(`[StorageManager] 生命值已更新: ${validLives}`); } /** * 消耗一颗生命 * @returns 是否消耗成功(生命值不足时返回 false) */ static consumeLife(): boolean { const currentLives = StorageManager.getLives(); if (currentLives <= 0) { console.warn('[StorageManager] 生命值不足,无法消耗'); return false; } StorageManager.setLives(currentLives - 1); return true; } /** * 增加一颗生命 */ static addLife(): void { const currentLives = StorageManager.getLives(); StorageManager.setLives(currentLives + 1); console.log(`[StorageManager] 获得一颗生命,当前生命值: ${currentLives + 1}`); } /** * 检查是否有足够的生命值 * @returns 是否有生命值 */ static hasLives(): boolean { return StorageManager.getLives() > 0; } /** * 重置生命值为默认值 */ static resetLives(): void { StorageManager.setLives(StorageManager.DEFAULT_LIVES); console.log('[StorageManager] 生命值已重置为默认值'); } }