/// #pkgName FGUI包名
/// #panelName UIPanel名字
/// #UIName = $"{#pkgName}{#panelName}" UIKey名字
/// 该脚本由模板创建
/// created by cb 2024

using FL.Data;
using System.Collections.Generic;
using XGame.Database;
using XGame.Framework.UI;

namespace FL.FGUI
{
    /// <summary>
    /// UI逻辑处理类
    /// </summary>
    /// <typeparam name=""></typeparam>
    public partial class PlayerDetailsAttributeCtrl : UIController<PlayerDetailsAttributeVM>
    {
        private List<AttributeParam> _baseAttributeList;        // 基础属性
        private List<AttributeParam> _battleAttributeList;      // 战斗属性
        private List<AttributeParam> _battleResistanceAttrList; // 战斗抗性
        private List<AttributeParam> _specialAttributeList;     // 特殊属性

        protected override void OnEnable(object intent)
        {
            AddUIListenres();
            InitData();
            ShowAttributeUI();
        }
        protected override void OnDisable()
        {
            RemoveUIListenres();
            if (_baseAttributeList != null)
            {
                _baseAttributeList.Clear();
                _baseAttributeList = null;
            }
            if (_battleAttributeList != null)
            {
                _battleAttributeList.Clear();
                _battleAttributeList = null;
            }
            if (_battleResistanceAttrList != null)
            {
                _battleResistanceAttrList.Clear();
                _battleResistanceAttrList = null;
            }
            if (_specialAttributeList != null)
            {
                _specialAttributeList.Clear();
                _specialAttributeList = null;
            }
        }
        #region UI事件
        private void AddUIListenres()
        {

        }
        private void RemoveUIListenres()
        {

        }

        #endregion

        private void InitData()
        {
            if (_baseAttributeList == null)
            {
                _baseAttributeList = new List<AttributeParam>()
                {
                    GetAttributeParam(EAttributeType.Atk),
                    GetAttributeParam(EAttributeType.Hp),
                    GetAttributeParam(EAttributeType.Def),
                    GetAttributeParam(EAttributeType.AtkSpeed)
                };

            }
            if (_battleAttributeList == null)
            {
                _battleAttributeList = new List<AttributeParam>()
                {
                    GetAttributeParam(EAttributeType.Verti),//击晕
                    GetAttributeParam(EAttributeType.Crit),// 暴击
                    GetAttributeParam(EAttributeType.DoubleHit),//连击
                    GetAttributeParam(EAttributeType.Eva),  // 闪避
                    GetAttributeParam(EAttributeType.Counter)// 反击
                };
            }

            if (_battleResistanceAttrList == null)
            {
                _battleResistanceAttrList = new List<AttributeParam>()
                {
                    GetAttributeParam(EAttributeType.VertigoRes),//抗击晕
                    GetAttributeParam(EAttributeType.CritDmgFac),//抗暴击
                    GetAttributeParam(EAttributeType.DoubleHitRes),//抗连击
                    GetAttributeParam(EAttributeType.EvaRes),   //抗闪避
                    GetAttributeParam(EAttributeType.CounterRes)//抗反击
                };
            }

            if (_specialAttributeList == null)
            {
                _specialAttributeList = new List<AttributeParam>()
                {
                    GetAttributeParam(EAttributeType.CritDmgRes),//暴击减伤
                    GetAttributeParam(EAttributeType.DoubleHitDmgRes),//连击减伤
                    GetAttributeParam(EAttributeType.CounterDmgRes),//反击减伤
                    GetAttributeParam(EAttributeType.DmgRes),//伤害减免
                    GetAttributeParam(EAttributeType.BossDmgRes),  //BOSS减伤
                    GetAttributeParam(EAttributeType.IceFac),//冰系增伤
                    GetAttributeParam(EAttributeType.FireFac),//火系增伤
                    GetAttributeParam(EAttributeType.PoisonFac),//毒系增伤
                    GetAttributeParam(EAttributeType.WindFac),//风系增伤
                    GetAttributeParam(EAttributeType.ThunderFac),//雷系增伤
                    GetAttributeParam(EAttributeType.IceDmgRes),//冰系减伤
                    GetAttributeParam(EAttributeType.FireDmgRes),//火系减伤
                    GetAttributeParam(EAttributeType.PoisonDmgRes),//毒系减伤
                    GetAttributeParam(EAttributeType.WindDmgRes),//风系减伤
                    GetAttributeParam(EAttributeType.ThunderDmgRes),//雷系减伤
                };
            }
        }
        private AttributeParam GetAttributeParam(EAttributeType attributeType)
        {
            var attrParam = new AttributeParam()
            {
                attributeType = attributeType,
                attributeValue = PlayerData.Instance.Attr.GetValue(attributeType)
            };
            return attrParam;
        }

        private void ShowAttributeUI()
        {
            VM.BaseAttributeList.Ctrl.ShowUI(_baseAttributeList);
            VM.BattleAttributeList.Ctrl.ShowUI(_battleAttributeList);
            VM.BattleResistanceAttrList.Ctrl.ShowUI(_battleResistanceAttrList);
            VM.SpecialAttributeList.Ctrl.ShowUI(_specialAttributeList);
        }

    }
}