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

namespace JLGames.RocketDriver.Games.RpgMaterial.Material
{
    public abstract class MaterialWorth<TCfg> : IMaterialWorth<TCfg>
    {
        protected TCfg m_RawData;
        protected MetaData m_Data;
        protected MetaWorth m_WorthData;

        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 Worth => m_WorthData.Worth;

        public override string ToString()
        {
            return $"MaterialOper[Data={m_Data}, Worth={m_WorthData}]";
        }

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

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

        public int GetNumByWorth(int worth, bool ceil)
        {
            return m_WorthData.GetNumByWorth(worth, ceil);
        }

        public int GetWorthByNum(int num)
        {
            return m_WorthData.GetWorthByNum(num);
        }
    }
}