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;
|
||
}
|
||
|
||
|
||
}
|
||
} |