SkillInfo.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using Core.Utility;
  2. using Excel2Json;
  3. using Fort23.UTool;
  4. namespace GameLogic.Hero
  5. {
  6. public class SkillInfo
  7. {
  8. public HeroInfo heroInfo;
  9. public SkillConfig skillConfig;
  10. /// <summary>
  11. /// 是否解锁
  12. /// </summary>
  13. public bool isUnLock;
  14. public SkillUpConfig skillUpConfig;
  15. private SkillData _skillData;
  16. public void Init(SkillData skillData, SkillConfig skillConfig)
  17. {
  18. this._skillData = skillData;
  19. this.skillConfig = skillConfig;
  20. heroInfo = skillData.heroInfo;
  21. isUnLock = false;
  22. if (skillConfig.ID == GlobalParam.Normal_Attack_Skill_Group_ID)
  23. {
  24. isUnLock = true;
  25. }
  26. else
  27. {
  28. //整体可能有点绕,后面再看优化不
  29. //取技能ID的后两位,后两位是技能解锁表SkillUpConfig的ID, 取这个ID来判断,这个技能是否解锁,以及还差多少差解锁
  30. int skillUpID = skillConfig.ID % 100;
  31. skillUpConfig = ConfigComponent.Instance.Get<SkillUpConfig>(skillUpID);
  32. //取个位
  33. int gw = skillUpID % 10;
  34. int skillUpID1 = -1;
  35. //当个位>1时,需要额外判断一下,技能的1级是否已经解锁(可能1级是星级解锁),比如 21,31,,41。
  36. //避免出现,技能是5星解锁解锁1级,200级解锁2级,但玩家现在4星,201级,就不该解锁2级,因为星级不够
  37. if (gw > 1)
  38. {
  39. //技能1级的解锁ID,例如: 33 - 3 + 1 = 31, 31就是技能1级的解锁条件id
  40. skillUpID1 = skillUpID - gw + 1;
  41. }
  42. //等级解锁
  43. if (skillUpConfig.upType == 1)
  44. {
  45. SkillUpConfig skillUpConfig1 = new SkillUpConfig();
  46. if (skillUpID1 > 0)
  47. {
  48. skillUpConfig1 = ConfigComponent.Instance.Get<SkillUpConfig>(skillUpID1);
  49. }
  50. //如果技能的第一级需要星级解锁,需额外判断一下星级是否达到
  51. bool isStarOk = skillUpConfig1.upType != 2 || heroInfo.star.Value > skillUpConfig1.upValue;
  52. if (heroInfo.level.Value >= skillUpConfig.upValue && isStarOk)
  53. {
  54. isUnLock = true;
  55. }
  56. }
  57. //星级解锁
  58. else if (skillUpConfig.upType == 2)
  59. {
  60. if (heroInfo.star.Value >= skillUpConfig.upValue)
  61. {
  62. isUnLock = true;
  63. }
  64. }
  65. }
  66. }
  67. }
  68. }