//武将突破:武将升级后需要突破才能继续升级,突破可获得潜能 using System.Collections.Generic; public partial class HeroInfo { // 突破配置 public HeroBreakConfig breakConfig { get; private set;} // 品质突破配置 public HeroQualityBreakConfig qualityBreakConfig { get; private set;} // 武将突破等级 public int breakLevel { get { if (itemHero == null) return 0; return itemHero.GetUseDataFirstValue(74); } } Dictionary breakAttrs = new Dictionary(); //潜能属性id:潜能值 //计算潜能属性 public void RefreshBreakAttr() { breakAttrs.Clear(); for (int i = 0; i < breakLevel; i++) { var tmpBreakConfig = HeroBreakConfig.GetHeroBreakConfig(heroId, i); if (tmpBreakConfig == null) continue; for(int j = 0; j < tmpBreakConfig.AttrIDList.Length; j++) { int id = tmpBreakConfig.AttrIDList[j]; if (id == 0) continue; if (!breakAttrs.ContainsKey(id)) { breakAttrs.Add(id, tmpBreakConfig.AttrValueList[j]); } else { breakAttrs[id] += tmpBreakConfig.AttrValueList[j]; } } if (tmpBreakConfig.SkillID != 0) { var skillConfig = SkillConfig.Get(tmpBreakConfig.SkillID); if (skillConfig == null) continue; if (allSkillTypeIDToID.ContainsKey(skillConfig.SkillTypeID)) { var tmpSkillConfig = SkillConfig.Get(allSkillTypeIDToID[skillConfig.SkillTypeID]); if (skillConfig.SkillLV > tmpSkillConfig.SkillLV) { //取最大技能 allSkillTypeIDToID[skillConfig.SkillTypeID] = tmpBreakConfig.SkillID; } } else { allSkillTypeIDToID[skillConfig.SkillTypeID] = tmpBreakConfig.SkillID; } } } } public int GetBreakAttrValue(int attrType) { int value = 0; breakAttrs.TryGetValue(attrType, out value); return value; } public int GetBreakAttrPer(int attrType) { if (PlayerPropertyConfig.baseAttr2perDict.ContainsKey(attrType)) { var pertype = PlayerPropertyConfig.baseAttr2perDict[attrType]; return breakAttrs.ContainsKey(pertype) ? breakAttrs[pertype] : 0; } return 0; } }