﻿using JLGames.RocketDriver.Games.RpgMaterial.Common;

namespace JLGames.RocketDriver.Games.RpgMaterial.Material
{
    public abstract class MaterialDisplay<TCfg> : IMaterialDisplay<TCfg>
    {
        protected TCfg m_RawData;
        protected MetaData m_Data;
        protected MetaDisplay m_DisplayData;

        public TCfg RawData => m_RawData;
        public string EKey => $"{m_Data.Id}";
        public int Id => m_Data.Id;
        public string Name => m_Data.Name;
        public int Type => m_Data.Type;
        public int LimitMin => m_Data.LimitMin;
        public int LimitMax => m_Data.LimitMax;
        public string Desc => m_Data.Desc;

        public int Quality => m_DisplayData.Quality;
        public int IconId => m_DisplayData.IconId == 0 ? m_Data.Id : m_DisplayData.IconId;
        public virtual string IconPath => $"{IconId}";
        public virtual string IconSubName => $"Icon_{IconId}";
        public int Weight => m_DisplayData.Weight;

        public override string ToString()
        {
            return $"MaterialDisplay[Data={m_Data}, Display={m_DisplayData}]";
        }

        public int CheckLimit(int num)
        {
            return m_Data.CheckLimit(num);
        }

        public string GetDesc()
        {
            return m_Data.Desc;
        }
    }
}