fix(core): Caches DateTime.NowUtc (#548)

- [X] Caches DateTime.NowUtc on the game loop (not other threads)
- [X] Replaces all locations where it makes sense
- [X] Adds Min/Max for `IComparable` (TimeSpan, DateTimes, etc)

Closes #261
This commit is contained in:
Kamron Batman 2021-03-13 01:32:04 -08:00 • committed by GitHub
parent 5de6edbeb8
commit 6c4308bce6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
208 changed files with 660 additions and 793 deletions

View file

@ -47,32 +47,10 @@ namespace Server.Misc
public DateTime StartTime { get; set; }
[CommandProperty(AccessLevel.GameMaster, AccessLevel.Administrator)]
public TimeSpan TimeRemaining
{
get
{
if (StartTime == DateTime.MinValue || !m_Active)
{
return TimeSpan.Zero;
}
try
{
var ts = StartTime + Duration - DateTime.UtcNow;
if (ts < TimeSpan.Zero)
{
return TimeSpan.Zero;
}
return ts;
}
catch
{
return TimeSpan.Zero;
}
}
}
public TimeSpan TimeRemaining =>
StartTime == DateTime.MinValue || !m_Active
? TimeSpan.Zero
: Utility.Max(StartTime + Duration - Core.Now, TimeSpan.Zero);
[CommandProperty(AccessLevel.GameMaster, AccessLevel.Administrator)]
public bool Active
@ -89,7 +67,7 @@ namespace Server.Misc
if (m_Active)
{
StartTime = DateTime.UtcNow;
StartTime = Core.Now;
m_ActivePollers.Add(this);
}
else