using System;
using System.Collections.Generic;
using Excel2Json;
using Fort23.UTool;
using UnityEngine;
namespace GameLogic.Hero
{
    public class FaBaoInfo
    {
        /// 
        /// 星级
        /// 
        public int star;
        public FabaoConfig FabaoConfig;
        public FabaoPowerupConfig FabaoPowerupConfig;
        public SkillConfig SkillConfig;
        public float[] effectValue;
        public long qiangDu;
        public Dictionary attriButedIC = new Dictionary();
        public AccountFileInfo.FaBaoData FaBaoData;
        public FaBaoInfo(AccountFileInfo.FaBaoData faBaoData)
        {
            CustomInit(faBaoData);
        }
        public void UpGrade()
        {
            FaBaoData.level++;
            CustomInit(FaBaoData);
            AccountFileInfo.Instance.SavePlayerData();
        }
        public FaBaoInfo(int id, int powerupId, int start = 1)
        {
            FaBaoData = new AccountFileInfo.FaBaoData();
            FaBaoData.level = powerupId;
            FaBaoData.id = id;
            // FaBaoData.useIndex = start;
            FabaoConfig = ConfigComponent.Instance.Get(id);
            FabaoPowerupConfig = ConfigComponent.Instance.Get(powerupId);
            SkillConfig = ConfigComponent.Instance.Get(FabaoConfig.SkillGroupID * 10 + FabaoPowerupConfig.SkillLevel - 1);
            // effectValue = new float[SkillConfig.effectValue.Length];
            if (SkillConfig.effectValue != null)
            {
                effectValue = new float[SkillConfig.effectValue.Length];
                Array.Copy(SkillConfig.effectValue, effectValue, SkillConfig.effectValue.Length);
            }
            else
            {
                LogTool.Error("找不到法宝技能id:" + id);
            }
            attriButedIC.Clear();
            //计算加得属性
            for (var i = 0; i < FabaoConfig.ShuxingIDs?.Length; i++)
            {
                float attribute = GetAttriBute(FabaoConfig.ShuxingIDs[i]);
                long value = (long)(attribute * FabaoConfig.ShuxingPara[0] * 0.01f);
                attriButedIC.Add(FabaoConfig.ShuxingIDs[i], value);
            }
            qiangDu = (long)(FabaoPowerupConfig.Power * SkillConfig.power * 0.01f);
        }
        public void CustomInit(AccountFileInfo.FaBaoData faBaoData)
        {
            FaBaoData = faBaoData;
            FabaoConfig = ConfigComponent.Instance.Get(faBaoData.id);
            FabaoPowerupConfig = ConfigComponent.Instance.Get(faBaoData.level);
            SkillConfig = ConfigComponent.Instance.Get(FabaoConfig.SkillGroupID * 10 + FabaoPowerupConfig.SkillLevel - 1);
            if (SkillConfig.effectValue != null)
            {
                effectValue = new float[SkillConfig.effectValue.Length];
                Array.Copy(SkillConfig.effectValue, effectValue, SkillConfig.effectValue.Length);
            }
            else
            {
                LogTool.Error("找不到法宝技能id:" + (FabaoConfig.SkillGroupID * 10 + FabaoPowerupConfig.SkillLevel - 1));
            }
            attriButedIC.Clear();
            //计算加得属性
            for (var i = 0; i < FabaoConfig.ShuxingIDs?.Length; i++)
            {
                float attribute = GetAttriBute(FabaoConfig.ShuxingIDs[i]);
                long value = Mathf.RoundToInt(attribute * FabaoConfig.ShuxingPara[i] * 0.01f);
                attriButedIC.Add(FabaoConfig.ShuxingIDs[i], value);
            }
            qiangDu = Mathf.RoundToInt(FabaoPowerupConfig.Power * SkillConfig.power * 0.01f);
        }
        private float GetAttriBute(int type)
        {
            switch (type)
            {
                case 1:
                    return FabaoPowerupConfig.HP;
                case 2:
                    return FabaoPowerupConfig.DEF;
                case 3:
                    return FabaoPowerupConfig.ATK;
            }
            return 0;
        }
    }
}