You've already forked taptap2024_GJ_chidouren
77 lines
2.1 KiB
C#
77 lines
2.1 KiB
C#
|
|
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;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|