using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
using Core.Triiger;
using GameLogic.Combat.CombatTool;
using GameLogic.Combat.Hero;
using GameLogic.Player;
using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
namespace GameLogic.Combat.Skill
{
    /// 
    /// (2转,防御型技能):身体周围围绕多丙剑飞行,可以阻挡敌人的功法.抵挡{0}最大生命值的伤害 改剑阵收到火系伤害时会升温,升温后会融化。(受到的火系伤害提升60%)
    /// 
    public class S9002 : SkillBasic, IBarrier
    {
        private bool isTrgger;
        public long shel;
        protected TimeLineEventLogicGroupBasic _timeLineEventLogicGroupBasic;
        protected override void ProInitSkill()
        {
            // AddTriggerCallBack("sk1_fashe", Sk1_FaSheProDefaultTimeLineTrigger);
        }
        protected override void ProUseSkill()
        {
            CombatHeroEntity.CloseLoopFx();
            _timeLineEventLogicGroupBasic = ActivationTimeLineData("sk2");
            Own = CombatHeroEntity;
        }
        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
            ITimelineFxLogic timelineFxLogic,
            TriggerData triggerData,ISkillFeatures skillFeatures)
        {
            // count = 0;
            SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("sk2_trigger");
            // specialDotInfo
            BarrierEntityMono barrierEntityMono =
                specialDotInfo.targetTran.gameObject.GetOrAddComponent();
            barrierEntityMono.Barrier = this;
            isTrgger = true;
            shel = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.MaxCombatHeroInfo.hp.Value,
                effectValue[0]);
            isActive = false;
        }
        // private void Sk1_FaSheProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
        //     ITimelineFxLogic timelineFxLogic,
        //     TriggerData triggerData,ISkillFeatures skillFeatures)
        // {
        //     long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
        //         effectValue[0]);
        //     CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v, AttType.Skill, triggerData, wuXingType,skillFeatures,
        //         HarmType.Default);
        // }
        protected override void ProCombatUpdate(float time)
        {
            if (!isTrgger)
            {
                return;
            }
            // currTime += time;
            // if (currTime > 0.1f)
            // {
            //     currTime -= time;
            //     ActivationTimeLineData("sk1_fashe");
            //     count++;
            //     if (count > 20)
            //     {
            //         isTrgger = false;
            //     }
            // }
        }
        public ShowBaiscEntity Own { get; set; }
        public BarrierTriggerData BarrierTriggerData { get; set; }
        public bool CollideTriiger(ITriggerEntity triggerEntity)
        {
            return !isTrgger || shel <= 0;
        }
        public long Harm(HarmReturnInfo harmReturnInfo)
        {
            if (harmReturnInfo.WuXingType.HasFlag(WuXingType.Fire))
            {
                harmReturnInfo.att +=
                    CombatCalculateTool.Instance.GetVlaueRatioForLong(harmReturnInfo.att, effectValue[1]);
            }
            shel -= harmReturnInfo.att;
            if (shel <= 0)
            {
                isActive = true;
                _timeLineEventLogicGroupBasic?.CloseLoopFx();
                _timeLineEventLogicGroupBasic = null;
            }
            return 0;
        }
    }
}