using Core.Utility; using Excel2Json; using Fort23.UTool; namespace GameLogic.Hero { public class SkillInfo { public CombatHeroInfo heroInfo; public SkillConfig skillConfig; /// /// 是否解锁 /// public bool isUnLock; public SkillUpConfig upConfig; // private SkillData _skillData; public void UpdateInfo() { isUnLock = PlayerManager.Instance.heroController.IsUnLockSkill(heroInfo.level.Value, heroInfo.star.Value, skillConfig.ID); } public void Init(SkillData skillData, SkillConfig skillConfig) { // this._skillData = skillData; this.skillConfig = skillConfig; heroInfo = skillData.heroInfo; isUnLock = PlayerManager.Instance.heroController.IsUnLockSkill(heroInfo.level.Value, heroInfo.star.Value, skillConfig.ID); int skillUpID = skillConfig.ID % 100; upConfig = ConfigComponent.Instance.Get(skillUpID); // 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; // } // } // } } } }