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 currShowGfWidget = new BetterList(); 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("bossWidget"); if (combatHeroSkillControl.currUseSkill != null) { // gf_widget gfWidget = await UIManager.Instance.CreateGComponentForObject(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(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 showSkillSlots = new List(); 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( 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, 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, 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(); } } } }