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