using System;
namespace XGame.Framework.Time
{
///
/// 时钟,内置闹钟和定时器
///
public interface IClock : ITimeUpdate, IDisposable
{
///
/// 设置时间戳,用于校准时间
///
/// 时间戳,单位:毫秒
/// 时钟类型(客户端时间or服务端时间,默认服务端时间)
void SetTime(long timestamp, ClockType clockTyp = ClockType.Server);
///
/// 获取当前时间戳(毫秒)
///
/// 时钟类型(客户端时间or服务端时间,默认服务端时间)
///
long GetNowTime(ClockType clockTyp = ClockType.Server);
///
/// 添加闹钟
///
/// 目标时间戳(毫秒)
/// 回调
/// 时钟类型(客户端时间or服务端时间,默认服务端时间)
/// 此闹钟
IAlarm AddAlarm(long triggerTimestamp, Action action, ClockType clockTyp = ClockType.Server);
///
/// 添加计时器
///
/// 延时(毫秒)
/// 回调
/// 此计时器
ITimer AddDelayTimer(int delay, Action action);
///
/// 添加循环定时器(使用客户端时间)
///
/// 循环间隔,单位:毫秒
/// 触发事件,参数为循环的次数
/// 循环次数, 默认-1(-1为无限,0和1都是1次)
/// 定时器
ITimer AddLooperTimer(int delay, int interval, Action action, int loopTime = -1);
}
}