using System;
using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
using Fort23.Core;
using GameLogic.Combat.CombatTool;
using GameLogic.Combat.Hero;
using UnityEngine;
using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
namespace GameLogic.Combat.Skill
{
    /// 
    /// 冰魄飞甲
    /// 神龟龟甲一个虚影快速连续收缩,然后爆开,形成多个如同龟甲碎片的弹道,被命中的敌人受到{0}伤害,碎片无视敌人{1}%防御
    /// 
    public class S9021 : SkillBasic
    {
        protected override void ProInitSkill()
        {
            AddTriggerCallBack("9021_zd", ProDefaultTimeLineTrigger_9021_zd);
        }
        protected override void ProUseSkill()
        {
            ActivationTimeLineData("9021");
            ballisticsCount = (int)effectValue[0];
            Vector3 startPos = CombatHeroEntity.dotPos;
            CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
                .GetThis()
                .GetMainHotPoin();
            BetterList currTarget = new BetterList();
            currTarget.Add(combatHeroHitPoint);
            Vector3 dir = (combatHeroHitPoint.combatHeroEntity.dotPos - startPos).normalized;
            bool isLafet = false;
            for (int i = 0; i < effectValue[0]*15; i++)
            {
                Vector3 endPos = Vector3.zero;
                if (i != 0)
                {
                    int fh = (int)(Math.Pow(-1, i + 1) * Math.Ceiling(i / 2.0));
                    Quaternion quaternion = Quaternion.Euler(0, fh * 5, 0)*CombatHeroEntity.GameObject.transform.rotation;
                    dir = quaternion * Vector3.forward;
                }
                endPos = dir * 30 + startPos+new Vector3(0,1,0);
                ActivationTimeLineData("9021_zd", currTarget: currTarget,
                    customizePos: new Vector3[] { startPos, endPos }, indexCount: i);
            }
        }
        private void ProDefaultTimeLineTrigger_9021_zd(string groupName, CombatHeroHitPoint targetEntity,
            ITimelineFxLogic timelineFxLogic,
            TriggerData triggerData, ISkillFeatures skillFeatures)
        {
            HarmReturnInfo harmReturnInfo = CObjectPool.Instance.Fetch();
            harmReturnInfo.ArmorPiercing = effectValue[2];
            float harmBl = effectValue[1];
            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
                harmBl);
            harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
                AttType.Skill, triggerData,
                wuXingType, skillFeatures,
                HarmType.Default, harmReturnInfo: harmReturnInfo);
        }
        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
            ITimelineFxLogic timelineFxLogic,
            TriggerData triggerData, ISkillFeatures skillFeatures)
        {
        }
    }
}