using System.Collections.Generic;
using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
using Fort23.Core;
using GameLogic.Combat.Buff;
using GameLogic.Combat.CombatTool;
using GameLogic.Combat.Hero;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
using UnityEngine;
using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
namespace GameLogic.Combat.Skill.MagicSkill
{
    /// 
    /// 对敌人照成伤害,并随机封锁敌人{0}个法宝,让其{1}秒内不能使用和不能充能
    /// 如果影响的是2个相生法宝,则这2个法宝在本场战斗中充能时间增加30%
    /// 
    public class S3301 : MagicSkillBasic
    {
        private CombatHeroEntity target;
        List yingXingWeapon = new List();
        protected override void ProMagicUseSkill()
        {
            // StraightLineShow straightLineShow = new StraightLineShow();
            // straightLineShow.Init(this);
            target = CombatMagicWeaponEntity.RootMagicWeaponControl.combatHeroEntity.CombatAIBasic.currFocusTarget;
            if (target == null)
            {
                SkillPlayFinish();
                return;
            }
            MagicAttShowBasic magicAttShowBasic = InitMagicAttShowBasic(target, Finish);
            SetMagicAttShowBasic(magicAttShowBasic);
        }
        private void Finish()
        {
            CombatHeroEntity combatHeroEntity = target;
            ILifetCycleHitPoint lifetCycleHitPoint = target.GetMainHotPoin();
            if (lifetCycleHitPoint == null)
            {
                return;
            }
            CombatMagicWeaponEntity[] AllMagicWeapon = combatHeroEntity.heroMagicWeaponControl.AllMagicWeapon;
            int maxCount = combatHeroEntity.heroMagicWeaponControl.MagicWeaponCount;
            if (maxCount > 0)
            {
                List currAllMagicWeapon = new List();
                currAllMagicWeapon.AddRange(AllMagicWeapon);
                List addMagicWeaponEntities = new List();
                for (int i = 0; i < effectValue[0]; i++)
                {
                    if (maxCount > 0)
                    {
                        int index = Random.Range(0, maxCount);
                        BuffInfo buffInfo = BuffInfo.GetBuffInfo(10081, effectValue[1], 1,this);
                        CombatMagicWeaponEntity combatMagicWeaponEntity = currAllMagicWeapon[index];
                        combatMagicWeaponEntity.BuffControl.AddBuff(
                            CombatMagicWeaponEntity.RootMagicWeaponControl.combatHeroEntity,
                            buffInfo);
                        currAllMagicWeapon.RemoveAt(index);
                        if (SelfSkillConfig.level > 3 && !yingXingWeapon.Contains(combatMagicWeaponEntity))
                        {
                            bool isXiangSheng = false;
                            if (addMagicWeaponEntities.Count > 0)
                            {
                                for (int j = 0; j < addMagicWeaponEntities.Count; j++)
                                {
                                    CombatMagicWeaponEntity lasetWeaponEntity = addMagicWeaponEntities[j];
                                    bool isOk = CombatCalculateTool.Instance.IsSymbiosis(lasetWeaponEntity.WuXingType,
                                        combatMagicWeaponEntity.WuXingType);
                                    if (isOk)
                                    {
                                        lasetWeaponEntity.cdAddSpeed -= effectValue[3];
                                        combatMagicWeaponEntity.cdAddSpeed -= effectValue[3];
                                        yingXingWeapon.Add(lasetWeaponEntity);
                                        yingXingWeapon.Add(combatMagicWeaponEntity);
                                        isXiangSheng = true;
                                        addMagicWeaponEntities.RemoveAt(j);
                                        break;
                                    }
                                }
                            }
                            if (!isXiangSheng)
                            {
                                addMagicWeaponEntities.Add(combatMagicWeaponEntity);
                            }
                        }
                        maxCount--;
                    }
                }
            }
        
            long att = CombatMagicWeaponEntity.RootMagicWeaponControl.combatHeroEntity.CurrCombatHeroInfo.attack.Value;
            long harm = CombatCalculateTool.Instance.GetVlaueRatioForLong(att, effectValue[2]);
            CombatCalculateTool.Instance.Harm(CombatMagicWeaponEntity.RootMagicWeaponControl.combatHeroEntity,
                lifetCycleHitPoint as CombatHeroHitPoint, harm, AttType.FaBao, triggerData, wuXingType, null,
                HarmType.Default);
            BetterList cBetterList = new BetterList(1);
            cBetterList.Add(lifetCycleHitPoint);
            ActivationTimeLineData("sk1_hit", currTarget: cBetterList);
            SkillPlayFinish();
           
        }
        // protected override ILifetCycleHitPoint[] ProGetTineLineTargetEntity(
        //     TimeLineEventLogicBasic timeLineEventLogicBasic)
        // {
        //     ILifetCycleHitPoint[] lifetCycleHitPoints = new ILifetCycleHitPoint[1];
        //     lifetCycleHitPoints[0] = target.GetMainHotPoin();
        //     return lifetCycleHitPoints;
        // }
    }
}