ZhuanPanPanel.cs 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. using System;
  2. using System.Collections.Generic;
  3. using Common.Utility.CombatEvent;
  4. using Fort23.Core;
  5. using GameLogic.Combat.CombatTool;
  6. using GameLogic.Combat.Hero;
  7. using GameLogic.Combat.Hero.Turntable;
  8. using GameLogic.Combat.Skill;
  9. using UnityEngine;
  10. namespace Fort23.Mono
  11. {
  12. [UIBinding(prefab = "ZhuanPanPanel")]
  13. public partial class ZhuanPanPanel : UIPanel
  14. {
  15. private List<gf_widget> _gfWidgets = new List<gf_widget>();
  16. public static async CTask OpenZhuanPanPanel()
  17. {
  18. await UIManager.Instance.LoadAndOpenPanel<ZhuanPanPanel>(null, UILayer.Bottom);
  19. }
  20. private void Init()
  21. {
  22. }
  23. protected override void AddEvent()
  24. {
  25. StaticUpdater.Instance.AddLateUpdateCallBack(Update);
  26. CombatEventManager.Instance.AddEventListener(CombatEventType.ExercisesAlter, ExercisesAlter);
  27. CombatEventManager.Instance.AddEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
  28. CombatEventManager.Instance.AddEventListener(CombatEventType.HeroHpUpdate, HeroHpUpdate);
  29. CombatEventManager.Instance.AddEventListener(CombatEventType.TaoismSkillAlter, TaoismSkillAlter);
  30. }
  31. protected override void DelEvent()
  32. {
  33. StaticUpdater.Instance.RemoveLateUpdateCallBack(Update);
  34. CombatEventManager.Instance.RemoveEventListener(CombatEventType.ExercisesAlter, ExercisesAlter);
  35. CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
  36. CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroHpUpdate, HeroHpUpdate);
  37. CombatEventManager.Instance.RemoveEventListener(CombatEventType.TaoismSkillAlter, TaoismSkillAlter);
  38. }
  39. public override void AddButtonEvent()
  40. {
  41. lanLiang_button.onClick.AddListener(() => { SkillSelectPanel.OpenSkillSelectPanel(); });
  42. }
  43. private void TaoismSkillAlter(IEventData iEventData)
  44. {
  45. }
  46. private void AddUseGongFa(IEventData iEventData)
  47. {
  48. CombatHeroInfo combatHeroInfo = CombatController.currActiveCombat.CombatHeroController
  49. .playerHeroEntity.CurrCombatHeroInfo;
  50. jin_shangshi.text = combatHeroInfo.Metal_Injury>0?"伤势:" + combatHeroInfo.Metal_Injury:"";
  51. mu_shangshi.text = combatHeroInfo.Wood_Injury>0?"伤势:" + combatHeroInfo.Wood_Injury:"";
  52. shui_shangshi.text = combatHeroInfo.Water_Injury>0?"伤势:" + combatHeroInfo.Water_Injury:"";
  53. huo_shangshi.text = combatHeroInfo.Fire_Injury>0?"伤势:" + combatHeroInfo.Fire_Injury:"";
  54. tu_shangshi.text = combatHeroInfo.Earth_Injury>0?"伤势:" + combatHeroInfo.Earth_Injury:"";
  55. }
  56. private void HeroHpUpdate(IEventData iEventData)
  57. {
  58. CombatHeroInfo combatHeroInfo = CombatController.currActiveCombat.CombatHeroController
  59. .playerHeroEntity.CurrCombatHeroInfo;
  60. jin_shangshi.text = combatHeroInfo.Metal_Injury>0?"伤势:" + combatHeroInfo.Metal_Injury:"";
  61. mu_shangshi.text = combatHeroInfo.Wood_Injury>0?"伤势:" + combatHeroInfo.Wood_Injury:"";
  62. shui_shangshi.text = combatHeroInfo.Water_Injury>0?"伤势:" + combatHeroInfo.Water_Injury:"";
  63. huo_shangshi.text = combatHeroInfo.Fire_Injury>0?"伤势:" + combatHeroInfo.Fire_Injury:"";
  64. tu_shangshi.text = combatHeroInfo.Earth_Injury>0?"伤势:" + combatHeroInfo.Earth_Injury:"";
  65. }
  66. private async void ExercisesAlter(IEventData iEventData)
  67. {
  68. _gfWidgets.Clear();
  69. UIManager.Instance.DormancyAllGComponent<gf_widget>();
  70. CombatHeroSkillControl combatHeroSkillControl = CombatController.currActiveCombat.CombatHeroController
  71. .playerHeroEntity.CombatHeroSkillControl
  72. .This<CombatHeroSkillControl>();
  73. for (int i = 0; i < combatHeroSkillControl.SkillTurntable.allSkillSlots.Count; i++)
  74. {
  75. SkillSlots skillBasic = combatHeroSkillControl.SkillTurntable.allSkillSlots[i];
  76. if (skillBasic == null)
  77. {
  78. continue;
  79. }
  80. gf_widget gfWidget = await UIManager.Instance.CreateGComponentForObject<gf_widget>(this.gf_widget, null,
  81. Gf_root, isInstance: true);
  82. gfWidget.SkillBasic = skillBasic;
  83. gfWidget.InitWidget(skillBasic);
  84. _gfWidgets.Add(gfWidget);
  85. }
  86. }
  87. public void Update()
  88. {
  89. if (CombatController.currActiveCombat == null ||
  90. CombatController.currActiveCombat.CombatHeroController == null ||
  91. CombatController.currActiveCombat.CombatHeroController.playerHeroEntity == null || CombatController
  92. .currActiveCombat.CombatHeroController.playerHeroEntity.CombatHeroSkillControl == null)
  93. {
  94. return;
  95. }
  96. CombatHeroSkillControl combatHeroSkillControl = CombatController.currActiveCombat.CombatHeroController
  97. .playerHeroEntity.CombatHeroSkillControl
  98. .This<CombatHeroSkillControl>();
  99. if (combatHeroSkillControl.taoismSkillBasic != null)
  100. {
  101. DS60101 ds60101 = combatHeroSkillControl.taoismSkillBasic as DS60101;
  102. if (ds60101 != null)
  103. {
  104. lanLiang.fillAmount = ds60101.currEnergy / ds60101.SelfSkillConfig.effectValue[1];
  105. lanLiang.color = !ds60101._updateTime
  106. ? new Color(1f, 0.96f, 0f)
  107. : new Color(0.96f, 0f, 1f);
  108. }
  109. }
  110. // lanLiang.fillAmount = combatHeroSkillControl.addChongNeng / 150f;
  111. // lanLiang.color = !combatHeroSkillControl.isKuoLiQuanKai
  112. // ? new Color(1f, 0.96f, 0f)
  113. // : new Color(0.96f, 0f, 1f);
  114. for (int i = 0; i < _gfWidgets.Count; i++)
  115. {
  116. gf_widget gfWidget = _gfWidgets[i];
  117. if (gfWidget.useCount != gfWidget.SkillBasic.useCount)
  118. {
  119. gfWidget.useCount = gfWidget.SkillBasic.useCount;
  120. switch (gfWidget.SkillBasic.useTriggerType)
  121. {
  122. case 0:
  123. jin.Play("show", false);
  124. break;
  125. case 1:
  126. mu.Play("show", false);
  127. break;
  128. case 2:
  129. shui.Play("show", false);
  130. break;
  131. case 3:
  132. huo.Play("show", false);
  133. break;
  134. case 4:
  135. tu.Play("show", false);
  136. break;
  137. }
  138. }
  139. double hd = gfWidget.SkillBasic.angle * Math.PI / 180f;
  140. double a = Math.Cos(hd);
  141. double b = -Math.Sin(hd);
  142. double c = Math.Sin(hd);
  143. double d = a;
  144. double x = a * 0 + b * 60;
  145. double y = c * 0 + d * 60;
  146. gfWidget.transform.anchoredPosition = new Vector2((float)x, (float)y);
  147. }
  148. }
  149. }
  150. }