chore:代码重构
This commit is contained in:
@@ -1,182 +1,355 @@
|
||||
import { _decorator, Component, math, Node, EventTarget } from 'cc';
|
||||
// @structural-rewrite-v1
|
||||
import { _decorator, Component } from 'cc';
|
||||
import { Config } from '../../data/GameConfig';
|
||||
import { EventCenter } from '../../EventCenter';
|
||||
import { AudioMgr } from '../audio/AudioMgr';
|
||||
import { Config } from '../../data/GameConfig';
|
||||
|
||||
|
||||
const { ccclass, property } = _decorator;
|
||||
const eventTarget = new EventTarget();
|
||||
const { ccclass } = _decorator;
|
||||
const PLAYER_DATA_KEY = 'playerData';
|
||||
@ccclass('LocalSaveMgr')
|
||||
export class LocalSaveMgr extends Component {
|
||||
static instance: LocalSaveMgr;
|
||||
playerData: PlayerData = null
|
||||
|
||||
playerData: PlayerData = null;
|
||||
protected onLoad(): void {
|
||||
LocalSaveMgr.instance = this
|
||||
let value = localStorage.getItem("playerData")
|
||||
|
||||
if (value != null || value != "") {
|
||||
|
||||
this.playerData = new PlayerData()
|
||||
try {
|
||||
this.playerData.jsonDataInit(JSON.parse(value))
|
||||
} catch (err) {
|
||||
//…
|
||||
}
|
||||
} else {
|
||||
this.playerData = new PlayerData()
|
||||
}
|
||||
this.initSound()
|
||||
}
|
||||
|
||||
passLevel() {
|
||||
this.playerData.levelIndex += 1
|
||||
this.save()
|
||||
}
|
||||
|
||||
addCoin(count: number) {
|
||||
console.log("addCoin", count)
|
||||
this.playerData.coin += count
|
||||
EventCenter.coinCountChange.emit("coinCountChange")
|
||||
this.save()
|
||||
}
|
||||
|
||||
|
||||
save() {
|
||||
localStorage.setItem("playerData", JSON.stringify(this.playerData))
|
||||
}
|
||||
|
||||
clearData() {
|
||||
localStorage.clear()
|
||||
}
|
||||
|
||||
initSound() {
|
||||
AudioMgr.inst.activeSound(!this.playerData.muteSound)
|
||||
AudioMgr.inst.activeMusic(!this.playerData.muteMusic)
|
||||
}
|
||||
|
||||
activeSound(active: boolean) {
|
||||
this.playerData.muteSound = !active
|
||||
AudioMgr.inst.activeSound(active)
|
||||
this.save()
|
||||
|
||||
}
|
||||
activeMusic(active: boolean) {
|
||||
this.playerData.muteMusic = !active
|
||||
AudioMgr.inst.activeMusic(active)
|
||||
this.save()
|
||||
}
|
||||
|
||||
equipWeapon(index: number) {
|
||||
this.playerData.equipedWeapon = index
|
||||
this.save()
|
||||
}
|
||||
|
||||
buyWeapon(index: number) {
|
||||
this.playerData.ownWeapon.push(index)
|
||||
console.log("购买武器", index, this.playerData.ownWeapon[this.playerData.ownWeapon.length - 1])
|
||||
this.save()
|
||||
}
|
||||
|
||||
timerAddPower(count: number) {
|
||||
this.playerData.power += count
|
||||
if (this.playerData.power > Config.maxHp) {
|
||||
this.playerData.power = Config.maxHp
|
||||
}
|
||||
EventCenter.powerChange.emit("powerChange")
|
||||
this.save()
|
||||
}
|
||||
|
||||
usePower() {
|
||||
this.playerData.power -= 1
|
||||
EventCenter.powerChange.emit("powerChange")
|
||||
this.save()
|
||||
}
|
||||
|
||||
adsAddPower() {
|
||||
this.playerData.power += 3
|
||||
EventCenter.powerChange.emit("powerChange")
|
||||
this.save()
|
||||
}
|
||||
|
||||
completeTutorial() {
|
||||
this.playerData.haveTutorial = true
|
||||
this.save()
|
||||
}
|
||||
|
||||
getPowerCD() {
|
||||
const lastAddPowerTimer = this.playerData.lastAddPowerTimer
|
||||
if (!Number.isFinite(lastAddPowerTimer) || lastAddPowerTimer <= 0) {
|
||||
return Config.powerCD
|
||||
}
|
||||
|
||||
const passTime = Math.max(0, (Date.now() - lastAddPowerTimer) / 1000)
|
||||
return Math.max(0, Config.powerCD - passTime)
|
||||
}
|
||||
|
||||
protected update(dt: number): void {
|
||||
if (this.playerData.power < Config.maxHp) {
|
||||
if (this.playerData.isOnTimerRun == false) {
|
||||
this.playerData.isOnTimerRun = true
|
||||
this.playerData.lastAddPowerTimer = Date.now()
|
||||
this.save()
|
||||
}
|
||||
|
||||
if (this.playerData.isOnTimerRun) {
|
||||
let passTime = (Date.now() - this.playerData.lastAddPowerTimer) / 1000
|
||||
// console.log(passTime)
|
||||
if ((passTime > Config.powerCD)) {
|
||||
console.log("倒计时足够")
|
||||
this.playerData.lastAddPowerTimer = Date.now()
|
||||
this.timerAddPower(Math.floor(passTime / Config.powerCD))
|
||||
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"]());
|
||||
}
|
||||
|
||||
if (this.playerData.power >= Config.maxHp) {
|
||||
console.log("体力超过上线")
|
||||
this.playerData.isOnTimerRun = false
|
||||
this.save()
|
||||
} 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<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: boolean = false
|
||||
muteSound: boolean = false
|
||||
levelIndex: number = 1
|
||||
equipedWeapon: number = 1
|
||||
power: number = Config.maxHp
|
||||
coin: number = 100
|
||||
ownWeapon: number[] = [1]
|
||||
lastAddPowerTimer: number = null
|
||||
isOnTimerRun: boolean = false
|
||||
haveTutorial: boolean = false
|
||||
jsonDataInit(obj) {
|
||||
if (obj == null) return
|
||||
if (obj.muteMusic != null)
|
||||
this.muteMusic = obj.muteMusic
|
||||
if (obj.muteSound != null)
|
||||
this.muteSound = obj.muteSound
|
||||
if (obj.levelIndex != null)
|
||||
this.levelIndex = obj.levelIndex
|
||||
if (obj.equipedWeapon != null)
|
||||
this.equipedWeapon = obj.equipedWeapon
|
||||
if (obj.ownWeapon != null)
|
||||
this.ownWeapon = obj.ownWeapon
|
||||
if (obj.coin != null)
|
||||
this.coin = obj.coin
|
||||
if (obj.lastAddPowerTimer != null)
|
||||
this.lastAddPowerTimer = obj.lastAddPowerTimer
|
||||
if (obj.power != null)
|
||||
this.power = obj.power
|
||||
if (obj.isOnTimerRun != null)
|
||||
this.isOnTimerRun = obj.isOnTimerRun
|
||||
if (obj.haveTutorial != null)
|
||||
this.haveTutorial = obj.haveTutorial
|
||||
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 {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user