using System.Collections.Generic; using UnityEngine; using LitJson; // 武将信息:实际获得的武将,不包含图鉴数据 public partial class HeroInfo { // 武将配置表ID public int heroId; // 武将配置 public HeroConfig heroConfig { get; private set; } public ItemModel itemHero; //引用背包里的 数据同步 public HeroCountry heroCountry { get { return (HeroCountry)heroConfig.Country; } } // 品质配置 public HeroQualityConfig qualityConfig { get; private set; } public int Quality { get { return heroConfig.Quality; } } // 武将等级 public int heroLevel { get { if (itemHero == null) return 0; return itemHero.GetUseDataFirstValue(70); } } public bool isLock { get { return itemHero.itemInfo.isLock; } } //已学习的所有技能取最高级的技能 Dictionary allSkillTypeIDToID = new Dictionary(); //技能类型ID: 最高技能ID public HeroInfo(ItemModel _itemHero) { UpdateHero(_itemHero); } public void UpdateHero(ItemModel _itemHero) { itemHero = _itemHero; // HeroConfigUtility heroId = itemHero.config.ID; InitConfigs(); CalculateProperties(); // // 羁绊 // fetterInfoList.Clear(); // for (int i = 0; i < heroConfig.FetterIDList.Length; i++) // { // fetterInfoList.Add(new HeroFetterInfo(this, heroConfig.FetterIDList[i])); // } // 80 # 主阵型上阵位置 } protected void InitConfigs() { // 武将配置 heroConfig = HeroConfig.Get(heroId); // 品质配置 qualityConfig = HeroQualityConfig.Get(Quality); // 品质突破配置 qualityBreakConfig = HeroQualityBreakConfig.GetQualityBreakConfig(Quality, breakLevel); breakConfig = HeroBreakConfig.GetHeroBreakConfig(heroId, breakLevel); awakeConfig = HeroAwakeConfig.GetHeroAwakeConfig(heroId, awakeLevel); qualityAwakeConfig = HeroQualityAwakeConfig.GetQualityAwakeConfig(Quality, awakeLevel); } //是否上x阵 服务端队伍 public bool IsInTeamByTeamType(TeamType teamType) { return TeamManager.Instance.GetTeam(teamType).HasHeroInServer(itemHero.guid); } //是否上任何阵容 public bool IsInAnyTeam() { for (int i = 1; i < (int)TeamType.Max; i++) { if (TeamManager.Instance.GetTeam((TeamType)i).HasHeroInServer(itemHero.guid)) { return true; } } return false; } //是否上任何阵容,且只有一只 public bool IsInAnyTeamJustOne() { for (int i = 1; i < (int)TeamType.Max; i++) { var team = TeamManager.Instance.GetTeam((TeamType)i); if (team.HasHeroInServer(itemHero.guid)) { if (team.GetTeamHeroCount() == 1) return true; } } return false; } //下阵所有阵容 public void LeaveAllTeam() { for (int i = 1; i < (int)TeamType.Max; i++) { int pos; var team = TeamManager.Instance.GetTeam((TeamType)i); if (TeamManager.Instance.GetTeam((TeamType)i).RemoveHero(this, out pos)) { //如果是最后一个武将,则默认上阵一个 team.SaveTeam(); } } } public long GetSkillsFightPower() { long fightPower = 0; foreach (var skillID in allSkillTypeIDToID.Values) { fightPower += SkillConfig.Get(skillID).FightPower; } return fightPower; } public void ChangeLockState() { var pack = new CB238_tagCSHeroLock(); pack.ItemIndex = (ushort)itemHero.gridIndex; pack.IsLock = isLock ? (byte)0 : (byte)1; GameNetSystem.Instance.SendInfo(pack); } }