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

namespace JLGames.RocketDriver.Games.RpgMaterial.Service
{
    public interface IMaterialServiceValid : IMaterialService
    {
        /// <summary>
        /// Check if user owns the material
        /// 判断用户是否拥有材料
        /// </summary>
        /// <param name="mId">>Material Id<br/>材料Id</param>
        /// <param name="ignoreValid">Ignore valid<br/>忽略验证</param>
        /// <returns></returns>
        bool ExistUserMaterialByMId(int mId, bool ignoreValid);

        /// <summary>
        /// Get the number of user materials
        /// 取用户材料数量
        /// None: return 0
        /// 无：返回0
        /// </summary>
        /// <param name="mid">Material Id<br/>材料Id</param>
        /// <param name="ignoreValid">Ignore valid<br/>忽略验证</param>
        /// <returns></returns>
        int GetUserMaterialNumByMId(int mid, bool ignoreValid);
    }

    public interface IMaterialServiceValid<TU, TM, TCfg> : IMaterialServiceValid, IMaterialService<TU, TM, TCfg>
        where TU : IUserMaterialValid<TM, TCfg>
        where TM : IMaterialValid<TCfg>
    {
    }
}