BossHpWidget.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. using System.Collections.Generic;
  2. using Common.Utility.CombatEvent;
  3. using Fort23.Core;
  4. using GameLogic.Combat.CombatTool;
  5. using GameLogic.Combat.Hero;
  6. using GameLogic.Combat.Hero.Turntable;
  7. using GameLogic.Combat.Skill;
  8. namespace Fort23.Mono
  9. {
  10. [UIBinding(prefab = "BossHpWidget")]
  11. public partial class BossHpWidget : UIComponent
  12. {
  13. private CombatHeroEntity combatHeroEntity;
  14. private CombatHeroSkillControl combatHeroSkillControl;
  15. protected BetterList<gf_widget> currShowGfWidget = new BetterList<gf_widget>();
  16. private void Init()
  17. {
  18. }
  19. public override void AddEvent()
  20. {
  21. CombatEventManager.Instance.AddEventListener(CombatEventType.UseSkill, UseSkill);
  22. }
  23. public override void DelEvent()
  24. {
  25. CombatEventManager.Instance.RemoveEventListener(CombatEventType.UseSkill, UseSkill);
  26. }
  27. public override void AddButtonEvent()
  28. {
  29. }
  30. private void UseSkill(IEventData iEventData)
  31. {
  32. }
  33. private async CTask ReshSkill()
  34. {
  35. currShowGfWidget.Clear();
  36. UIManager.Instance.DormancyAllGComponent<gf_widget>("bossWidget");
  37. if (combatHeroSkillControl.currUseSkill != null)
  38. {
  39. // gf_widget gfWidget = await UIManager.Instance.CreateGComponentForObject<gf_widget>(this.gf_widget, null,
  40. // SkillRoot,poolName:"bossWidget", isInstance: true);
  41. // gfWidget.InitWidget();
  42. }
  43. int maxCount = 2;
  44. int queueCount = combatHeroSkillControl.useSkillCount;
  45. if (queueCount > 0)
  46. {
  47. SkillBasic[] allSkill = combatHeroSkillControl.GetSkillQueue();
  48. for (int i = 0; i < allSkill.Length; i++)
  49. {
  50. if (maxCount <= 0)
  51. {
  52. break;
  53. }
  54. maxCount--;
  55. SkillBasic skillBasic = allSkill[i];
  56. gf_widget gfWidget = await UIManager.Instance.CreateGComponentForObject<gf_widget>(this.gf_widget,
  57. null,
  58. SkillRoot, poolName: "bossWidget", isInstance: true);
  59. gfWidget.InitSkillWidget(skillBasic);
  60. gfWidget.transform.SetAsLastSibling();
  61. }
  62. }
  63. if (maxCount > 0)
  64. {
  65. float minA = float.MaxValue;
  66. SkillSlots minSlots = null;
  67. List<SkillSlots> showSkillSlots = new List<SkillSlots>();
  68. for (int j = 0; j < maxCount; j++)
  69. {
  70. minSlots = null;
  71. minA = float.MaxValue;
  72. for (int i = 0; i < combatHeroSkillControl.SkillTurntable.allSkillSlots.Count; i++)
  73. {
  74. SkillSlots skillSlots = combatHeroSkillControl.SkillTurntable.allSkillSlots[i];
  75. float angle = skillSlots.GetFinishAngle();
  76. if (angle <= minA && !showSkillSlots.Contains(skillSlots))
  77. {
  78. minA = angle;
  79. minSlots = skillSlots;
  80. }
  81. }
  82. if (minSlots != null)
  83. {
  84. showSkillSlots.Add(minSlots);
  85. gf_widget gfWidget = await UIManager.Instance.CreateGComponentForObject<gf_widget>(
  86. this.gf_widget,
  87. null,
  88. SkillRoot, poolName: "bossWidget", isInstance: true);
  89. gfWidget.InitWidget(minSlots);
  90. gfWidget.transform.SetAsLastSibling();
  91. currShowGfWidget.Add(gfWidget);
  92. }
  93. }
  94. }
  95. }
  96. public async CTask ShowWidget(CombatHeroEntity combatHeroEntity)
  97. {
  98. this.combatHeroEntity = combatHeroEntity;
  99. combatHeroSkillControl =
  100. combatHeroEntity.CombatHeroSkillControl as CombatHeroSkillControl;
  101. HeroHpWidget heroHpWidget =
  102. await UIManager.Instance.CreateGComponentForObject<HeroHpWidget>(HeroHpWidget, null);
  103. heroHpWidget.size = 250;
  104. heroHpWidget.shieldSize = 100;
  105. heroHpWidget.isFollowTarget = false;
  106. heroHpWidget.Init(combatHeroEntity);
  107. ReshSkill();
  108. InitMagicWeapon();
  109. }
  110. private async CTask InitMagicWeapon()
  111. {
  112. int c = combatHeroEntity.MagicWeaponControl.MagicWeaponCount;
  113. CombatMagicWeaponEntity[] combatMagicWeaponEntities = combatHeroEntity.MagicWeaponControl.AllMagicWeapon;
  114. for (int i = 0; i < c; i++)
  115. {
  116. CombatMagicWeaponEntity combatMagicWeaponEntity = combatMagicWeaponEntities[i];
  117. MagicWeaponWidget shengShiEventWidget =
  118. await UIManager.Instance.CreateGComponentForObject<MagicWeaponWidget>(MagicWeaponWidget, null,
  119. FaBaoRoot,
  120. isInstance: true, poolName: "bossFaBao");
  121. shengShiEventWidget.InitWidget(combatMagicWeaponEntity);
  122. }
  123. }
  124. public void Update()
  125. {
  126. if (combatHeroEntity == null)
  127. {
  128. return;
  129. }
  130. for (int i = 0; i < currShowGfWidget.Count; i++)
  131. {
  132. currShowGfWidget[i].Update();
  133. }
  134. }
  135. }
  136. }