ZhuanPanPanel.cs 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  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. }
  30. protected override void DelEvent()
  31. {
  32. StaticUpdater.Instance.RemoveLateUpdateCallBack(Update);
  33. CombatEventManager.Instance.RemoveEventListener(CombatEventType.ExercisesAlter, ExercisesAlter);
  34. CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
  35. CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroHpUpdate, HeroHpUpdate);
  36. }
  37. public override void AddButtonEvent()
  38. {
  39. lanLiang_button.onClick.AddListener(() =>
  40. {
  41. SkillSelectPanel.OpenSkillSelectPanel();
  42. });
  43. }
  44. private void AddUseGongFa(IEventData iEventData)
  45. {
  46. CombatHeroInfo combatHeroInfo = CombatController.currActiveCombat.CombatHeroController
  47. .playerHeroEntity.CurrCombatHeroInfo;
  48. jin_shangshi.text = "伤势:"+combatHeroInfo.Metal_Injury;
  49. mu_shangshi.text = "伤势:"+combatHeroInfo.Wood_Injury;
  50. shui_shangshi.text = "伤势:"+combatHeroInfo.Water_Injury;
  51. huo_shangshi.text = "伤势:"+combatHeroInfo.Fire_Injury;
  52. tu_shangshi.text = "伤势:"+combatHeroInfo.Earth_Injury;
  53. }
  54. private void HeroHpUpdate(IEventData iEventData)
  55. {
  56. CombatHeroInfo combatHeroInfo = CombatController.currActiveCombat.CombatHeroController
  57. .playerHeroEntity.CurrCombatHeroInfo;
  58. jin_shangshi.text = "伤势:"+combatHeroInfo.Metal_Injury;
  59. mu_shangshi.text = "伤势:"+combatHeroInfo.Wood_Injury;
  60. shui_shangshi.text = "伤势:"+combatHeroInfo.Water_Injury;
  61. huo_shangshi.text = "伤势:"+combatHeroInfo.Fire_Injury;
  62. tu_shangshi.text = "伤势:"+combatHeroInfo.Earth_Injury;
  63. }
  64. private async void ExercisesAlter(IEventData iEventData)
  65. {
  66. _gfWidgets.Clear();
  67. UIManager.Instance.DormancyAllGComponent<gf_widget>();
  68. CombatHeroSkillControl combatHeroSkillControl = CombatController.currActiveCombat.CombatHeroController
  69. .playerHeroEntity.CombatHeroSkillControl
  70. .This<CombatHeroSkillControl>();
  71. for (int i = 0; i < combatHeroSkillControl.SkillTurntable.allSkillSlots.Count; i++)
  72. {
  73. SkillSlots skillBasic = combatHeroSkillControl.SkillTurntable.allSkillSlots[i];
  74. if (skillBasic == null)
  75. {
  76. continue;
  77. }
  78. gf_widget gfWidget = await UIManager.Instance.CreateGComponentForObject<gf_widget>(this.gf_widget, null,
  79. Gf_root, isInstance: true);
  80. gfWidget.SkillBasic = skillBasic;
  81. gfWidget.InitWidget(skillBasic);
  82. _gfWidgets.Add(gfWidget);
  83. }
  84. }
  85. public void Update()
  86. {
  87. if (CombatController.currActiveCombat == null ||
  88. CombatController.currActiveCombat.CombatHeroController == null ||
  89. CombatController.currActiveCombat.CombatHeroController.playerHeroEntity == null || CombatController
  90. .currActiveCombat.CombatHeroController.playerHeroEntity.CombatHeroSkillControl == null)
  91. {
  92. return;
  93. }
  94. CombatHeroSkillControl combatHeroSkillControl = CombatController.currActiveCombat.CombatHeroController
  95. .playerHeroEntity.CombatHeroSkillControl
  96. .This<CombatHeroSkillControl>();
  97. // lanLiang.fillAmount = combatHeroSkillControl.addChongNeng / 150f;
  98. // lanLiang.color = !combatHeroSkillControl.isKuoLiQuanKai
  99. // ? new Color(1f, 0.96f, 0f)
  100. // : new Color(0.96f, 0f, 1f);
  101. for (int i = 0; i < _gfWidgets.Count; i++)
  102. {
  103. gf_widget gfWidget = _gfWidgets[i];
  104. // gfWidget.SkillBasic.angle += 1;
  105. // float jd = gfWidget.SkillBasic.angle % 360;
  106. // if (jd > gfWidget.SkillBasic.useAngle && gfWidget.SkillBasic.angle > gfWidget.SkillBasic.lasetAngle)
  107. // {
  108. // gfWidget.SkillBasic.lasetAngle += 360;
  109. // Debug.Log("旋转一圈");
  110. // }
  111. if (gfWidget.useCount != gfWidget.SkillBasic.useCount)
  112. {
  113. gfWidget.useCount = gfWidget.SkillBasic.useCount;
  114. switch (gfWidget.SkillBasic.useTriggerType)
  115. {
  116. case 0:
  117. jin.Play("show", false);
  118. break;
  119. case 1:
  120. mu.Play("show", false);
  121. break;
  122. case 2:
  123. shui.Play("show", false);
  124. break;
  125. case 3:
  126. huo.Play("show", false);
  127. break;
  128. case 4:
  129. tu.Play("show", false);
  130. break;
  131. }
  132. }
  133. double hd = gfWidget.SkillBasic.angle * Math.PI / 180f;
  134. double a = Math.Cos(hd);
  135. double b = -Math.Sin(hd);
  136. double c = Math.Sin(hd);
  137. double d = a;
  138. double x = a * 0 + b * 60;
  139. double y = c * 0 + d * 60;
  140. gfWidget.transform.anchoredPosition = new Vector2((float)x, (float)y);
  141. }
  142. }
  143. }
  144. }