﻿using JLGames.RocketDriver.Games.RpgMaterial.Material;
using JLGames.RocketDriver.Games.RpgMaterial.User;

namespace JLGames.RocketDriver.Games.RpgMaterial.Service
{
    public interface IMaterialServiceWorth : IMaterialService
    {
        /// <summary>
        /// Get material worth
        /// 取材料价值
        /// </summary>
        /// <param name="mId"></param>
        /// <returns></returns>
        int GetMaterialWorth(int mId);

        /// <summary>
        /// Calculate material quantity by total worth
        /// 计算指定价值下要求的材料数量
        /// </summary>
        /// <param name="mId"></param>
        /// <param name="worth"></param>
        /// <param name="ceil"></param>
        /// <returns></returns>
        int GetMaterialNumByWorth(int mId, int worth, bool ceil);

        /// <summary>
        /// Calculate material total worth by quantity
        /// 取用户材料的价值
        /// </summary>
        /// <param name="eId"></param>
        /// <returns></returns>
        int GetUserMaterialWorth(int eId);
    }

    public interface IMaterialServiceWorth<TU, TM, TCfg> : IMaterialServiceWorth, IMaterialService<TU, TM, TCfg>
        where TU : IUserMaterialWorth<TM, TCfg>
        where TM : IMaterialWorth<TCfg>
    {
    }
}