Files
taptap2024_GJ_chidouren/Assets/Scripts/System/OfflineSystem/OfflineTimeHandler.cs

77 lines
2.1 KiB
C#
Raw Normal View History

2024-10-16 00:03:41 +08:00
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;
}
}
}