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

@ -124,7 +124,7 @@ namespace Server.Spells.Necromancy
{
m_Caster = caster;
m_Target = target;
m_End = DateTime.UtcNow + delay;
m_End = Core.Now + delay;
Priority = TimerPriority.TwoFiftyMS;
}
@ -132,7 +132,7 @@ namespace Server.Spells.Necromancy
protected override void OnTick()
{
if (m_Caster.Deleted || m_Target.Deleted || !m_Caster.Alive || !m_Target.Alive ||
DateTime.UtcNow >= m_End)
Core.Now >= m_End)
{
DoExpire();
}

View file

@ -119,13 +119,13 @@ namespace Server.Spells.Necromancy
)
{
m_Target = target;
m_End = DateTime.UtcNow + delay;
m_End = Core.Now + delay;
Priority = TimerPriority.TwoFiftyMS;
}
protected override void OnTick()
{
if (m_Target.Deleted || !m_Target.Alive || DateTime.UtcNow >= m_End)
if (m_Target.Deleted || !m_Target.Alive || Core.Now >= m_End)
{
MindRotSpell.ClearMindRotScalar(m_Target);
Stop();

View file

@ -65,7 +65,7 @@ namespace Server.Spells.Necromancy
{
damage = Utility.RandomMinMax(3, 7);
timer.Delay += TimeSpan.FromSeconds(2.0);
buffTime = timer.Next - DateTime.UtcNow;
buffTime = timer.Next - Core.Now;
}
BuffInfo.AddBuff(m, new BuffInfo(BuffIcon.PainSpike, 1075667, buffTime, m, Convert.ToString((int)damage)));

View file

@ -153,7 +153,7 @@ namespace Server.Spells.Necromancy
m_MaxBaseDamage = spiritLevel + 1;
m_HitDelay = 5;
m_NextHit = DateTime.UtcNow + TimeSpan.FromSeconds(m_HitDelay);
m_NextHit = Core.Now + TimeSpan.FromSeconds(m_HitDelay);
m_Count = (int)spiritLevel;
@ -173,7 +173,7 @@ namespace Server.Spells.Necromancy
Stop();
}
if (!m_Target.Alive || DateTime.UtcNow < m_NextHit)
if (!m_Target.Alive || Core.Now < m_NextHit)
{
return;
}
@ -209,7 +209,7 @@ namespace Server.Spells.Necromancy
}
else
{
m_NextHit = DateTime.UtcNow + TimeSpan.FromSeconds(m_HitDelay);
m_NextHit = Core.Now + TimeSpan.FromSeconds(m_HitDelay);
var damage = m_MinBaseDamage + Utility.RandomDouble() * (m_MaxBaseDamage - m_MinBaseDamage);