import { JsonAsset } from 'cc'; import { TextAsset } from 'cc'; import { _decorator, Component, Node } from 'cc'; import { UmLog } from '../../../cc-common/cc-util/UmLog'; const { ccclass, property } = _decorator; @ccclass('GameDataConfig') export class GameDataConfig extends Component { @property(JsonAsset) heroAsset: JsonAsset = null!; @property(JsonAsset) enemyAsset: JsonAsset = null!; @property(JsonAsset) bossAsset: JsonAsset = null!; @property(JsonAsset) activeSkillAsset: JsonAsset = null!; @property(JsonAsset) levelDesign: JsonAsset = null!; activeSkillDataConfigMap = {}; enemyDataConfigMap = {}; bossDataConfigMap = {}; protected onLoad(): void { this.convertActiveSkillDataConfig(); this.convertEnemyDataConfig(); this.convertBossDataConfig(); } convertActiveSkillDataConfig() { for (var i = 0; i < this.activeSkillAsset.json.length; i++) { var data = this.activeSkillAsset.json[i]; var converData = { No: data["no"], Skill_ID: data["skillid"], Skill_Name: data["skillname"], LevelSkill: data["levelskill"], Visual_Name: data["visualname"], DMG: data["dmg"], Mana: data["mana"], Range: data["range"], }; this.activeSkillDataConfigMap[converData.Skill_ID] = converData; } // this.activeSkillAsset?.destroy(); } convertEnemyDataConfig() { for (var i = 0; i < this.enemyAsset.json.length; i++) { var data = this.enemyAsset.json[i]; var converData = { No: data["no"], Name_Id: data["nameid"], Group: data["group"], Visual_Name: data["visualname"], Atk: data["atk"], Hp: data["hp"], Exp: data["exp"], AtkSpeed: data["atkspeed"], AtkCoolDown: data["atkcooldown"], MoveSpeed: data["movespeed"], AtkRange: data["atkrange"], VisualRange: data["visualrange"], AoEDmg: data["aoedmg"], AoERange: data["aoerange"], }; this.enemyDataConfigMap[converData.Name_Id] = converData; } // this.enemyAsset.destroy(); } convertBossDataConfig() { for (var i = 0; i < this.bossAsset.json.length; i++) { var data = this.bossAsset.json[i]; var converData = { No: data["no"], Name_Id: data["nameid"], Group: data["group"], Visual_Name: data["visualname"], Atk: data["atk"], Hp: data["hp"], AtkSpeed: data["atkspeed"], Exp: data["exp"], MoveSpeed: data["movespeed"], AtkRange: data["atkrange"], AtkCoolDown: data["atkcooldown"], VisualRange: data["visualrange"], SkillDmg: data["Skilldmg"], SkillEffect: data["skilleffect"], }; this.bossDataConfigMap[converData.Name_Id] = converData; } // this.bossAsset.destroy(); } public ACTIVE_SKILL_USE_INFO = [ { skillId: 0, skillName: "Skill 1", mana: 10, useType: 0, useTime: 2 }, { skillId: 1, skillName: "Skill 2", mana: 15, useType: 1, useTime: 1 }, { skillId: 2, skillName: "Skill 3", mana: 30, useType: 0, useTime: 10.0 }, ]; getActiveSkill(level: number = 1): ActiveSkillData[] { return [this.activeSkillDataConfigMap[`AS1|${level}`], this.activeSkillDataConfigMap[`AS2|${level}`], this.activeSkillDataConfigMap[`AS3|${level}`]]; } public HERO_CONTROL_CONFIG = { joystick_speed: 5 } public stageInfo = { creep: 3, boss: 1 } protected start(): void { UmLog.log("hero json => ", this.getHeroDataByLevel(1)); UmLog.log("leveldesign json => ", this.getLevelDesignByLevel(1).goldcollect); } public getHeroDataByLevel(level: number): any { var data = this.heroAsset.json[level - 1]; var result = { Level: data["level"], Atk: data["atk"], Hp: data["hp"], AtkRange: data["atkrange"], AtkSpeed: data["atkspeed"], AtkCoolDown: data["atkcooldown"], ManaMax: data["manamax"], ManaGenerate: data["managenerate"], HpHeal: data["hpheal"], Exp: data["exp"], AoEDmg: data["aoedmg"], AoERange: data["aoerange"], }; return result; } public getEnemyDataConfigById(enemyId: string) { return this.enemyDataConfigMap[enemyId]; } public getBossDataConfigById(bossId: string) { return this.bossDataConfigMap[bossId]; } public getLevelDesignByLevel(level: number): LevelDesignInfo { var result: LevelDesignInfo = JSON.parse(JSON.stringify(this.levelDesign.json[level - 1])); return result; } } export interface ActiveSkillData { No: number; Skill_ID: string; Skill_Name: string; LevelSkill: number; Visual_Name: string; DMG: number; Mana: number; Range: number } export interface StageInfo { creep: number; boos: number; } export interface LevelDesignInfo { level: number; atkratio: number; hpratio: number; expratio: number; goldcollect: number; formations: string; reward: string; }