using Core.Utility;
using Excel2Json;
using Fort23.UTool;
namespace GameLogic.Hero
{
public class SkillInfo
{
public HeroInfo heroInfo;
public SkillConfig skillConfig;
///
/// 是否解锁
///
public bool isUnLock;
public SkillUpConfig skillUpConfig;
private SkillData _skillData;
public void Init(SkillData skillData, SkillConfig skillConfig)
{
this._skillData = skillData;
this.skillConfig = skillConfig;
heroInfo = skillData.heroInfo;
isUnLock = false;
if (skillConfig.ID == GlobalParam.Normal_Attack_Skill_Group_ID)
{
isUnLock = true;
}
else
{
//整体可能有点绕,后面再看优化不
//取技能ID的后两位,后两位是技能解锁表SkillUpConfig的ID, 取这个ID来判断,这个技能是否解锁,以及还差多少差解锁
int skillUpID = skillConfig.ID % 100;
skillUpConfig = ConfigComponent.Instance.Get(skillUpID);
//取个位
int gw = skillUpID % 10;
int skillUpID1 = -1;
//当个位>1时,需要额外判断一下,技能的1级是否已经解锁(可能1级是星级解锁),比如 21,31,,41。
//避免出现,技能是5星解锁解锁1级,200级解锁2级,但玩家现在4星,201级,就不该解锁2级,因为星级不够
if (gw > 1)
{
//技能1级的解锁ID,例如: 33 - 3 + 1 = 31, 31就是技能1级的解锁条件id
skillUpID1 = skillUpID - gw + 1;
}
//等级解锁
if (skillUpConfig.upType == 1)
{
SkillUpConfig skillUpConfig1 = new SkillUpConfig();
if (skillUpID1 > 0)
{
skillUpConfig1 = ConfigComponent.Instance.Get(skillUpID1);
}
//如果技能的第一级需要星级解锁,需额外判断一下星级是否达到
bool isStarOk = skillUpConfig1.upType != 2 || heroInfo.star.Value > skillUpConfig1.upValue;
if (heroInfo.level.Value >= skillUpConfig.upValue && isStarOk)
{
isUnLock = true;
}
}
//星级解锁
else if (skillUpConfig.upType == 2)
{
if (heroInfo.star.Value >= skillUpConfig.upValue)
{
isUnLock = true;
}
}
}
}
}
}