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:
parent
5de6edbeb8
commit
6c4308bce6
208 changed files with 660 additions and 793 deletions
|
|
@ -962,7 +962,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
if (m_DeleteTimer?.Running == true)
|
||||
{
|
||||
return m_DeleteTimer.Next - DateTime.UtcNow;
|
||||
return m_DeleteTimer.Next - Core.Now;
|
||||
}
|
||||
|
||||
return TimeSpan.Zero;
|
||||
|
|
@ -1422,7 +1422,7 @@ namespace Server.Mobiles
|
|||
|
||||
public void Unpacify()
|
||||
{
|
||||
BardEndTime = DateTime.UtcNow;
|
||||
BardEndTime = Core.Now;
|
||||
BardPacified = false;
|
||||
}
|
||||
|
||||
|
|
@ -1907,7 +1907,7 @@ namespace Server.Mobiles
|
|||
if (m_bSummoned)
|
||||
{
|
||||
SummonEnd = reader.ReadDeltaTime();
|
||||
new UnsummonTimer(m_ControlMaster, this, SummonEnd - DateTime.UtcNow).Start();
|
||||
new UnsummonTimer(m_ControlMaster, this, SummonEnd - Core.Now).Start();
|
||||
}
|
||||
|
||||
ControlSlots = reader.ReadInt();
|
||||
|
|
@ -2631,7 +2631,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
// idling...
|
||||
|
||||
if (DateTime.UtcNow >= m_IdleReleaseTime)
|
||||
if (Core.Now >= m_IdleReleaseTime)
|
||||
{
|
||||
m_IdleReleaseTime = DateTime.MinValue;
|
||||
return false; // idle is over
|
||||
|
|
@ -2645,7 +2645,7 @@ namespace Server.Mobiles
|
|||
return false; // not idling, but don't want to enter idle state
|
||||
}
|
||||
|
||||
m_IdleReleaseTime = DateTime.UtcNow + TimeSpan.FromSeconds(Utility.RandomMinMax(15, 25));
|
||||
m_IdleReleaseTime = Core.Now + TimeSpan.FromSeconds(Utility.RandomMinMax(15, 25));
|
||||
|
||||
if (Body.IsHuman)
|
||||
{
|
||||
|
|
@ -3271,7 +3271,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
if (OwnerAbandonTime == DateTime.MinValue)
|
||||
{
|
||||
OwnerAbandonTime = DateTime.UtcNow;
|
||||
OwnerAbandonTime = Core.Now;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -3551,7 +3551,7 @@ namespace Server.Mobiles
|
|||
}
|
||||
|
||||
new UnsummonTimer(caster, creature, duration).Start();
|
||||
creature.SummonEnd = DateTime.UtcNow + duration;
|
||||
creature.SummonEnd = Core.Now + duration;
|
||||
|
||||
creature.MoveToWorld(p, caster.Map);
|
||||
|
||||
|
|
@ -3730,7 +3730,7 @@ namespace Server.Mobiles
|
|||
BardMaster = master;
|
||||
BardTarget = target;
|
||||
Combatant = target;
|
||||
BardEndTime = DateTime.UtcNow + TimeSpan.FromSeconds(30.0);
|
||||
BardEndTime = Core.Now + TimeSpan.FromSeconds(30.0);
|
||||
|
||||
if (target is BaseCreature t)
|
||||
{
|
||||
|
|
@ -3744,7 +3744,7 @@ namespace Server.Mobiles
|
|||
t.BardMaster = master;
|
||||
t.BardTarget = this;
|
||||
t.Combatant = this;
|
||||
t.BardEndTime = DateTime.UtcNow + TimeSpan.FromSeconds(30.0);
|
||||
t.BardEndTime = Core.Now + TimeSpan.FromSeconds(30.0);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -3859,7 +3859,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
if (OwnerAbandonTime == DateTime.MinValue)
|
||||
{
|
||||
OwnerAbandonTime = DateTime.UtcNow;
|
||||
OwnerAbandonTime = Core.Now;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -3933,7 +3933,7 @@ namespace Server.Mobiles
|
|||
|
||||
private void CheckShout(PlayerMobile pm, Point3D oldLocation)
|
||||
{
|
||||
if (m_MLNextShout > DateTime.UtcNow || pm.Hidden || !pm.Alive)
|
||||
if (m_MLNextShout > Core.Now || pm.Hidden || !pm.Alive)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
@ -3960,7 +3960,7 @@ namespace Server.Mobiles
|
|||
}
|
||||
|
||||
Shout(pm);
|
||||
m_MLNextShout = DateTime.UtcNow + ShoutDelay;
|
||||
m_MLNextShout = Core.Now + ShoutDelay;
|
||||
}
|
||||
|
||||
public virtual void Shout(PlayerMobile pm)
|
||||
|
|
@ -4187,7 +4187,7 @@ namespace Server.Mobiles
|
|||
return false;
|
||||
}
|
||||
|
||||
if (DateTime.UtcNow >= EndFleeTime)
|
||||
if (Core.Now >= EndFleeTime)
|
||||
{
|
||||
StopFlee();
|
||||
return false;
|
||||
|
|
@ -4198,7 +4198,7 @@ namespace Server.Mobiles
|
|||
|
||||
public virtual void BeginFlee(TimeSpan maxDuration)
|
||||
{
|
||||
EndFleeTime = DateTime.UtcNow + maxDuration;
|
||||
EndFleeTime = Core.Now + maxDuration;
|
||||
}
|
||||
|
||||
public virtual bool IsPetFriend(Mobile m) => Friends?.Contains(m) == true;
|
||||
|
|
@ -4398,9 +4398,9 @@ namespace Server.Mobiles
|
|||
{
|
||||
if (BondingBegin == DateTime.MinValue)
|
||||
{
|
||||
BondingBegin = DateTime.UtcNow;
|
||||
BondingBegin = Core.Now;
|
||||
}
|
||||
else if (BondingBegin + BondingDelay <= DateTime.UtcNow)
|
||||
else if (BondingBegin + BondingDelay <= Core.Now)
|
||||
{
|
||||
IsBonded = true;
|
||||
BondingBegin = DateTime.MinValue;
|
||||
|
|
@ -5617,7 +5617,7 @@ namespace Server.Mobiles
|
|||
|
||||
public LoyaltyTimer() : base(InternalDelay, InternalDelay)
|
||||
{
|
||||
m_NextHourlyCheck = DateTime.UtcNow + TimeSpan.FromHours(1.0);
|
||||
m_NextHourlyCheck = Core.Now + TimeSpan.FromHours(1.0);
|
||||
Priority = TimerPriority.FiveSeconds;
|
||||
}
|
||||
|
||||
|
|
@ -5628,12 +5628,12 @@ namespace Server.Mobiles
|
|||
|
||||
protected override void OnTick()
|
||||
{
|
||||
if (DateTime.UtcNow < m_NextHourlyCheck)
|
||||
if (Core.Now < m_NextHourlyCheck)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_NextHourlyCheck = DateTime.UtcNow + TimeSpan.FromHours(1.0);
|
||||
m_NextHourlyCheck = Core.Now + TimeSpan.FromHours(1.0);
|
||||
|
||||
var toRelease = new List<BaseCreature>();
|
||||
|
||||
|
|
@ -5662,9 +5662,9 @@ namespace Server.Mobiles
|
|||
{
|
||||
if (c.OwnerAbandonTime == DateTime.MinValue)
|
||||
{
|
||||
c.OwnerAbandonTime = DateTime.UtcNow;
|
||||
c.OwnerAbandonTime = Core.Now;
|
||||
}
|
||||
else if (c.OwnerAbandonTime + c.BondingAbandonDelay <= DateTime.UtcNow)
|
||||
else if (c.OwnerAbandonTime + c.BondingAbandonDelay <= Core.Now)
|
||||
{
|
||||
toRemove.Add(c);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue