|
@@ -0,0 +1,153 @@
|
|
|
+using System.Collections.Generic;
|
|
|
+using Common.Utility.CombatEvent;
|
|
|
+using Fort23.Core;
|
|
|
+using GameLogic.Combat.CombatTool;
|
|
|
+using GameLogic.Combat.Hero;
|
|
|
+using GameLogic.Combat.Hero.Turntable;
|
|
|
+using GameLogic.Combat.Skill;
|
|
|
+
|
|
|
+namespace Fort23.Mono
|
|
|
+{
|
|
|
+ [UIBinding(prefab = "BossHpWidget")]
|
|
|
+ public partial class BossHpWidget : UIComponent
|
|
|
+ {
|
|
|
+ private CombatHeroEntity combatHeroEntity;
|
|
|
+
|
|
|
+ private CombatHeroSkillControl combatHeroSkillControl;
|
|
|
+
|
|
|
+ protected BetterList<gf_widget> currShowGfWidget = new BetterList<gf_widget>();
|
|
|
+
|
|
|
+ private void Init()
|
|
|
+ {
|
|
|
+ }
|
|
|
+
|
|
|
+ public override void AddEvent()
|
|
|
+ {
|
|
|
+ CombatEventManager.Instance.AddEventListener(CombatEventType.UseSkill, UseSkill);
|
|
|
+ }
|
|
|
+
|
|
|
+ public override void DelEvent()
|
|
|
+ {
|
|
|
+ CombatEventManager.Instance.RemoveEventListener(CombatEventType.UseSkill, UseSkill);
|
|
|
+ }
|
|
|
+
|
|
|
+ public override void AddButtonEvent()
|
|
|
+ {
|
|
|
+ }
|
|
|
+
|
|
|
+ private void UseSkill(IEventData iEventData)
|
|
|
+ {
|
|
|
+ }
|
|
|
+
|
|
|
+ private async CTask ReshSkill()
|
|
|
+ {
|
|
|
+ currShowGfWidget.Clear();
|
|
|
+ UIManager.Instance.DormancyAllGComponent<gf_widget>("bossWidget");
|
|
|
+ if (combatHeroSkillControl.currUseSkill != null)
|
|
|
+ {
|
|
|
+ // gf_widget gfWidget = await UIManager.Instance.CreateGComponentForObject<gf_widget>(this.gf_widget, null,
|
|
|
+ // SkillRoot,poolName:"bossWidget", isInstance: true);
|
|
|
+ // gfWidget.InitWidget();
|
|
|
+ }
|
|
|
+
|
|
|
+ int maxCount = 2;
|
|
|
+ int queueCount = combatHeroSkillControl.useSkillCount;
|
|
|
+ if (queueCount > 0)
|
|
|
+ {
|
|
|
+ SkillBasic[] allSkill = combatHeroSkillControl.GetSkillQueue();
|
|
|
+ for (int i = 0; i < allSkill.Length; i++)
|
|
|
+ {
|
|
|
+ if (maxCount <= 0)
|
|
|
+ {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ maxCount--;
|
|
|
+ SkillBasic skillBasic = allSkill[i];
|
|
|
+ gf_widget gfWidget = await UIManager.Instance.CreateGComponentForObject<gf_widget>(this.gf_widget,
|
|
|
+ null,
|
|
|
+ SkillRoot, poolName: "bossWidget", isInstance: true);
|
|
|
+ gfWidget.InitSkillWidget(skillBasic);
|
|
|
+ gfWidget.transform.SetAsLastSibling();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (maxCount > 0)
|
|
|
+ {
|
|
|
+ float minA = float.MaxValue;
|
|
|
+ SkillSlots minSlots = null;
|
|
|
+ List<SkillSlots> showSkillSlots = new List<SkillSlots>();
|
|
|
+ for (int j = 0; j < maxCount; j++)
|
|
|
+ {
|
|
|
+ minSlots = null;
|
|
|
+ minA = float.MaxValue;
|
|
|
+ for (int i = 0; i < combatHeroSkillControl.SkillTurntable.allSkillSlots.Count; i++)
|
|
|
+ {
|
|
|
+ SkillSlots skillSlots = combatHeroSkillControl.SkillTurntable.allSkillSlots[i];
|
|
|
+ float angle = skillSlots.GetFinishAngle();
|
|
|
+ if (angle <= minA && !showSkillSlots.Contains(skillSlots))
|
|
|
+ {
|
|
|
+ minA = angle;
|
|
|
+ minSlots = skillSlots;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (minSlots != null)
|
|
|
+ {
|
|
|
+ showSkillSlots.Add(minSlots);
|
|
|
+ gf_widget gfWidget = await UIManager.Instance.CreateGComponentForObject<gf_widget>(
|
|
|
+ this.gf_widget,
|
|
|
+ null,
|
|
|
+ SkillRoot, poolName: "bossWidget", isInstance: true);
|
|
|
+ gfWidget.InitWidget(minSlots);
|
|
|
+ gfWidget.transform.SetAsLastSibling();
|
|
|
+ currShowGfWidget.Add(gfWidget);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public async CTask ShowWidget(CombatHeroEntity combatHeroEntity)
|
|
|
+ {
|
|
|
+ this.combatHeroEntity = combatHeroEntity;
|
|
|
+ combatHeroSkillControl =
|
|
|
+ combatHeroEntity.CombatHeroSkillControl as CombatHeroSkillControl;
|
|
|
+ HeroHpWidget heroHpWidget =
|
|
|
+ await UIManager.Instance.CreateGComponentForObject<HeroHpWidget>(HeroHpWidget, null);
|
|
|
+ heroHpWidget.size = 250;
|
|
|
+ heroHpWidget.shieldSize = 100;
|
|
|
+ heroHpWidget.isFollowTarget = false;
|
|
|
+ heroHpWidget.Init(combatHeroEntity);
|
|
|
+ ReshSkill();
|
|
|
+ InitMagicWeapon();
|
|
|
+ }
|
|
|
+
|
|
|
+ private async CTask InitMagicWeapon()
|
|
|
+ {
|
|
|
+ int c = combatHeroEntity.MagicWeaponControl.MagicWeaponCount;
|
|
|
+ CombatMagicWeaponEntity[] combatMagicWeaponEntities = combatHeroEntity.MagicWeaponControl.AllMagicWeapon;
|
|
|
+ for (int i = 0; i < c; i++)
|
|
|
+ {
|
|
|
+ CombatMagicWeaponEntity combatMagicWeaponEntity = combatMagicWeaponEntities[i];
|
|
|
+ MagicWeaponWidget shengShiEventWidget =
|
|
|
+ await UIManager.Instance.CreateGComponentForObject<MagicWeaponWidget>(MagicWeaponWidget, null,
|
|
|
+ FaBaoRoot,
|
|
|
+ isInstance: true, poolName: "bossFaBao");
|
|
|
+ shengShiEventWidget.InitWidget(combatMagicWeaponEntity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void Update()
|
|
|
+ {
|
|
|
+ if (combatHeroEntity == null)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i = 0; i < currShowGfWidget.Count; i++)
|
|
|
+ {
|
|
|
+ currShowGfWidget[i].Update();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|