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

namespace JLGames.RocketDriver.Games.RpgMaterial.Material
{
    public abstract class MaterialOper<TCfg> : IMaterialOper<TCfg>
    {
        protected TCfg m_RawData;
        protected MetaData m_Data;
        protected MetaOper m_OperData;

        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 override string ToString()
        {
            return $"MaterialOper[Data={m_Data}, Oper={m_OperData}]";
        }

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

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

        public bool CheckOperability(int index)
        {
            return m_OperData.CheckOperability(index);
        }
    }
}