Files
2024-10-16 00:03:41 +08:00

77 lines
2.1 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Script.Core.Utils.Extend;
namespace System.OfflineSystem
{
/// <summary>
/// 计时器handler支持直接序列化
/// </summary>
[Serializable]
public class OfflineTimeHandler
{
[FJson.Core.FSerialize] private long _timeStamp;
[FJson.Core.FSerialize] private float _duration; //倒计时时长 单位:秒
[FJson.Core.FSerialize] private float _extraTime; //额外时长 单位:秒
private DateTime _startTime;
/// <summary>
/// 单位时长
/// </summary>
/// <param name="time"></param>
public void AddExtraTime (float time)
{
this._extraTime += time;
}
/// <summary>
/// 获取计时器初始时间
/// </summary>
public DateTime StartTime
{
get
{
if (this._startTime == default)
{
this._startTime = this._timeStamp.GetDateTime13 ();
}
return this._startTime;
}
}
public float Duration => this._duration; //倒计时时长 单位:秒
/// <summary>
/// 获取剩余时长 单位s
/// </summary>
/// <returns></returns>
public float RemainingTime ()
{
if (this._duration <= 0)
return 0;
var curDuration = this.CurDuration;
return (float) Math.Max (0 , this._duration - curDuration);
}
/// <summary>
/// 当前持续时长 , 单位:秒
/// </summary>
public double CurDuration => (OfflineMgr.Instance.CurTimeNode.EndTime - this.StartTime).TotalSeconds + this._extraTime;
/// <summary>
/// 计时器是否计时完成
/// </summary>
public bool HasCountComplete => RemainingTime () <= 0;
public OfflineTimeHandler ()
{
}
internal OfflineTimeHandler (long timeStamp, float duration)
{
this._timeStamp = timeStamp;
this._duration = duration;
}
}
}