HeroInfo.cs 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  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 Map<int, float> daolvBlMap = new Map<int, float>();
  16. // public List<int> ImmortalBond = new List<int>();
  17. public HeroInfo()
  18. {
  19. }
  20. public void InitHero(AccountFileInfo.HeroData heroData)
  21. {
  22. this.heroData = heroData;
  23. InitHero(heroData.heroModelId, heroData.heroPowerId);
  24. }
  25. public void InitHero(int modelID, int powerID)
  26. {
  27. this.modelID = modelID;
  28. SetDataConfig(modelID,
  29. powerID);
  30. ComputeHeroInfo();
  31. CalBasicAttribute();
  32. }
  33. public HeroInfo Upgrade()
  34. {
  35. int currentMiao = (int)((TimeHelper.ClientNow() - PlayerManager.Instance.myHero.heroData.upTime) / 1000);
  36. int allexp = currentMiao * PlayerManager.Instance.myHero.powerUpConfig.AutoXiuwei;
  37. heroData.exp += allexp;
  38. heroData.exp -= powerUpConfig.levelUpExp;
  39. heroData.upTime = TimeHelper.ClientNow();
  40. heroData.isCombat = false;
  41. heroData.heroPowerId++;
  42. InitHero(heroData);
  43. PlayerManager.Instance.SaveHeroData(this);
  44. EventManager.Instance.Dispatch(CustomEventType.JingJieUpgrade, null);
  45. return this;
  46. }
  47. public void GetDaoLvBl()
  48. {
  49. daolvBlMap.Clear();
  50. foreach (var i in heroData?.ImmortalBond)
  51. {
  52. DaoyouModelConfig daoyouModelConfig = ConfigComponent.Instance.Get<DaoyouModelConfig>(i);
  53. foreach (var i1 in daoyouModelConfig.daolvSkillID)
  54. {
  55. daolvSkill daolvSkill = ConfigComponent.Instance.Get<daolvSkill>(i1);
  56. //唯一只加一次
  57. if (daolvSkill.type == 1)
  58. {
  59. if (!daolvBlMap.ContainsKey(i1))
  60. {
  61. daolvBlMap.Add(i1, daolvSkill.para[0]);
  62. }
  63. }
  64. else
  65. {
  66. if (!daolvBlMap.ContainsKey(i1))
  67. {
  68. daolvBlMap.Add(i1, daolvSkill.para[0]);
  69. }
  70. else
  71. {
  72. daolvBlMap[i1] += daolvSkill.para[0];
  73. }
  74. }
  75. }
  76. }
  77. }
  78. public void ComputeHeroInfo()
  79. {
  80. attributeBlValue.Clear();
  81. CalAttribute();
  82. GetDaoLvBl();
  83. if (!PlayerManager.Instance.isTest)
  84. {
  85. List<FaBaoInfo> myAllFaBao = PlayerManager.Instance.FaBaoControl.myAllFaBao;
  86. foreach (var faBaoInfo in myAllFaBao)
  87. {
  88. if (faBaoInfo.SkillConfig.addPropertyType != null)
  89. {
  90. for (int i = 0; i < faBaoInfo.SkillConfig.addPropertyType.Length; i++)
  91. {
  92. int shuxingID = faBaoInfo.SkillConfig.addPropertyType[i];
  93. float shuxingValue = faBaoInfo.SkillConfig.addPropertyValue[i];
  94. ComputeHeroAttributeType(shuxingID, shuxingValue);
  95. }
  96. }
  97. }
  98. ///功法加被动属性
  99. List<SkillInfo> allSkill = PlayerManager.Instance.GongFaControl.allSkill;
  100. for (int j = 0; j < allSkill.Count; j++)
  101. {
  102. SkillInfo skillInfo = allSkill[j];
  103. if (skillInfo.skillConfig.addPropertyType != null)
  104. {
  105. for (int i = 0; i < skillInfo.skillConfig.addPropertyType.Length; i++)
  106. {
  107. int shuxingID = skillInfo.skillConfig.addPropertyType[i];
  108. float shuxingValue = skillInfo.skillConfig.addPropertyValue[i];
  109. ComputeHeroAttributeType(shuxingID, shuxingValue);
  110. }
  111. }
  112. }
  113. foreach (var VARIABLE in attributeBlValue)
  114. {
  115. switch (VARIABLE.Key)
  116. {
  117. case HeroAttributeType.HP_BL:
  118. hp.Value += (long)(hp.Value * (VARIABLE.Value / 100f));
  119. break;
  120. case HeroAttributeType.ATT_BL:
  121. attack.Value += (long)(attack.Value * (VARIABLE.Value / 100f));
  122. break;
  123. case HeroAttributeType.DEF_BL:
  124. defense.Value += (long)(defense.Value * (VARIABLE.Value / 100f));
  125. break;
  126. case HeroAttributeType.ShengShi_BL:
  127. shenshi.Value += (long)(shenshi.Value * (VARIABLE.Value / 100f));
  128. break;
  129. }
  130. }
  131. }
  132. //道侣带来的属性加成
  133. foreach (var keyValuePair in daolvBlMap)
  134. {
  135. daolvSkill daolvSkill = ConfigComponent.Instance.Get<daolvSkill>(keyValuePair.Key);
  136. ComputeHeroAttributeType(daolvSkill.AttrID, keyValuePair.Value);
  137. }
  138. if (CombatController.currActiveCombat != null && CombatController.currActiveCombat.playerHeroEntity != null)
  139. {
  140. CombatController.currActiveCombat.playerHeroEntity.CurrCombatHeroInfo = this.Copy();
  141. CombatController.currActiveCombat.playerHeroEntity.MaxCombatHeroInfo = this.Copy();
  142. }
  143. }
  144. private void ComputeHeroAttributeType(int shuxingID, float value)
  145. {
  146. switch ((HeroAttributeType)shuxingID)
  147. {
  148. case HeroAttributeType.HP:
  149. hp.Value += (int)value;
  150. break;
  151. case HeroAttributeType.ATT:
  152. attack.Value += (int)value;
  153. break;
  154. case HeroAttributeType.DEF:
  155. defense.Value += (int)value;
  156. break;
  157. case HeroAttributeType.Gold:
  158. Metal += value;
  159. break;
  160. case HeroAttributeType.Wood:
  161. Wood += value;
  162. break;
  163. case HeroAttributeType.Fire:
  164. Fire += value;
  165. break;
  166. case HeroAttributeType.Water:
  167. Water += value;
  168. break;
  169. case HeroAttributeType.Earth:
  170. Earth += value;
  171. break;
  172. case HeroAttributeType.Shields:
  173. Shield.Value += (int)value;
  174. break;
  175. default:
  176. if (attributeBlValue.TryGetValue((HeroAttributeType)shuxingID, out var value1)
  177. )
  178. {
  179. attributeBlValue[(HeroAttributeType)shuxingID] = value1 + value;
  180. }
  181. else
  182. {
  183. attributeBlValue.Add((HeroAttributeType)shuxingID, value);
  184. }
  185. break;
  186. }
  187. }
  188. }
  189. }