MagicWeaponWidget.cs 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  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. GObjectPool.Instance.Recycle(chargedFinish);
  44. chargedFinish = null;
  45. }
  46. }
  47. private void AddBuff(IEventData iEventData)
  48. {
  49. BuffEventData buffEventData = iEventData as BuffEventData;
  50. if (buffEventData.target == combatMagicWeaponEntity)
  51. {
  52. if (buffEventData.BuffBasic is b_1008)
  53. {
  54. GObjectPool.Instance.FetchAsync<ParticleSystemPool>("fx_ui_fb_Noshifang",
  55. delegate(ParticleSystemPool pool)
  56. {
  57. pool.transform.SetParent(transform);
  58. pool.transform.localPosition = new Vector3(0, 0, 0);
  59. pool.transform.SetAsLastSibling();
  60. noshifang = pool;
  61. });
  62. // feng.SetActive(true);
  63. }
  64. }
  65. }
  66. private void RemoveBuff(IEventData iEventData)
  67. {
  68. BuffEventData buffEventData = iEventData as BuffEventData;
  69. if (buffEventData.target == combatMagicWeaponEntity)
  70. {
  71. if (buffEventData.BuffBasic is b_1008)
  72. {
  73. GObjectPool.Instance.Recycle(noshifang);
  74. noshifang = null;
  75. }
  76. }
  77. }
  78. public override void AddButtonEvent()
  79. {
  80. myButton.onClick.AddListener(() =>
  81. {
  82. if (combatMagicWeaponEntity.IsEnemy)
  83. {
  84. // SkillConfig skillConfig = SkillBasic.SelfSkillConfig;
  85. CombatController.currActiveCombat.isUpdate = false;
  86. SkillMassgePanel.OpenSkillSelectPanel(
  87. LanguageManager.Instance.Text(combatMagicWeaponEntity.FaBaoInfo.FabaoConfig.name),
  88. LanguageManager.Instance.Text(combatMagicWeaponEntity.FaBaoInfo.FabaoConfig.model),
  89. delegate() { CombatController.currActiveCombat.isUpdate = true; });
  90. return;
  91. }
  92. if (combatMagicWeaponEntity == null || !combatMagicWeaponEntity.IsCanUse())
  93. {
  94. return;
  95. }
  96. b_1008 b1008 = combatMagicWeaponEntity.BuffControl.GetBuffBasicForType<b_1008>();
  97. if (b1008 != null)
  98. {
  99. return;
  100. }
  101. combatMagicWeaponEntity.UseMagicWeapon();
  102. });
  103. }
  104. public void InitWidget(CombatMagicWeaponEntity combatMagicWeaponEntity)
  105. {
  106. noshifang = null;
  107. chargedFinish = null;
  108. // feng.SetActive(false);
  109. this.combatMagicWeaponEntity = combatMagicWeaponEntity;
  110. }
  111. private void Update()
  112. {
  113. if (combatMagicWeaponEntity == null)
  114. {
  115. return;
  116. }
  117. float d =
  118. (combatMagicWeaponEntity.cd + combatMagicWeaponEntity.RootMagicWeaponControl.globalMagicWeaponCd) /
  119. (combatMagicWeaponEntity.MaxCd);
  120. cd.fillAmount = d;
  121. if (combatMagicWeaponEntity.cd < 1 && !isForewarn)
  122. {
  123. isForewarn = true;
  124. GObjectPool.Instance.FetchAsync<ParticleSystemPool>("fx_ui_fb_gw_Starshifang",
  125. delegate(ParticleSystemPool pool)
  126. {
  127. pool.transform.SetParent(transform);
  128. pool.transform.localPosition = new Vector3(0, 0, 0);
  129. pool.transform.SetAsLastSibling();
  130. });
  131. }
  132. if (!isChargedFinish && combatMagicWeaponEntity.cd <= 0)
  133. {
  134. isChargedFinish = true;
  135. GObjectPool.Instance.FetchAsync<ParticleSystemPool>("fx_ui_fb_shifang",
  136. delegate(ParticleSystemPool pool)
  137. {
  138. pool.transform.SetParent(transform);
  139. pool.transform.localPosition = new Vector3(0, 0, 0);
  140. pool.transform.SetSiblingIndex(3);
  141. chargedFinish= pool;
  142. });
  143. }
  144. }
  145. }
  146. }