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

@ -301,7 +301,7 @@ namespace Server.Engines.CannedEvil
{
m_RestartTimer?.Stop();
RestartTime = DateTime.UtcNow + ts;
RestartTime = Core.Now + ts;
m_RestartTimer = new RestartTimer(this, ts);
m_RestartTimer.Start();
@ -564,7 +564,7 @@ namespace Server.Engines.CannedEvil
SetWhiteSkullCount(p / 20);
}
if (DateTime.UtcNow >= ExpireTime)
if (Core.Now >= ExpireTime)
{
Expire();
}
@ -575,7 +575,7 @@ namespace Server.Engines.CannedEvil
public void AdvanceLevel()
{
ExpireTime = DateTime.UtcNow + ExpireDelay;
ExpireTime = Core.Now + ExpireDelay;
if (Level < 16)
{
@ -811,7 +811,7 @@ namespace Server.Engines.CannedEvil
SetWhiteSkullCount(0);
}
ExpireTime = DateTime.UtcNow + ExpireDelay;
ExpireTime = Core.Now + ExpireDelay;
}
public Point3D GetRedSkullLocation(int index)
@ -1293,7 +1293,7 @@ namespace Server.Engines.CannedEvil
if (reader.ReadBool())
{
RestartTime = reader.ReadDeltaTime();
BeginRestart(RestartTime - DateTime.UtcNow);
BeginRestart(RestartTime - Core.Now);
}
if (version < 4)

View file

@ -24,7 +24,7 @@ namespace Server.Items
if (decays)
{
m_Decays = true;
m_DecayTime = DateTime.UtcNow + TimeSpan.FromMinutes(2.0);
m_DecayTime = Core.Now + TimeSpan.FromMinutes(2.0);
m_Timer = new InternalTimer(this, m_DecayTime);
m_Timer.Start();
@ -87,7 +87,7 @@ namespace Server.Items
{
private readonly Item m_Item;
public InternalTimer(Item item, DateTime end) : base(end - DateTime.UtcNow) => m_Item = item;
public InternalTimer(Item item, DateTime end) : base(end - Core.Now) => m_Item = item;
protected override void OnTick()
{