123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- 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();
- }
- }
- }
- }
|