MagicWeaponWidget.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. using Common.Utility.CombatEvent;
  2. using Core.Language;
  3. using Excel2Json;
  4. using Fort23.Core;
  5. using Fort23.UTool;
  6. using GameLogic.Combat.Buff;
  7. using GameLogic.Combat.CombatTool;
  8. using GameLogic.Combat.Hero;
  9. using UnityEngine;
  10. namespace Fort23.Mono
  11. {
  12. [UIBinding(prefab = "MagicWeaponWidget")]
  13. public partial class MagicWeaponWidget : UIComponent
  14. {
  15. private CombatMagicWeaponEntity combatMagicWeaponEntity;
  16. private bool isChargedFinish;
  17. private bool isForewarn;
  18. private ParticleSystemPool noshifang;
  19. private ParticleSystemPool chargedFinish;
  20. // private ParticleSystemPool chargedFinish;
  21. private void Init()
  22. {
  23. }
  24. public override void AddEvent()
  25. {
  26. StaticUpdater.Instance.AddLateUpdateCallBack(Update);
  27. CombatEventManager.Instance.AddEventListener(CombatEventType.AddBuff, AddBuff);
  28. CombatEventManager.Instance.AddEventListener(CombatEventType.UseMagicWeapon, UseMagicWeapon);
  29. CombatEventManager.Instance.AddEventListener(CombatEventType.RemoveBuff, RemoveBuff);
  30. }
  31. public override void DelEvent()
  32. {
  33. StaticUpdater.Instance.RemoveLateUpdateCallBack(Update);
  34. CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddBuff, AddBuff);
  35. CombatEventManager.Instance.RemoveEventListener(CombatEventType.UseMagicWeapon, UseMagicWeapon);
  36. CombatEventManager.Instance.RemoveEventListener(CombatEventType.RemoveBuff, RemoveBuff);
  37. }
  38. private void UseMagicWeapon(IEventData iEventData)
  39. {
  40. UseMagicWeaponEventData useMagicWeaponEventData = iEventData as UseMagicWeaponEventData;
  41. if (useMagicWeaponEventData.combatMagicWeaponEntity == combatMagicWeaponEntity)
  42. {
  43. isChargedFinish = false;
  44. isForewarn = false;
  45. GObjectPool.Instance.Recycle(chargedFinish);
  46. chargedFinish = null;
  47. }
  48. }
  49. private void AddBuff(IEventData iEventData)
  50. {
  51. BuffEventData buffEventData = iEventData as BuffEventData;
  52. if (buffEventData.target == combatMagicWeaponEntity)
  53. {
  54. if (buffEventData.BuffBasic is b_1008)
  55. {
  56. GObjectPool.Instance.FetchAsync<ParticleSystemPool>("fx_ui_fb_Noshifang",
  57. delegate(ParticleSystemPool pool)
  58. {
  59. pool.transform.SetParent(transform);
  60. pool.transform.localPosition = new Vector3(0, 0, 0);
  61. pool.transform.SetAsLastSibling();
  62. noshifang = pool;
  63. });
  64. // feng.SetActive(true);
  65. }
  66. }
  67. }
  68. private void RemoveBuff(IEventData iEventData)
  69. {
  70. BuffEventData buffEventData = iEventData as BuffEventData;
  71. if (buffEventData.target == combatMagicWeaponEntity)
  72. {
  73. if (buffEventData.BuffBasic is b_1008)
  74. {
  75. GObjectPool.Instance.Recycle(noshifang);
  76. noshifang = null;
  77. }
  78. }
  79. }
  80. public override void AddButtonEvent()
  81. {
  82. myButton.onClick.AddListener(() =>
  83. {
  84. if (combatMagicWeaponEntity.IsEnemy)
  85. {
  86. // SkillConfig skillConfig = SkillBasic.SelfSkillConfig;
  87. CombatController.currActiveCombat.isUpdate = false;
  88. SkillMassgePanel.OpenSkillSelectPanel(
  89. LanguageManager.Instance.Text(combatMagicWeaponEntity.FaBaoInfo.FabaoConfig.name),
  90. LanguageManager.Instance.Text(combatMagicWeaponEntity.FaBaoInfo.FabaoConfig.model),
  91. delegate() { CombatController.currActiveCombat.isUpdate = true; });
  92. return;
  93. }
  94. if (combatMagicWeaponEntity == null || !combatMagicWeaponEntity.IsCanUse())
  95. {
  96. return;
  97. }
  98. b_1008 b1008 = combatMagicWeaponEntity.BuffControl.GetBuffBasicForType<b_1008>();
  99. if (b1008 != null)
  100. {
  101. return;
  102. }
  103. combatMagicWeaponEntity.UseMagicWeapon();
  104. });
  105. }
  106. public void InitWidget(CombatMagicWeaponEntity combatMagicWeaponEntity)
  107. {
  108. noshifang = null;
  109. chargedFinish = null;
  110. // feng.SetActive(false);
  111. this.combatMagicWeaponEntity = combatMagicWeaponEntity;
  112. }
  113. private void Update()
  114. {
  115. if (combatMagicWeaponEntity == null)
  116. {
  117. return;
  118. }
  119. float d =
  120. (combatMagicWeaponEntity.cd + combatMagicWeaponEntity.RootMagicWeaponControl.globalMagicWeaponCd) /
  121. (combatMagicWeaponEntity.MaxCd);
  122. float max = 140;
  123. float spMax = 80;
  124. float a = (max - spMax) / 2 / max;
  125. float startA = 1 - a;
  126. float fa = 1 - ((startA - d) / (startA - a));
  127. float y = icon_hui.imageH;
  128. icon_hui.fillAmount = fa;
  129. bg_hui.fillAmount = d;
  130. // bg_.fillAmount = d;
  131. if (combatMagicWeaponEntity.cd < 1 && !isForewarn)
  132. {
  133. isForewarn = true;
  134. GObjectPool.Instance.FetchAsync<ParticleSystemPool>("fx_ui_fb_gw_Starshifang",
  135. delegate(ParticleSystemPool pool)
  136. {
  137. pool.transform.SetParent(transform);
  138. pool.transform.localPosition = new Vector3(0, 0, 0);
  139. pool.transform.SetAsLastSibling();
  140. });
  141. }
  142. if (!isChargedFinish && combatMagicWeaponEntity.cd <= 0)
  143. {
  144. isChargedFinish = true;
  145. GObjectPool.Instance.FetchAsync<ParticleSystemPool>("fx_ui_fb_shifang",
  146. delegate(ParticleSystemPool pool)
  147. {
  148. pool.transform.SetParent(transform);
  149. pool.transform.localPosition = new Vector3(0, 0, 0);
  150. pool.transform.SetSiblingIndex(3);
  151. chargedFinish = pool;
  152. });
  153. }
  154. }
  155. }
  156. }