HeroInfo.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. using System.Collections.Generic;
  2. using Common.Utility.CombatEvent;
  3. using Excel2Json;
  4. using Fort23.Core;
  5. using Fort23.UTool;
  6. using GameLogic.Combat.CombatTool;
  7. using Utility;
  8. namespace GameLogic.Hero
  9. {
  10. public class HeroInfo : CombatHeroInfo
  11. {
  12. public AccountFileInfo.HeroData heroData;
  13. private string _iconZhiYe;
  14. private Map<HeroAttributeType, float> attributeBlValue = new Map<HeroAttributeType, float>();
  15. // public List<int> ImmortalBond = new List<int>();
  16. public HeroInfo()
  17. {
  18. }
  19. public void InitHero(AccountFileInfo.HeroData heroData)
  20. {
  21. this.heroData = heroData;
  22. InitHero(heroData.heroModelId, heroData.heroPowerId);
  23. }
  24. public void InitHero(int modelID, int powerID)
  25. {
  26. this.modelID = modelID;
  27. SetDataConfig(modelID,
  28. powerID);
  29. ComputeHeroInfo();
  30. CalBasicAttribute();
  31. }
  32. public HeroInfo Upgrade()
  33. {
  34. int currentMiao = (int)((TimeHelper.ClientNow() - PlayerManager.Instance.myHero.heroData.upTime) / 1000);
  35. int allexp = currentMiao * PlayerManager.Instance.myHero.powerUpConfig.AutoXiuwei;
  36. heroData.exp += allexp;
  37. heroData.exp -= powerUpConfig.levelUpExp;
  38. heroData.upTime = TimeHelper.ClientNow();
  39. heroData.isCombat = false;
  40. heroData.heroPowerId++;
  41. InitHero(heroData);
  42. PlayerManager.Instance.SaveHeroData(this);
  43. EventManager.Instance.Dispatch(CustomEventType.JingJieUpgrade,null);
  44. return this;
  45. }
  46. public void ComputeHeroInfo()
  47. {
  48. attributeBlValue.Clear();
  49. CalAttribute();
  50. if (!PlayerManager.Instance.isTest)
  51. {
  52. List<FaBaoInfo> myAllFaBao = PlayerManager.Instance.FaBaoControl.myAllFaBao;
  53. foreach (var faBaoInfo in myAllFaBao)
  54. {
  55. if (faBaoInfo.SkillConfig.addPropertyType != null)
  56. {
  57. for (int i = 0; i < faBaoInfo.SkillConfig.addPropertyType.Length; i++)
  58. {
  59. int shuxingID = faBaoInfo.SkillConfig.addPropertyType[i];
  60. float shuxingValue = faBaoInfo.SkillConfig.addPropertyValue[i];
  61. ComputeHeroAttributeType(shuxingID, shuxingValue);
  62. }
  63. }
  64. }
  65. ///功法加被动属性
  66. List<SkillInfo> allSkill = PlayerManager.Instance.GongFaControl.allSkill;
  67. for (int j = 0; j < allSkill.Count; j++)
  68. {
  69. SkillInfo skillInfo = allSkill[j];
  70. if (skillInfo.skillConfig.addPropertyType != null)
  71. {
  72. for (int i = 0; i < skillInfo.skillConfig.addPropertyType.Length; i++)
  73. {
  74. int shuxingID = skillInfo.skillConfig.addPropertyType[i];
  75. float shuxingValue = skillInfo.skillConfig.addPropertyValue[i];
  76. ComputeHeroAttributeType(shuxingID, shuxingValue);
  77. }
  78. }
  79. }
  80. foreach (var VARIABLE in attributeBlValue)
  81. {
  82. switch (VARIABLE.Key)
  83. {
  84. case HeroAttributeType.HP_BL:
  85. hp.Value += (long)(hp.Value * (VARIABLE.Value / 100f));
  86. break;
  87. case HeroAttributeType.ATT_BL:
  88. attack.Value += (long)(attack.Value * (VARIABLE.Value / 100f));
  89. break;
  90. case HeroAttributeType.DEF_BL:
  91. defense.Value += (long)(defense.Value * (VARIABLE.Value / 100f));
  92. break;
  93. case HeroAttributeType.ShengShi_BL:
  94. shenshi.Value += (long)(shenshi.Value * (VARIABLE.Value / 100f));
  95. break;
  96. }
  97. }
  98. }
  99. if (CombatController.currActiveCombat != null && CombatController.currActiveCombat.playerHeroEntity != null)
  100. {
  101. CombatController.currActiveCombat.playerHeroEntity.CurrCombatHeroInfo = this.Copy();
  102. CombatController.currActiveCombat.playerHeroEntity.MaxCombatHeroInfo = this.Copy();
  103. }
  104. }
  105. private void ComputeHeroAttributeType(int shuxingID, float value)
  106. {
  107. switch ((HeroAttributeType)shuxingID)
  108. {
  109. case HeroAttributeType.HP:
  110. hp.Value += (int)value;
  111. break;
  112. case HeroAttributeType.ATT:
  113. attack.Value += (int)value;
  114. break;
  115. case HeroAttributeType.DEF:
  116. defense.Value += (int)value;
  117. break;
  118. case HeroAttributeType.Gold:
  119. Metal += value;
  120. break;
  121. case HeroAttributeType.Wood:
  122. Wood += value;
  123. break;
  124. case HeroAttributeType.Fire:
  125. Fire += value;
  126. break;
  127. case HeroAttributeType.Water:
  128. Water += value;
  129. break;
  130. case HeroAttributeType.Earth:
  131. Earth += value;
  132. break;
  133. case HeroAttributeType.Shields:
  134. Shield.Value += (int)value;
  135. break;
  136. default:
  137. if (attributeBlValue.TryGetValue((HeroAttributeType)shuxingID, out var value1)
  138. )
  139. {
  140. attributeBlValue[(HeroAttributeType)shuxingID] = value1 + value;
  141. }
  142. else
  143. {
  144. attributeBlValue.Add((HeroAttributeType)shuxingID, value);
  145. }
  146. break;
  147. }
  148. }
  149. }
  150. }