import { _decorator, Component, Node } from 'cc'; import { UmStorageManager } from '../../../cc-common/cc-util/UmStorageManager'; import { HeroDataInfo } from '../global/GameInterface'; import { UmLog } from '../../../cc-common/cc-util/UmLog'; const { ccclass, property } = _decorator; @ccclass('HeroData') export class HeroData extends Component { heroDataInfo: HeroDataInfo = null; public loadData() { this.getHeroData(); this.addMoreDefaultData(); } addMoreDefaultData() { if (!this.heroDataInfo?.skillSpecial?.length) { this.heroDataInfo.skillSpecial = new Array(); this.heroDataInfo.skillSpecial = [1, 2]; this.setHeroDara(this.heroDataInfo); UmLog.log("Add more data", JSON.stringify(this.heroDataInfo)); } if (!this.heroDataInfo?.manaRecoveryTime) { this.heroDataInfo.manaRecoveryTime = 10; this.setHeroDara(this.heroDataInfo); UmLog.log("Add more data", JSON.stringify(this.heroDataInfo)); } } public getHeroData(): HeroDataInfo { if (!this.heroDataInfo) { var data = this.getDataFromStorage(); if (data?.length) { this.heroDataInfo = JSON.parse(data); return this.heroDataInfo; } else { this.heroDataInfo = this.defaultData(); return this.heroDataInfo; } } return this.heroDataInfo; } public setHeroDara(dataInfo) { this.heroDataInfo = dataInfo; this.saveDataToStroge(); } defaultData(): HeroDataInfo { return { hp: 100, weapon: 1, shooting: { AtkRange: 5, AtkCoolDown: 500, AtkSpeed: 3, Damage: 4, AoERange: 1 }, manaRecoveryTime: 10, skillSpecial: [1, 2] }; } private getDataFromStorage(): string { var result = UmStorageManager.instance.getStringByKey("hero_data_info", ""); UmLog.log("getDataFromStorage => ", result); return result; } private saveDataToStroge() { UmStorageManager.instance.setStringByKey("hero_data_info", JSON.stringify(this.heroDataInfo)); } }