ZhuanPanPanel.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  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.Skill;
  8. using UnityEngine;
  9. namespace Fort23.Mono
  10. {
  11. [UIBinding(prefab = "ZhuanPanPanel")]
  12. public partial class ZhuanPanPanel : UIPanel
  13. {
  14. private List<gf_widget> _gfWidgets = new List<gf_widget>();
  15. public static async CTask OpenZhuanPanPanel()
  16. {
  17. await UIManager.Instance.LoadAndOpenPanel<ZhuanPanPanel>(null, UILayer.Bottom);
  18. }
  19. private void Init()
  20. {
  21. }
  22. protected override void AddEvent()
  23. {
  24. StaticUpdater.Instance.AddLateUpdateCallBack(Update);
  25. CombatEventManager.Instance.AddEventListener(CombatEventType.ExercisesAlter, ExercisesAlter);
  26. CombatEventManager.Instance.AddEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
  27. CombatEventManager.Instance.AddEventListener(CombatEventType.HeroHpUpdate, HeroHpUpdate);
  28. }
  29. protected override void DelEvent()
  30. {
  31. StaticUpdater.Instance.RemoveLateUpdateCallBack(Update);
  32. CombatEventManager.Instance.RemoveEventListener(CombatEventType.ExercisesAlter, ExercisesAlter);
  33. CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
  34. CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroHpUpdate, HeroHpUpdate);
  35. }
  36. public override void AddButtonEvent()
  37. {
  38. }
  39. private void AddUseGongFa(IEventData iEventData)
  40. {
  41. CombatHeroInfo combatHeroInfo = CombatController.currActiveCombat.CombatHeroController
  42. .playerHeroEntity.CurrCombatHeroInfo;
  43. jin_shangshi.text = "伤势:"+combatHeroInfo.Metal_Injury;
  44. mu_shangshi.text = "伤势:"+combatHeroInfo.Wood_Injury;
  45. shui_shangshi.text = "伤势:"+combatHeroInfo.Water_Injury;
  46. huo_shangshi.text = "伤势:"+combatHeroInfo.Fire_Injury;
  47. tu_shangshi.text = "伤势:"+combatHeroInfo.Earth_Injury;
  48. }
  49. private void HeroHpUpdate(IEventData iEventData)
  50. {
  51. CombatHeroInfo combatHeroInfo = CombatController.currActiveCombat.CombatHeroController
  52. .playerHeroEntity.CurrCombatHeroInfo;
  53. jin_shangshi.text = "伤势:"+combatHeroInfo.Metal_Injury;
  54. mu_shangshi.text = "伤势:"+combatHeroInfo.Wood_Injury;
  55. shui_shangshi.text = "伤势:"+combatHeroInfo.Water_Injury;
  56. huo_shangshi.text = "伤势:"+combatHeroInfo.Fire_Injury;
  57. tu_shangshi.text = "伤势:"+combatHeroInfo.Earth_Injury;
  58. }
  59. private async void ExercisesAlter(IEventData iEventData)
  60. {
  61. CombatHeroSkillControl combatHeroSkillControl = CombatController.currActiveCombat.CombatHeroController
  62. .playerHeroEntity.CombatHeroSkillControl
  63. .This<CombatHeroSkillControl>();
  64. for (int i = 0; i < combatHeroSkillControl._skillQueue.Count; i++)
  65. {
  66. SkillBasic skillBasic = combatHeroSkillControl._skillQueue[i];
  67. gf_widget gfWidget = await UIManager.Instance.CreateGComponentForObject<gf_widget>(this.gf_widget, null,
  68. Gf_root, isInstance: true, poolName: "gf_widget");
  69. gfWidget.SkillBasic = skillBasic;
  70. gfWidget.InitWidget(skillBasic);
  71. _gfWidgets.Add(gfWidget);
  72. }
  73. }
  74. public void Update()
  75. {
  76. if (CombatController.currActiveCombat == null ||
  77. CombatController.currActiveCombat.CombatHeroController == null ||
  78. CombatController.currActiveCombat.CombatHeroController.playerHeroEntity == null || CombatController
  79. .currActiveCombat.CombatHeroController.playerHeroEntity.CombatHeroSkillControl == null)
  80. {
  81. return;
  82. }
  83. CombatHeroSkillControl combatHeroSkillControl = CombatController.currActiveCombat.CombatHeroController
  84. .playerHeroEntity.CombatHeroSkillControl
  85. .This<CombatHeroSkillControl>();
  86. // lanLiang.fillAmount = combatHeroSkillControl.addChongNeng / 150f;
  87. // lanLiang.color = !combatHeroSkillControl.isKuoLiQuanKai
  88. // ? new Color(1f, 0.96f, 0f)
  89. // : new Color(0.96f, 0f, 1f);
  90. for (int i = 0; i < _gfWidgets.Count; i++)
  91. {
  92. gf_widget gfWidget = _gfWidgets[i];
  93. // gfWidget.SkillBasic.angle += 1;
  94. // float jd = gfWidget.SkillBasic.angle % 360;
  95. // if (jd > gfWidget.SkillBasic.useAngle && gfWidget.SkillBasic.angle > gfWidget.SkillBasic.lasetAngle)
  96. // {
  97. // gfWidget.SkillBasic.lasetAngle += 360;
  98. // Debug.Log("旋转一圈");
  99. // }
  100. if (gfWidget.useCount != gfWidget.SkillBasic.useCount)
  101. {
  102. gfWidget.useCount = gfWidget.SkillBasic.useCount;
  103. switch (gfWidget.SkillBasic.SelfSkillConfig.attribute)
  104. {
  105. case 1:
  106. jin.Play("show", false);
  107. break;
  108. case 2:
  109. mu.Play("show", false);
  110. break;
  111. case 4:
  112. shui.Play("show", false);
  113. break;
  114. case 8:
  115. huo.Play("show", false);
  116. break;
  117. case 16:
  118. tu.Play("show", false);
  119. break;
  120. }
  121. }
  122. double hd = gfWidget.SkillBasic.angle * Math.PI / 180f;
  123. double a = Math.Cos(hd);
  124. double b = -Math.Sin(hd);
  125. double c = Math.Sin(hd);
  126. double d = a;
  127. double x = a * 0 + b * 60;
  128. double y = c * 0 + d * 60;
  129. gfWidget.transform.anchoredPosition = new Vector2((float)x, (float)y);
  130. }
  131. }
  132. }
  133. }