using System.Collections.Generic; using Common.Utility.CombatEvent; using Fort23.Core; using GameLogic.Combat.CombatTool; using GameLogic.Combat.Skill; using GameLogic.Player; namespace Fort23.Mono { [UIBinding(prefab = "WuXingGongFaWidget")] public partial class WuXingGongFaWidget : UIComponent { public int index; private SkillBasic currUseSkill; private List currDengDaiSkill = new List(); private void Init() { } public override void AddEvent() { CombatEventManager.Instance.AddEventListener(CombatEventType.HeroHpUpdate, HeroHpUpdate); CombatEventManager.Instance.AddEventListener(CombatEventType.AddUseGongFa, AddUseGongFa); CombatEventManager.Instance.AddEventListener(CombatEventType.UseSkill, UseSkill); CombatEventManager.Instance.AddEventListener(CombatEventType.UseSkillFinish, UseSkillFinish); CombatEventManager.Instance.AddEventListener(CombatEventType.FillInSkillSlots, FillInSkillSlots); } public override void DelEvent() { CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroHpUpdate, HeroHpUpdate); CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddUseGongFa, AddUseGongFa); CombatEventManager.Instance.RemoveEventListener(CombatEventType.UseSkill, UseSkill); CombatEventManager.Instance.RemoveEventListener(CombatEventType.UseSkillFinish, UseSkillFinish); CombatEventManager.Instance.RemoveEventListener(CombatEventType.FillInSkillSlots, FillInSkillSlots); } public override void AddButtonEvent() { } public void ShowWidget(int index) { this.index = index; } private void FillInSkillSlots(IEventData iEventData) { FillInSkillSlotsEventData fillInSkillSlotsEventData = iEventData as FillInSkillSlotsEventData; if (fillInSkillSlotsEventData.SkillBasic.CombatHeroEntity.IsEnemy) { return; } for (int i = 0; i < currDengDaiSkill.Count; i++) { DengDaiSkillWidget skillWidget = currDengDaiSkill[i]; if (currDengDaiSkill[i].SkillBasic == fillInSkillSlotsEventData.SkillBasic) { UIManager.Instance.DormancyGComponent(skillWidget); currDengDaiSkill.RemoveAt(i); } } } private async void UseSkillFinish(IEventData iEventData) { UseSkillFinishEventData combatUseSkillEventData = iEventData as UseSkillFinishEventData; if (combatUseSkillEventData.SkillBasic.CombatHeroEntity.IsEnemy) { return; } SkillBasic skillBasic = combatUseSkillEventData.SkillBasic; bool isOk = IsMyWuXing(skillBasic.wuXingType); if (!isOk) { return; } useSkillIcon.gameObject.SetActive(false); DengDaiSkillWidget dengDaiSkillWidget = await UIManager.Instance.CreateGComponentForObject(DengDaiSkillWidget, null, root: dengDaiSkill, isInstance: true); dengDaiSkillWidget.ShowWidget(skillBasic); currDengDaiSkill.Add(dengDaiSkillWidget); } private bool IsMyWuXing(WuXingType wuXingType) { bool isOk = false; switch (wuXingType) { case WuXingType.Gold: if (index == 0) { isOk = true; } break; case WuXingType.Water: if (index == 1) { isOk = true; } break; case WuXingType.Wood: if (index == 2) { isOk = true; } break; case WuXingType.Fire: if (index == 3) { isOk = true; } break; case WuXingType.Earth: if (index == 4) { isOk = true; } break; } return isOk; } private void UseSkill(IEventData iEventData) { CombatUseSkillEventData combatUseSkillEventData = iEventData as CombatUseSkillEventData; if (!combatUseSkillEventData.useSkill.CombatHeroEntity.IsEnemy) { bool isOk = IsMyWuXing(combatUseSkillEventData.useSkill.wuXingType); if (isOk) { currUseSkill = combatUseSkillEventData.useSkill; useSkillIcon.gameObject.SetActive(true); useSkillIcon.icon_name = combatUseSkillEventData.useSkill.SelfSkillConfig.icon; } } } private void AddUseGongFa(IEventData iEventData) { AddUseGongFaEventData addUseGongFaEventData = iEventData as AddUseGongFaEventData; if (!addUseGongFaEventData.SkillBasic.CombatHeroEntity.IsEnemy) { bool isOk = IsMyWuXing(addUseGongFaEventData.SkillBasic.wuXingType); if (isOk) { uitween.Play("show", false); } } } private void HeroHpUpdate(IEventData iEventData) { CombatHeroInfo combatHeroInfo = CombatController.currActiveCombat.CombatHeroController .playerHeroEntity.CurrCombatHeroInfo; } } }