using Common.Utility.CombatEvent;
using Fort23.Core;
using GameLogic.Combat.Buff;
using GameLogic.Combat.CombatTool;
namespace GameLogic.Combat.Skill
{
    /// 
    /// 星辰之力打中敌人后,为期注入星辰印记,在星辰道结束时结算,没3层印记受到20%伤害
    /// 
    public class S60105 : SkillBasic
    {
        private DS60101 ds60101;
        protected override void ProActiveSkill()
        {
            ds60101 = CombatHeroEntity.CombatHeroSkillControl.GetSkillBasic();
            ds60101.OnSkillActivefinish += OnSkillActivefinish;
            CombatEventManager.Instance.AddEventListener(CombatEventType.HeroInjured, HeroInjured);
        }
        private void OnSkillActivefinish()
        {
            CombatHeroEntity[] allHero =
                CombatController.currActiveCombat.CombatHeroController.GetHero(!CombatHeroEntity.IsEnemy,out int maxCount);
            for (int i = 0; i < maxCount; i++)
            {
                CombatHeroEntity combatHeroEntity = allHero[i];
                b_1024 b1024 = combatHeroEntity.BuffControl.GetBuffBasicForType();
                if (b1024 != null)
                {
                    b1024.Trigger(CombatHeroEntity);
                    combatHeroEntity.BuffControl.RemoveBuff(b1024);
                }
            }
        }
        private void HeroInjured(IEventData iEventData)
        {
            if (ds60101 == null || !ds60101.isSkillActive)
            {
                return;
            }
            // SkillFeaturesData mySkillFeaturesData = null;
            HeroInjuredEventData heroInjuredEventData = iEventData as HeroInjuredEventData;
            if (heroInjuredEventData.HarmReturnInfo.source == CombatHeroEntity &&
                heroInjuredEventData.HarmReturnInfo.isHitHero)
            {
                S60104 s60104 = heroInjuredEventData.HarmReturnInfo.triggerData.Source as S60104;
                if (s60104 != null)
                {
                    BuffInfo buffInfo = BuffInfo.GetBuffInfo(10241, -1, 1);
                    heroInjuredEventData.HarmReturnInfo.target.combatHeroEntity.BuffControl.AddBuff(CombatHeroEntity,
                        buffInfo);
                }
            }
        }
        protected override void ProDispose()
        {
            ds60101.OnSkillActivefinish -= OnSkillActivefinish;
            CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroInjured, HeroInjured);
        }
        protected override void ProUseSkill()
        {
        }
    }
}