Files

362 lines
18 KiB
TypeScript

// @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)) {
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) {
void ((this["playerData"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["isOnTimerRun"] = false);
void ((this["playerData"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["lastAddPowerTimer"] = null);
void (this["save"]());
}
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<K extends keyof PlayerData>(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<PlayerData>): void {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default:
if (!obj)
return;
void ((Object["keys"](this) as Array<keyof PlayerData>)["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 {
}
}
}