123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- 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 HeroHpWidget heroHpWidget;
- private void Init()
- {
- }
- public override void AddEvent()
- {
- CombatEventManager.Instance.AddEventListener(CombatEventType.UseSkill, UseSkill);
- CombatEventManager.Instance.AddEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
- CombatEventManager.Instance.AddEventListener(CombatEventType.UseSkillFinish, UseSkillFinish);
- StaticUpdater.Instance.AddRenderUpdateCallBack(Update);
- }
- public override void DelEvent()
- {
- StaticUpdater.Instance.RemoveRenderUpdateCallBack(Update);
- CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
- CombatEventManager.Instance.RemoveEventListener(CombatEventType.UseSkill, UseSkill);
- CombatEventManager.Instance.RemoveEventListener(CombatEventType.UseSkillFinish, UseSkillFinish);
- UIManager.Instance.DormancyGComponent(heroHpWidget);
- heroHpWidget = null;
- UIManager.Instance.DormancyAllGComponent<gf_widget>("bossWidget");
- }
-
- public override void AddButtonEvent()
- {
- }
- private void AddUseGongFa(IEventData iEventData)
- {
- AddUseGongFaEventData addUseGongFaEventData = iEventData as AddUseGongFaEventData;
- if (addUseGongFaEventData.SkillBasic.CombatHeroEntity == combatHeroEntity )
- {
- ReshSkill();
- }
- }
- private void UseSkill(IEventData iEventData)
- {
- CombatUseSkillEventData combatUseSkillEventData = iEventData as CombatUseSkillEventData;
- if (combatUseSkillEventData.useSkill.CombatHeroEntity == combatHeroEntity)
- {
- currUseSkillIcon.icon_name = combatUseSkillEventData.useSkill.SelfSkillConfig.icon;
- currUseSkillIcon.gameObject.SetActive(true);
- }
- }
- private void UseSkillFinish(IEventData iEventData)
- {
- UseSkillFinishEventData combatUseSkillEventData = iEventData as UseSkillFinishEventData;
- if (combatUseSkillEventData.SkillBasic.CombatHeroEntity == combatHeroEntity)
- {
- currUseSkillIcon.gameObject.SetActive(false);
- }
- }
- private async CTask ReshSkill()
- {
- currShowGfWidget.Clear();
- UIManager.Instance.DormancyAllGComponent<gf_widget>("bossWidget");
-
- int maxCount = 2;
-
- 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 =
- 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();
- }
- }
- }
- }
|