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); 
 | 
    } 
 | 
  
 | 
} 
 |