using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
|
//武将天赋:升星获得天赋,可洗练
|
public partial class HeroInfo
|
{
|
|
public int heroStar
|
{
|
get
|
{
|
if (itemHero == null)
|
return 0;
|
return itemHero.GetUseDataFirstValue(72);
|
}
|
}
|
|
// 75 # 英雄天赋洗炼锁定索引列表,对应71天赋ID索引
|
// 77 # 英雄天赋洗炼随机ID列表
|
// 79 # 英雄觉醒时随机天赋选项ID列表
|
// 71 # 英雄天赋ID列表
|
public List<int> talentIDList
|
{
|
get
|
{
|
if (itemHero == null)
|
return null;
|
return itemHero.GetUseData(71);
|
}
|
}
|
|
// 73 # 英雄天赋ID等级列表,对应71天赋ID的等级
|
public List<int> talentLvList
|
{
|
get
|
{
|
if (itemHero == null)
|
return null;
|
return itemHero.GetUseData(73);
|
}
|
}
|
|
// 75 # 英雄天赋洗炼锁定索引列表,对应71天赋ID索引
|
public List<int> talentLockList
|
{
|
get
|
{
|
if (itemHero == null)
|
return null;
|
return itemHero.GetUseData(75);
|
}
|
}
|
|
|
Dictionary<int, int> talentAttrDic = new Dictionary<int, int>(); //属性ID : 天赋属性值
|
|
protected void RefreshTalentAttr()
|
{
|
talentAttrDic.Clear();
|
|
for (int i = 0; i < talentIDList.Count; i++)
|
{
|
if (talentIDList[i] == 0)
|
{
|
continue;
|
}
|
var config = HeroTalentConfig.Get(talentIDList[i]);
|
if (!talentAttrDic.ContainsKey(config.AttrID))
|
{
|
//天赋属性,值*天赋等级
|
talentAttrDic[config.AttrID] = config.AttrValue * talentLvList[i];
|
}
|
else
|
{
|
talentAttrDic[config.AttrID] += config.AttrValue * talentLvList[i];
|
}
|
}
|
|
}
|
|
public int GetTalentAttrValue(int attrType)
|
{
|
int value = 0;
|
talentAttrDic.TryGetValue(attrType, out value);
|
return value;
|
}
|
|
public int GetTalentAttrPer(int attrType)
|
{
|
if (PlayerPropertyConfig.baseAttr2perDict.ContainsKey(attrType))
|
{
|
var pertype = PlayerPropertyConfig.baseAttr2perDict[attrType];
|
return talentAttrDic.ContainsKey(pertype) ? talentAttrDic[pertype] : 0;
|
}
|
return 0;
|
}
|
|
|
//天赋会更快到达满级;觉醒可以提升星上限,如初始时40满星,觉醒X级后50满星
|
//判断当前是否满星
|
public bool IsFullStar()
|
{
|
if (HeroAwakeConfig.GetHeroAwakeConfig(heroId, 1) == null)
|
{
|
return heroStar >= HeroQualityConfig.Get(Quality).InitStarUpper;
|
}
|
|
//根据觉醒累计提升星上限
|
int addStarCount = 0;
|
for (int i = 1; i <= awakeLevel; i++)
|
{
|
addStarCount += HeroAwakeConfig.GetHeroAwakeConfig(heroId, i).AddStarUpper;
|
}
|
return heroStar >= HeroQualityConfig.Get(Quality).InitStarUpper + addStarCount;
|
}
|
|
public bool IsFullGift()
|
{
|
//检查talentLvList 所有元素都大于等于10
|
return talentLvList.All(x => x >= HeroUIManager.Instance.maxGiftLevel);
|
}
|
|
|
|
public int GetTalentLockCount()
|
{
|
//talentLockList里的元素全部相加 1代表锁定 0代表未锁定
|
return talentLockList.Sum();
|
}
|
|
}
|