using System.Collections.Generic; using System.Linq; //羁绊:上阵后的武将组合可激活羁绊 public partial class HeroInfo { Dictionary fetterAttrs = new Dictionary(); //羁绊属性ID:属性值 //不同阵容羁绊属性不同,实时计算,与其他缓存的不同 public void RefreshFetterAttrsWhenCalcPower(TeamType teamType) { fetterAttrs.Clear(); var list = GetActiveFetter(heroConfig, TeamManager.Instance.GetTeam(teamType)); foreach (var id in list) { var config = HeroFetterConfig.Get(id); var attrIDs = config.AttrIDList; var attrValues = config.AttrValueList; for (int i = 0; i < attrIDs.Length; i++) { if (!fetterAttrs.ContainsKey(attrIDs[i])) { fetterAttrs.Add(attrIDs[i], attrValues[i]); } else { fetterAttrs[attrIDs[i]] += attrValues[i]; } } } } public int GetFetterAttrValue(int attrType) { int value = 0; fetterAttrs.TryGetValue(attrType, out value); return value; } public int GetFetterAttrPer(int attrType) { if (PlayerPropertyConfig.baseAttr2perDict.ContainsKey(attrType)) { var pertype = PlayerPropertyConfig.baseAttr2perDict[attrType]; return fetterAttrs.ContainsKey(pertype) ? fetterAttrs[pertype] : 0; } return 0; } public List GetActiveFetter(HeroConfig config, TeamBase teamBase) { List list = new List(); if (config.FetterIDList.Length == 0) return list; foreach (var fetterID in config.FetterIDList) { HeroFetterConfig fetterConfig = HeroFetterConfig.Get(fetterID); int count = 0; for (int i = 0; i < teamBase.tempHeroes.Length; i++) { TeamHero teamHero = teamBase.tempHeroes[i]; if (null == teamHero) continue; if (fetterConfig.HeroIDList.Contains(teamHero.heroId)) { count++; } if (count >= fetterConfig.HeroIDList.Length) { list.Add(fetterID); break; } } } return list; } }