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
|
|
@ -155,7 +155,7 @@ namespace Server.Items
|
|||
|
||||
var next = reader.ReadDateTime();
|
||||
|
||||
var now = DateTime.UtcNow;
|
||||
var now = Core.Now;
|
||||
|
||||
if (next < now)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ namespace Server.Items
|
|||
m_SpawnTimer = new SpawnTimer(this, delay);
|
||||
m_SpawnTimer.Start();
|
||||
|
||||
m_NextSpawnTime = DateTime.UtcNow + delay;
|
||||
m_NextSpawnTime = Core.Now + delay;
|
||||
}
|
||||
|
||||
private void StopSpawnTimer()
|
||||
|
|
@ -134,7 +134,7 @@ namespace Server.Items
|
|||
|
||||
if (m_Petals < 10)
|
||||
{
|
||||
StartSpawnTimer(m_NextSpawnTime - DateTime.UtcNow);
|
||||
StartSpawnTimer(m_NextSpawnTime - Core.Now);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ namespace Server.Items
|
|||
|
||||
var daysLeft = (int)Math.Ceiling(
|
||||
(deed.Stone.Started + deed.Stone.Duration +
|
||||
HouseRaffleStone.ExpirationTime - DateTime.UtcNow).TotalDays
|
||||
HouseRaffleStone.ExpirationTime - Core.Now).TotalDays
|
||||
);
|
||||
|
||||
return
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ namespace Server.Items
|
|||
|
||||
Address = From.NetState?.Address ?? IPAddress.None;
|
||||
|
||||
Date = DateTime.UtcNow;
|
||||
Date = Core.Now;
|
||||
}
|
||||
|
||||
public RaffleEntry(IGenericReader reader, int version)
|
||||
|
|
@ -132,7 +132,7 @@ namespace Server.Items
|
|||
Entries.Clear();
|
||||
m_Winner = null;
|
||||
Deed = null;
|
||||
m_Started = DateTime.UtcNow;
|
||||
m_Started = Core.Now;
|
||||
}
|
||||
|
||||
m_State = value;
|
||||
|
|
@ -213,7 +213,7 @@ namespace Server.Items
|
|||
return false;
|
||||
}
|
||||
|
||||
return m_Started + m_Duration + ExpirationTime <= DateTime.UtcNow;
|
||||
return m_Started + m_Duration + ExpirationTime <= Core.Now;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -537,7 +537,7 @@ namespace Server.Items
|
|||
|
||||
public void CheckEnd()
|
||||
{
|
||||
if (m_State != HouseRaffleState.Active || m_Started + m_Duration > DateTime.UtcNow)
|
||||
if (m_State != HouseRaffleState.Active || m_Started + m_Duration > Core.Now)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -238,7 +238,7 @@ namespace Server.Items
|
|||
"You cannot summon your pet to this location."
|
||||
);
|
||||
}
|
||||
else if (Core.ML && from is PlayerMobile mobile && DateTime.UtcNow < mobile.LastPetBallTime.AddSeconds(15.0))
|
||||
else if (Core.ML && from is PlayerMobile mobile && Core.Now < mobile.LastPetBallTime.AddSeconds(15.0))
|
||||
{
|
||||
MessageHelper.SendLocalizedMessageTo(
|
||||
this,
|
||||
|
|
@ -304,7 +304,7 @@ namespace Server.Items
|
|||
|
||||
if (from is PlayerMobile playerMobile)
|
||||
{
|
||||
playerMobile.LastPetBallTime = DateTime.UtcNow;
|
||||
playerMobile.LastPetBallTime = Core.Now;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ namespace Server.Items
|
|||
{
|
||||
var info = m.Aggressed[i];
|
||||
|
||||
if (DateTime.UtcNow - info.LastCombatTime < time)
|
||||
if (Core.Now - info.LastCombatTime < time)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
@ -231,7 +231,7 @@ namespace Server.Items
|
|||
return false;
|
||||
}
|
||||
|
||||
if ((from as PlayerMobile)?.AcceleratedStart > DateTime.UtcNow)
|
||||
if ((from as PlayerMobile)?.AcceleratedStart > Core.Now)
|
||||
{
|
||||
// You may not use a soulstone while your character is under the effects of a Scroll of Alacrity.
|
||||
from.SendLocalizedMessage(1078115);
|
||||
|
|
@ -743,7 +743,7 @@ namespace Server.Items
|
|||
return;
|
||||
}
|
||||
|
||||
if ((from as PlayerMobile)?.AcceleratedStart > DateTime.UtcNow)
|
||||
if ((from as PlayerMobile)?.AcceleratedStart > Core.Now)
|
||||
{
|
||||
// <CENTER>Unable to Absorb Selected Skill from Soulstone</CENTER>
|
||||
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ namespace Server.Items
|
|||
}
|
||||
}
|
||||
|
||||
if (pm.AcceleratedStart > DateTime.UtcNow)
|
||||
if (pm.AcceleratedStart > Core.Now)
|
||||
{
|
||||
from.SendLocalizedMessage(1077951); // You are already under the effect of an accelerated skillgain scroll.
|
||||
return false;
|
||||
|
|
@ -96,7 +96,7 @@ namespace Server.Items
|
|||
Effects.PlaySound(from.Location, from.Map, 0x1E9);
|
||||
Effects.SendTargetParticles(from, 0x373A, 35, 45, 0x00, 0x00, 9502, (EffectLayer)255, 0x100);
|
||||
|
||||
pm.AcceleratedStart = DateTime.UtcNow + TimeSpan.FromMinutes(15);
|
||||
pm.AcceleratedStart = Core.Now + TimeSpan.FromMinutes(15);
|
||||
Timer.DelayCall(TimeSpan.FromMinutes(15), Expire_Callback, from);
|
||||
|
||||
pm.AcceleratedSkill = Skill;
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ namespace Server.Items
|
|||
}
|
||||
}
|
||||
|
||||
if (pm.AcceleratedStart > DateTime.UtcNow)
|
||||
if (pm.AcceleratedStart > Core.Now)
|
||||
{
|
||||
from.SendLocalizedMessage(1077951); // You are already under the effect of an accelerated skillgain scroll.
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -60,9 +60,9 @@ namespace Server.Items
|
|||
{
|
||||
m.SendLocalizedMessage(1060197); // You are not dead, and thus cannot be resurrected!
|
||||
}
|
||||
else if (m.AnkhNextUse > DateTime.UtcNow)
|
||||
else if (m.AnkhNextUse > Core.Now)
|
||||
{
|
||||
var delay = m.AnkhNextUse - DateTime.UtcNow;
|
||||
var delay = m.AnkhNextUse - Core.Now;
|
||||
|
||||
if (delay.TotalMinutes > 0)
|
||||
{
|
||||
|
|
@ -167,7 +167,7 @@ namespace Server.Items
|
|||
|
||||
if (from is PlayerMobile mobile)
|
||||
{
|
||||
mobile.AnkhNextUse = DateTime.UtcNow + TimeSpan.FromHours(1);
|
||||
mobile.AnkhNextUse = Core.Now + TimeSpan.FromHours(1);
|
||||
}
|
||||
|
||||
base.OnResponse(state, info);
|
||||
|
|
|
|||
|
|
@ -255,7 +255,7 @@ namespace Server.Items
|
|||
}
|
||||
else
|
||||
{
|
||||
writer.Write(DateTime.UtcNow + TimeSpan.FromDays(1));
|
||||
writer.Write(Core.Now + TimeSpan.FromDays(1));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -277,12 +277,12 @@ namespace Server.Items
|
|||
|
||||
var next = reader.ReadDateTime();
|
||||
|
||||
if (next < DateTime.UtcNow)
|
||||
if (next < Core.Now)
|
||||
{
|
||||
next = DateTime.UtcNow;
|
||||
next = Core.Now;
|
||||
}
|
||||
|
||||
m_Timer = Timer.DelayCall(next - DateTime.UtcNow, TimeSpan.FromDays(1), GiveResources);
|
||||
m_Timer = Timer.DelayCall(next - Core.Now, TimeSpan.FromDays(1), GiveResources);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ namespace Server.Items
|
|||
}
|
||||
else
|
||||
{
|
||||
writer.Write(DateTime.UtcNow + TimeSpan.FromDays(1));
|
||||
writer.Write(Core.Now + TimeSpan.FromDays(1));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -164,12 +164,12 @@ namespace Server.Items
|
|||
|
||||
var next = reader.ReadDateTime();
|
||||
|
||||
if (next < DateTime.UtcNow)
|
||||
if (next < Core.Now)
|
||||
{
|
||||
next = DateTime.UtcNow;
|
||||
next = Core.Now;
|
||||
}
|
||||
|
||||
m_Timer = Timer.DelayCall(next - DateTime.UtcNow, TimeSpan.FromDays(1), GiveLogs);
|
||||
m_Timer = Timer.DelayCall(next - Core.Now, TimeSpan.FromDays(1), GiveLogs);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue