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

@ -108,7 +108,7 @@ namespace Server.Items
{
if (value != m_ReplenishesCharges && value)
{
m_LastReplenished = DateTime.UtcNow;
m_LastReplenished = Core.Now;
}
m_ReplenishesCharges = value;
@ -159,15 +159,15 @@ namespace Server.Items
return;
}
if (m_LastReplenished + ChargeReplenishRate < DateTime.UtcNow)
if (m_LastReplenished + ChargeReplenishRate < Core.Now)
{
var timeDifference = DateTime.UtcNow - m_LastReplenished;
var timeDifference = Core.Now - m_LastReplenished;
m_UsesRemaining = Math.Min(
m_UsesRemaining + (int)(timeDifference.Ticks / ChargeReplenishRate.Ticks),
InitMaxUses
); // How rude of TimeSpan to not allow timespan division.
m_LastReplenished = DateTime.UtcNow;
m_LastReplenished = Core.Now;
if (invalidate)
{