ZhuanPanPanel.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  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 : UIComponent
  14. {
  15. private List<gf_widget> _gfWidgets = new List<gf_widget>();
  16. List<WuXingGongFaWidget> _wuXingGongFaWidgets = new List<WuXingGongFaWidget>();
  17. public async CTask ShowPanel()
  18. {
  19. foreach (var wuXingGongFaWidget in _wuXingGongFaWidgets)
  20. {
  21. UIManager.Instance.DormancyGComponent(wuXingGongFaWidget);
  22. }
  23. _wuXingGongFaWidgets.Clear();
  24. for (int i = 0; i < 5; i++)
  25. {
  26. double hd = i * 72 * Math.PI / 180f;
  27. double a = Math.Cos(hd);
  28. double b = -Math.Sin(hd);
  29. double c = Math.Sin(hd);
  30. double d = a;
  31. double x = a * 0 + b * 57;
  32. double y = c * 0 + d * 57;
  33. int index = i;
  34. WuXingGongFaWidget widget = await UIManager.Instance.CreateGComponentForObject<WuXingGongFaWidget>(
  35. WuXingGongFaWidget, null, root: pan,
  36. isInstance: true);
  37. widget.transform.anchoredPosition = new Vector2((float)x, (float)y);
  38. widget.ShowWidget(index);
  39. _wuXingGongFaWidgets.Add(widget);
  40. }
  41. ExercisesAlter(null);
  42. }
  43. private void Init()
  44. {
  45. }
  46. public override void AddEvent()
  47. {
  48. StaticUpdater.Instance.AddLateUpdateCallBack(Update);
  49. CombatEventManager.Instance.AddEventListener(CombatEventType.ExercisesAlter, ExercisesAlter);
  50. CombatEventManager.Instance.AddEventListener(CombatEventType.TaoismSkillAlter, TaoismSkillAlter);
  51. }
  52. public override void DelEvent()
  53. {
  54. StaticUpdater.Instance.RemoveLateUpdateCallBack(Update);
  55. CombatEventManager.Instance.RemoveEventListener(CombatEventType.ExercisesAlter, ExercisesAlter);
  56. // CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
  57. CombatEventManager.Instance.RemoveEventListener(CombatEventType.TaoismSkillAlter, TaoismSkillAlter);
  58. }
  59. public override void AddButtonEvent()
  60. {
  61. lanLiang_button.onClick.AddListener(() => { SkillSelectPanel.OpenSkillSelectPanel(); });
  62. }
  63. private void TaoismSkillAlter(IEventData iEventData)
  64. {
  65. }
  66. private async void ExercisesAlter(IEventData iEventData)
  67. {
  68. _gfWidgets.Clear();
  69. UIManager.Instance.DormancyAllGComponent<gf_widget>();
  70. CombatHeroSkillControl combatHeroSkillControl = CombatController.currActiveCombat
  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.SkillSlots = skillBasic;
  83. gfWidget.InitWidget(skillBasic,CombatController.currActiveCombat
  84. .playerHeroEntity);
  85. _gfWidgets.Add(gfWidget);
  86. }
  87. }
  88. public void Update()
  89. {
  90. if (CombatController.currActiveCombat == null ||
  91. CombatController.currActiveCombat.CombatHeroController == null ||
  92. CombatController.currActiveCombat.playerHeroEntity == null || CombatController
  93. .currActiveCombat.playerHeroEntity.CombatHeroSkillControl == null)
  94. {
  95. return;
  96. }
  97. CombatHeroSkillControl combatHeroSkillControl = CombatController.currActiveCombat
  98. .playerHeroEntity.CombatHeroSkillControl
  99. .This<CombatHeroSkillControl>();
  100. if (combatHeroSkillControl.taoismSkillBasic != null)
  101. {
  102. DS60101 ds60101 = combatHeroSkillControl.taoismSkillBasic as DS60101;
  103. if (ds60101 != null)
  104. {
  105. lanLiang.fillAmount = ds60101.currEnergy / ds60101.SelfSkillConfig.effectValue[1];
  106. lanLiang.color = !ds60101._updateTime
  107. ? new Color(1f, 0.96f, 0f)
  108. : new Color(0.96f, 0f, 1f);
  109. }
  110. }
  111. for (int i = 0; i < _gfWidgets.Count; i++)
  112. {
  113. gf_widget gfWidget = _gfWidgets[i];
  114. gfWidget.Update();
  115. double hd = gfWidget.SkillSlots.angle * Math.PI / 180f;
  116. double a = Math.Cos(hd);
  117. double b = -Math.Sin(hd);
  118. double c = Math.Sin(hd);
  119. double d = a;
  120. double x = a * 0 + b * 122;
  121. double y = c * 0 + d * 122;
  122. gfWidget.transform.anchoredPosition = new Vector2((float)x, (float)y);
  123. }
  124. }
  125. }
  126. }