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'; import { CCFloat } from 'cc'; import { GameDefine } from '../config/GameDefine'; const { ccclass, property } = _decorator; @ccclass('UserDataSaver') export class UserDataSaver extends Component { @property(CCFloat) check; heroDataInfo: HeroDataInfo = null; public hero_level: number; private level_key = "hero_level"; public expInLevel: number; private expInlevel_key = "expInlevel"; public expAllTime: number; private expAllTime_key = "expAllTime"; public gold: number; private gold_key = "gold" public activeSkillCollected: {}; private skill_collected_key = "skill_collected"; public leader_board: number[] = new Array(); private leader_board_key = "leader_board"; getKeySaver(key: string) { return "UserDataSaver_" + key; } public loadData() { this.gold = UmStorageManager.instance.getNumberByKey(this.getKeySaver(this.gold_key), 0); this.getLeaderBoardSaved(); // this.level = UmStorageManager.instance.getNumberByKey(this.getKeySaver(this.level_key), 1); // this.expInLevel = UmStorageManager.instance.getNumberByKey(this.getKeySaver(this.expInlevel_key), 0); // this.expAllTime = UmStorageManager.instance.getNumberByKey(this.getKeySaver(this.expAllTime_key), 0); // this.skill_collected = JSON.parse(UmStorageManager.instance.getStringByKey(this.getKeySaver(this.skill_collected_key), this.skillCollectedDefault())); } public saveData() { UmStorageManager.instance.setNumberByKey(this.getKeySaver(this.gold_key), this.gold); this.saveLeaderBoard(); // UmStorageManager.instance.setNumberByKey(this.getKeySaver(this.level_key), this.level); // UmStorageManager.instance.setNumberByKey(this.getKeySaver(this.expInlevel_key), this.expInLevel); // UmStorageManager.instance.setNumberByKey(this.getKeySaver(this.expAllTime_key), this.expAllTime); // UmStorageManager.instance.setStringByKey(this.getKeySaver(this.skill_collected_key), JSON.stringify(this.skill_collected)); } resetData() { this.hero_level = 1; this.expInLevel = 0; this.expAllTime = 0; this.activeSkillCollected = this.skillCollectedDefault(); this.loadData(); } skillCollectedDefault() { var results = {}; var listKeys = GameDefine.ACTIVE_SKILL_KEY; for (var i = 0; i < listKeys.length; i++) { results[listKeys[i]] = 1; } return results; } collectSkill(skillId: string, plusLevel: number) { var skillLevel = 0; if (this.activeSkillCollected.hasOwnProperty((skillId))) skillLevel = this.activeSkillCollected[skillId]; skillLevel += plusLevel; skillLevel = Math.min(skillLevel, 20); this.activeSkillCollected[skillId] = skillLevel; this.saveData(); } public updateLeaderBoard(newPoint: number) { this.getLeaderBoardSaved(); this.leader_board.push(newPoint); this.saveLeaderBoard(); } private getLeaderBoardSaved() { this.leader_board = JSON.parse(UmStorageManager.instance.getStringByKey(this.getKeySaver(this.leader_board_key), "[]")); return this.leader_board; } private saveLeaderBoard() { UmStorageManager.instance.setStringByKey(this.getKeySaver(this.leader_board_key), JSON.stringify(this.leader_board)); } }