﻿namespace JLGames.RocketDriver.Games.RpgMaterial.Material
{
    public enum MaterialValidType
    {
        /// <summary>
        /// None Valid
        /// 无验证
        /// </summary>
        None,

        /// <summary>
        /// Timestamp Valid
        /// 时间戳验证
        /// </summary>
        Stamp,

        /// <summary>
        /// Duration Valid
        /// 时长验证
        /// </summary>
        Duration
    }

    public interface IMaterialValid : IMaterial
    {
        /// <summary>
        /// Verify if enabled
        /// 验证是否启用
        /// </summary>
        bool ValidEnabled { get; }

        /// <summary>
        /// Valid Type
        /// 验证类型
        /// </summary>
        MaterialValidType ValidType { get; }

        /// <summary>
        /// Check if it is valid
        /// 检查是否有效
        /// </summary>
        /// <param name="ticks"></param>
        /// <returns></returns>
        bool CheckValid(long ticks);
    }

    public interface IMaterialValid<TCfg> : IMaterial<TCfg>, IMaterialValid
    {
    }
}