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

@ -129,7 +129,7 @@ namespace Server.Items
var mins = Utility.RandomMinMax(MinRespawnMinutes, MaxRespawnMinutes);
var delay = TimeSpan.FromMinutes(mins);
m_NextRespawnTime = DateTime.UtcNow + delay;
m_NextRespawnTime = Core.Now + delay;
m_RespawnTimer = Timer.DelayCall(delay, Respawn);
}
}
@ -279,7 +279,7 @@ namespace Server.Items
{
m_NextRespawnTime = reader.ReadDeltaTime();
var delay = m_NextRespawnTime - DateTime.UtcNow;
var delay = m_NextRespawnTime - Core.Now;
m_RespawnTimer = Timer.DelayCall(delay > TimeSpan.Zero ? delay : TimeSpan.Zero, Respawn);
}
else

View file

@ -212,7 +212,7 @@ namespace Server.Items
if (!Locked && m_AutoLock)
{
m_RelockTimer = new InternalTimer(this, reader.ReadDeltaTime() - DateTime.UtcNow);
m_RelockTimer = new InternalTimer(this, reader.ReadDeltaTime() - Core.Now);
}
TargetMap = reader.ReadMap();
@ -229,7 +229,7 @@ namespace Server.Items
public InternalTimer(MarkContainer container, TimeSpan delay) : base(delay)
{
Container = container;
RelockTime = DateTime.UtcNow + delay;
RelockTime = Core.Now + delay;
Start();
}

View file

@ -23,7 +23,7 @@ namespace Server.Items
{
Owner = owner;
Level = level;
DeleteTime = DateTime.UtcNow + TimeSpan.FromHours(3.0);
DeleteTime = Core.Now + TimeSpan.FromHours(3.0);
Temporary = temporary;
Guardians = new List<Mobile>();
@ -585,7 +585,7 @@ namespace Server.Items
{
private readonly Item m_Item;
public DeleteTimer(Item item, DateTime time) : base(time - DateTime.UtcNow)
public DeleteTimer(Item item, DateTime time) : base(time - Core.Now)
{
m_Item = item;
Priority = TimerPriority.OneMinute;