| 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<int, int> allSkillTypeIDToID = new Dictionary<int, int>();  //技能类型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); | 
|     } | 
|   | 
| } |