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

@ -51,16 +51,7 @@ namespace Server.Items
[CommandProperty(AccessLevel.GameMaster)]
public TimeSpan Duration
{
get
{
if (m_Duration != TimeSpan.Zero && m_Burning)
{
return m_End - DateTime.UtcNow;
}
return m_Duration;
}
get => m_Duration != TimeSpan.Zero && m_Burning ? m_End - Core.Now : m_Duration;
set => m_Duration = value;
}
@ -120,7 +111,7 @@ namespace Server.Items
}
else if (m_Duration != TimeSpan.Zero)
{
m_Duration = m_End - DateTime.UtcNow;
m_Duration = m_End - Core.Now;
}
m_Timer?.Stop();
@ -145,7 +136,7 @@ namespace Server.Items
return;
}
m_End = DateTime.UtcNow + delay;
m_End = Core.Now + delay;
m_Timer = new InternalTimer(this, delay);
m_Timer.Start();
@ -214,7 +205,7 @@ namespace Server.Items
if (m_Burning && m_Duration != TimeSpan.Zero)
{
DoTimer(reader.ReadDeltaTime() - DateTime.UtcNow);
DoTimer(reader.ReadDeltaTime() - Core.Now);
}
break;