using System.Collections.Generic; using UnityEngine; public partial class HeroInfo { // 觉醒配置 public HeroAwakeConfig awakeConfig { get; private set; } // 品质觉醒配置 public HeroQualityAwakeConfig qualityAwakeConfig { get; private set; } // 武将觉醒等级 public int awakeLevel { get { if (itemHero == null) return 0; return itemHero.GetUseDataFirstValue(76); } } Dictionary awakeAttrs = new Dictionary(); //计算觉醒属性 public void RefreshAwakeAttr() { awakeAttrs.Clear(); for (int i = 0; i < awakeLevel; i++) { var tmpAwakeConfig = HeroAwakeConfig.GetHeroAwakeConfig(heroId, awakeLevel); if (tmpAwakeConfig == null) continue; for(int j = 0; j < tmpAwakeConfig.AttrIDList.Length; j++) { int id = tmpAwakeConfig.AttrIDList[j]; if (id == 0) continue; if (!breakAttrs.ContainsKey(id)) { breakAttrs.Add(id, tmpAwakeConfig.AttrValueList[j]); } else { breakAttrs[id] += tmpAwakeConfig.AttrValueList[j]; } } if (tmpAwakeConfig.SkillID != 0) { var skillConfig = SkillConfig.Get(tmpAwakeConfig.SkillID); if (skillConfig == null) { Debug.LogError("觉醒技能配置错误" + tmpAwakeConfig.SkillID); continue; } if (allSkillTypeIDToID.ContainsKey(skillConfig.SkillTypeID)) { var tmpSkillConfig = SkillConfig.Get(allSkillTypeIDToID[skillConfig.SkillTypeID]); if (skillConfig.SkillLV > tmpSkillConfig.SkillLV) { //取最大技能 allSkillTypeIDToID[skillConfig.SkillTypeID] = tmpAwakeConfig.SkillID; } } else { allSkillTypeIDToID[skillConfig.SkillTypeID] = tmpAwakeConfig.SkillID; } } } } public int GetAwakeAttrValue(int attrType) { int value = 0; awakeAttrs.TryGetValue(attrType, out value); return value; } public int GetAwakeAttrPer(int attrType) { if (PlayerPropertyConfig.baseAttr2perDict.ContainsKey(attrType)) { var pertype = PlayerPropertyConfig.baseAttr2perDict[attrType]; return awakeAttrs.ContainsKey(pertype) ? awakeAttrs[pertype] : 0; } return 0; } }