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

@ -113,7 +113,7 @@ namespace Server.Items
m_CorpseName = GetCorpseName(owner);
TimeOfDeath = DateTime.UtcNow;
TimeOfDeath = Core.Now;
AccessLevel = owner.AccessLevel;
Guild = owner.Guild as Guild;
@ -140,10 +140,10 @@ namespace Server.Items
{
var info = owner.Aggressors[i];
if (DateTime.UtcNow - info.LastCombatTime < lastTime)
if (Core.Now - info.LastCombatTime < lastTime)
{
Killer = info.Attacker;
lastTime = DateTime.UtcNow - info.LastCombatTime;
lastTime = Core.Now - info.LastCombatTime;
}
if (!isBaseCreature && !info.CriminalAggression)
@ -156,10 +156,10 @@ namespace Server.Items
{
var info = owner.Aggressed[i];
if (DateTime.UtcNow - info.LastCombatTime < lastTime)
if (Core.Now - info.LastCombatTime < lastTime)
{
Killer = info.Defender;
lastTime = DateTime.UtcNow - info.LastCombatTime;
lastTime = Core.Now - info.LastCombatTime;
}
if (!isBaseCreature)
@ -200,7 +200,7 @@ namespace Server.Items
}
[CommandProperty(AccessLevel.GameMaster)]
public virtual bool InstancedCorpse => Core.SE && DateTime.UtcNow < TimeOfDeath + InstancedCorpseTime;
public virtual bool InstancedCorpse => Core.SE && Core.Now < TimeOfDeath + InstancedCorpseTime;
public override bool IsDecoContainer => false;
@ -471,7 +471,7 @@ namespace Server.Items
{
m_DecayTimer?.Stop();
m_DecayTime = DateTime.UtcNow + delay;
m_DecayTime = Core.Now + delay;
m_DecayTimer = new InternalTimer(this, delay);
m_DecayTimer.Start();
@ -657,7 +657,7 @@ namespace Server.Items
if (reader.ReadBool())
{
BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow);
BeginDecay(reader.ReadDeltaTime() - Core.Now);
}
Looters = reader.ReadEntityList<Mobile>();
@ -711,7 +711,7 @@ namespace Server.Items
{
if (reader.ReadBool())
{
BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow);
BeginDecay(reader.ReadDeltaTime() - Core.Now);
}
goto case 6;
@ -757,7 +757,7 @@ namespace Server.Items
{
if (version < 10)
{
TimeOfDeath = DateTime.UtcNow;
TimeOfDeath = Core.Now;
}
if (version < 7)

View file

@ -27,7 +27,7 @@ namespace Server.Items
{
m_DecayTimer?.Stop();
m_DecayTime = DateTime.UtcNow + delay;
m_DecayTime = Core.Now + delay;
m_DecayTimer = new InternalTimer(this, delay);
m_DecayTimer.Start();
@ -85,7 +85,7 @@ namespace Server.Items
{
if (reader.ReadBool())
{
BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow);
BeginDecay(reader.ReadDeltaTime() - Core.Now);
}
break;