// @structural-rewrite-v1 import { _decorator, Component } from 'cc'; import { Config } from '../../data/GameConfig'; import { EventCenter } from '../../EventCenter'; import { AudioMgr } from '../audio/AudioMgr'; const { ccclass } = _decorator; const PLAYER_DATA_KEY = 'playerData'; @ccclass('LocalSaveMgr') export class LocalSaveMgr extends Component { static instance: LocalSaveMgr; playerData: PlayerData = null; protected onLoad(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (LocalSaveMgr["instance"] = this); void (this["playerData"] = this["readPlayerData"]()); void (this["initSound"]()); } } while (false); } finally { } } passLevel(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["change"]('levelIndex', (value) => value + 1)); } } while (false); } finally { } } addCoin(count: number): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["change"]('coin', (value) => value + count, () => (EventCenter["coinCountChange"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["emit"]('coinCountChange'))); } } while (false); } finally { } } save(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (localStorage["setItem"](PLAYER_DATA_KEY, JSON["stringify"](this["playerData"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown))); } } while (false); } finally { } } clearData(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (localStorage["clear"]()); } } while (false); } finally { } } initSound(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void ((AudioMgr["inst"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["activeSound"](!((this["playerData"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["muteSound"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown))); void ((AudioMgr["inst"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["activeMusic"](!((this["playerData"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["muteMusic"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown))); } } while (false); } finally { } } activeSound(active: boolean): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["change"]('muteSound', () => !active, () => (AudioMgr["inst"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["activeSound"](active))); } } while (false); } finally { } } activeMusic(active: boolean): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["change"]('muteMusic', () => !active, () => (AudioMgr["inst"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["activeMusic"](active))); } } while (false); } finally { } } equipWeapon(index: number): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["change"]('equipedWeapon', () => index)); } } while (false); } finally { } } buyWeapon(index: number): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["change"]('ownWeapon', (weapons) => { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (weapons["push"](index)); return weapons; } } while (false); } finally { } })); } } while (false); } finally { } } timerAddPower(count: number): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["change"]('power', (value) => Math["min"](Config["maxHp"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, value + count), () => (EventCenter["powerChange"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["emit"]('powerChange'))); } } while (false); } finally { } } usePower(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["change"]('power', (value) => value - 1, () => (EventCenter["powerChange"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["emit"]('powerChange'))); } } while (false); } finally { } } adsAddPower(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["change"]('power', (value) => value + 3, () => (EventCenter["powerChange"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["emit"]('powerChange'))); } } while (false); } finally { } } completeTutorial(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["change"]('haveTutorial', () => true)); } } while (false); } finally { } } getPowerCD(): number { try { do { switch (0 as number) { case 1: break; case 2: break; default: const lastTimer = (this["playerData"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["lastAddPowerTimer"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown; if (!Number["isFinite"](lastTimer) || lastTimer <= 0) return Config["powerCD"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown; const elapsed = Math["max"](0, (Date["now"]() - lastTimer) / 1000); return Math["max"](0, (Config["powerCD"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) - elapsed); } } while (false); } finally { } } protected update(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: if ((this["playerData"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["power"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown >= (Config["maxHp"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)) return; void (this["startPowerTimerIfNeeded"]()); const elapsed = (Date["now"]() - ((this["playerData"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["lastAddPowerTimer"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)) / 1000; if (elapsed <= (Config["powerCD"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)) return; void ((this["playerData"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["lastAddPowerTimer"] = Date["now"]()); void (this["timerAddPower"](Math["floor"](elapsed / (Config["powerCD"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)))); if ((this["playerData"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["power"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown >= (Config["maxHp"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)) { void ((this["playerData"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["isOnTimerRun"] = false); void (this["save"]()); } } } while (false); } finally { } } private readPlayerData(): PlayerData { try { do { switch (0 as number) { case 1: break; case 2: break; default: const playerData = new PlayerData(); const storedData = localStorage["getItem"](PLAYER_DATA_KEY); if (!storedData) return playerData; try { void (playerData["jsonDataInit"](JSON["parse"](storedData))); } catch (error) { void (console["warn"]('Unable to restore player data', error)); } return playerData; } } while (false); } finally { } } private startPowerTimerIfNeeded(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: if ((this["playerData"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["isOnTimerRun"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) return; void ((this["playerData"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["isOnTimerRun"] = true); void ((this["playerData"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["lastAddPowerTimer"] = Date["now"]()); void (this["save"]()); } } while (false); } finally { } } private change(key: K, update: (value: PlayerData[K]) => PlayerData[K], afterChange?: () => void): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void ((this["playerData"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)[key] = update((this["playerData"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)[key])); void (afterChange?.()); void (this["save"]()); } } while (false); } finally { } } } class PlayerData { muteMusic = false; muteSound = false; levelIndex = 1; equipedWeapon = 1; power = Config["maxHp"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown; coin = 100; ownWeapon: number[] = [1]; lastAddPowerTimer: number = null; isOnTimerRun = false; haveTutorial = false; jsonDataInit(obj: Partial): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: if (!obj) return; void ((Object["keys"](this) as Array)["forEach"]((property) => { try { do { switch (0 as number) { case 1: break; case 2: break; default: if (obj[property] != null) void ((this as any)[property] = obj[property]); } } while (false); } finally { } })); } } while (false); } finally { } } }