362 lines
18 KiB
TypeScript
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 {
|
|
}
|
|
}
|
|
}
|