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);
|
}
|
}
|
// 优先功能提醒类型:1觉醒 2升级 3突破 4升星
|
// 优先顺序:
|
public int funcState
|
{
|
get
|
{
|
return 0;
|
}
|
}
|
|
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);
|
}
|
|
}
|