using System.Collections.Generic;
using System.Linq;
using GameLogic.Combat.CombatTool;
using GameLogic.Combat.Hero;
using GameLogic.Hero;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
namespace GameLogic.Player
{
    public class GongFaControl
    {
        /// 
        /// 出战的功法 一共10个位置
        /// 
        public SkillInfo[] allUseSkill = new SkillInfo[10];
        public List allSkill = new List();
        public int taoismSkillIndex = -1;
        public void AddSkillInfo(SkillInfo skillInfo)
        {
            allSkill.Add(skillInfo);
            if (skillInfo.index != -1)
            {
                allUseSkill[skillInfo.index] = skillInfo;
            }
        }
        public SkillInfo GetSkillInfo(int index)
        {
            return allUseSkill[index];
        }
        public void RemoveSkillInfo(int index)
        {
            allUseSkill[index] = null;
        }
        public void RemoveSkillInfo(SkillInfo skillInfo)
        {
            allUseSkill[skillInfo.index] = null;
            AccountFileInfo.SkillData skillData = AccountFileInfo.Instance.playerData.AllSkillDatas.First(s => s.id == skillInfo.skillConfig.IDGroup);
            skillData.useIndex = -1;
        }
        public void AddUseSkill(SkillInfo skillInfo)
        {
            allUseSkill[skillInfo.index] = skillInfo;
            AccountFileInfo.SkillData skillData = AccountFileInfo.Instance.playerData.AllSkillDatas.First(s => s.id == skillInfo.skillConfig.IDGroup);
            skillData.useIndex = skillInfo.index;
        }
        public void SetTaoismSkillIndex(int id)
        {
            taoismSkillIndex = id;
            PlayerManager.Instance.myHero.TaoismSkillId = id;
            CombatHeroEntity combatHeroEntity = CombatController.currActiveCombat.playerHeroEntity;
            combatHeroEntity.CombatHeroSkillControl.This().InitTaoismSkill(id);
        }
        /// 
        /// 测试用
        /// 
        public void SaveUseSkill()
        {
            if(allUseSkill == null)
                return;
            CombatHeroEntity combatHeroEntity = CombatController.currActiveCombat.playerHeroEntity;
            combatHeroEntity.CombatHeroSkillControl.SetNewSkill(allUseSkill);
            AccountFileInfo.Instance.SavePlayerData();
        }
        public void SaveUseSkill(SkillInfo[] allUseSkill)
        {
            for (var i = 0; i < allSkill.Count; i++)
            {
                allSkill[i].index = -1;
                allSkill[i].SkillData.useIndex = -1;
            }
            for (var i = 0; i < allUseSkill.Length; i++)
            {
                this.allUseSkill[i] = allUseSkill[i];
                if (allUseSkill[i] != null)
                {
                    allUseSkill[i].index = i;
                    allUseSkill[i].SkillData.useIndex = i;
                }
            }
            CombatHeroEntity combatHeroEntity = CombatController.currActiveCombat.playerHeroEntity;
            combatHeroEntity.CombatHeroSkillControl.SetNewSkill(allUseSkill);
            AccountFileInfo.Instance.SavePlayerData();
        }
    }
}