using Common.Utility.CombatEvent;
using Fort23.Core;
using GameLogic.Combat.CombatTool;
using GameLogic.Player;
namespace GameLogic.Combat.Buff
{
    /// 
    /// 灼热:对敌人照成{0}火属性灼烧伤害,满层后敌人获得灼痛,有灼痛时不在获得,满层时敌人会受到痛苦,敌人使用功法时自身受到当前生命{1}%伤
    /// 
    public class b_1005 : BuffBasic
    {
        private float _time;
        protected override void ProInit()
        {
            CombatEventManager.Instance.AddEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
        }
        private void AddUseGongFa(IEventData eventData)
        {
            AddUseGongFaEventData data = (AddUseGongFaEventData)eventData;
            if (data.SkillBasic.CombatHeroEntity == combatHeroEntity)
            {
                if (buffCount < BuffConfig.overlayCount)
                {
                    return;
                }
                float harmbl =  BuffConfig.effectValue[1];
                long harm = CombatCalculateTool.Instance.GetVlaueRatioForLong(
                    source.CurrCombatHeroInfo.hp.Value, harmbl);
                CombatCalculateTool.Instance.Harm(source, combatHeroEntity, harm, AttType.Buff, _triggerData,
                    WuXingType.Fire,null,HarmType.Buff);
            }
        }
     
        protected override void ProUpdate(float t)
        {
            _time += t;
            if (_time >= 1)
            {
                _time -= 1;
                float harmbl = buffCount * BuffConfig.effectValue[0];
                long harm = CombatCalculateTool.Instance.GetVlaueRatioForLong(
                    source.CurrCombatHeroInfo.attack.Value, harmbl);
                harm += CombatCalculateTool.Instance.GetVlaueRatioForLong(
                    harm, source.CurrCombatHeroInfo.Fire_Proficient);
                CombatCalculateTool.Instance.Harm(source, combatHeroEntity, harm, AttType.Buff, _triggerData,
                    WuXingType.Fire, null, HarmType.Buff);
            }
        }
        // protected override void ProUpdateEffect()
        // {
        //     if (buffCount >= buffInf.BuffConfig.overlayCount) //最大叠加数量
        //     {
        //         b_1010 b1010 = combatHeroEntity.BuffControl.GetBuffBasicForType();
        //         if (b1010 != null)
        //         {
        //             return;
        //         }
        //
        //         BuffInfo buffInfo = BuffInfo.GetBuffInfo(10101, 1,this);
        //         combatHeroEntity.BuffControl.AddBuff(source, buffInfo);
        //         // combatHeroEntity.BuffControl.RemoveBuff(this);
        //     }
        // }
        protected override void ProDormancyObj()
        {
            CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
        }
    }
}