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

@ -315,13 +315,7 @@ namespace Server.Items
return;
}
var ts = t.Next - DateTime.UtcNow;
if (ts < TimeSpan.Zero)
{
ts = TimeSpan.Zero;
}
t.Delay = ts;
t.Delay = Utility.Max(t.Next - Core.Now, TimeSpan.Zero);
t.Stop();
}
@ -334,7 +328,7 @@ namespace Server.Items
}
public static TimeSpan TimeRemaining(Mobile m) =>
Timers.TryGetValue(m, out var t) ? t.Next - DateTime.UtcNow : TimeSpan.Zero;
Timers.TryGetValue(m, out var t) ? t.Next - Core.Now : TimeSpan.Zero;
private class InternalTimer : Timer
{