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

namespace JLGames.RocketDriver.Games.RpgMaterial.Service
{
    public interface ITriggerEntity
    {
        /// <summary>
        /// Trigger id.
        /// 触发器Id
        /// </summary>
        int TriggerId { get; }

        /// <summary>
        /// Is it a post trigger
        /// 是否为后置触发器
        /// </summary>
        bool IsPost { get; }

        /// <summary>
        /// Remaining trigger times
        /// 剩余触发次数
        /// </summary>
        int RemainTimes { get; }

        /// <summary>
        /// There are no remaining times
        /// 没有剩余次数
        /// </summary>
        bool RemainEmpty { get; }

        /// <summary>
        /// Check if it matches
        /// 检查是否匹配
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        bool Match(UserNotifyData data);
        
        /// <summary>
        /// Invoke trigger
        /// 执行触发
        /// </summary>
        /// <param name="data"></param>
        void InvokeTrigger(UserNotifyData data);
    }
}