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

namespace JLGames.RocketDriver.Games.RpgMaterial.Service
{
    public interface IMaterialServiceDisplay : IMaterialService
    {
        /// <summary>
        /// Get material icon id
        /// 取材料图标Id
        /// </summary>
        /// <param name="mId"></param>
        /// <returns></returns>
        int GetMaterialIconId(int mId);

        /// <summary>
        /// Get user material icon id
        /// 取用户材料图标Id
        /// </summary>
        /// <param name="eId"></param>
        /// <returns></returns>
        int GetUserMaterialIconId(int eId);

        /// <summary>
        /// Get material icon path
        /// 取材料图标路径
        /// </summary>
        /// <param name="mId"></param>
        /// <returns></returns>
        string GetMaterialIconPath(int mId);

        /// <summary>
        /// Get user material icon path
        /// 取用户材料图标路径
        /// </summary>
        /// <param name="eId"></param>
        /// <returns></returns>
        string GetUserMaterialIconPath(int eId);

        /// <summary>
        /// Get material display weight factor
        /// 取材料显示权重
        /// </summary>
        /// <param name="mId"></param>
        /// <returns></returns>
        int GetMaterialWeight(int mId);

        /// <summary>
        /// Get user material display weight factor
        /// 取用户材料显示权重
        /// </summary>
        /// <param name="eId"></param>
        /// <returns></returns>
        int GetUserMaterialWeight(int eId);
    }

    public interface IMaterialServiceDisplay<TU, TM, TCfg> : IMaterialServiceDisplay, IMaterialService<TU, TM, TCfg>
        where TU : IUserMaterialDisplay<TM, TCfg>
        where TM : IMaterialDisplay<TCfg>
    {
    }
}