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
|
|
@ -26,7 +26,7 @@ namespace Server.Items
|
|||
Movable = false;
|
||||
m_MinDamage = minDamage;
|
||||
m_MaxDamage = maxDamage;
|
||||
m_Created = DateTime.UtcNow;
|
||||
m_Created = Core.Now;
|
||||
m_Duration = duration;
|
||||
m_Timer = Timer.DelayCall(TimeSpan.Zero, TimeSpan.FromSeconds(1), OnTick);
|
||||
}
|
||||
|
|
@ -44,7 +44,7 @@ namespace Server.Items
|
|||
|
||||
private void OnTick()
|
||||
{
|
||||
var now = DateTime.UtcNow;
|
||||
var now = Core.Now;
|
||||
var age = now - m_Created;
|
||||
|
||||
if (age > m_Duration)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ namespace Server.Items
|
|||
{
|
||||
Movable = false;
|
||||
Light = LightType.Circle225;
|
||||
NextSpawn = DateTime.UtcNow;
|
||||
NextSpawn = Core.Now;
|
||||
NextSpawnDelay = TimeSpan.FromMinutes(15.0);
|
||||
SpawnRange = 5;
|
||||
}
|
||||
|
|
@ -87,7 +87,7 @@ namespace Server.Items
|
|||
NextSpawnDelay = reader.ReadTimeSpan();
|
||||
}
|
||||
|
||||
NextSpawn = DateTime.UtcNow;
|
||||
NextSpawn = Core.Now;
|
||||
}
|
||||
|
||||
public virtual void HeedWarning()
|
||||
|
|
@ -101,7 +101,7 @@ namespace Server.Items
|
|||
|
||||
public override void OnMovement(Mobile m, Point3D oldLocation)
|
||||
{
|
||||
if (NextSpawn < DateTime.UtcNow) // means we haven't spawned anything if the next spawn is below
|
||||
if (NextSpawn < Core.Now) // means we haven't spawned anything if the next spawn is below
|
||||
{
|
||||
if (Utility.InRange(m.Location, Location, 1) && !Utility.InRange(oldLocation, Location, 1) && m.Player &&
|
||||
!(m.AccessLevel > AccessLevel.Player || m.Hidden))
|
||||
|
|
@ -171,7 +171,7 @@ namespace Server.Items
|
|||
{
|
||||
try
|
||||
{
|
||||
if (NextSpawn < DateTime.UtcNow)
|
||||
if (NextSpawn < Core.Now)
|
||||
{
|
||||
var map = Map;
|
||||
var bc = Creatures.RandomElement().CreateInstance<BaseCreature>();
|
||||
|
|
@ -182,7 +182,7 @@ namespace Server.Items
|
|||
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(1), SummonCreatureToWorld, bc, spawnLoc, map);
|
||||
|
||||
NextSpawn = DateTime.UtcNow + NextSpawnDelay;
|
||||
NextSpawn = Core.Now + NextSpawnDelay;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -225,7 +225,7 @@ namespace Server.Items
|
|||
{
|
||||
Movable = false;
|
||||
m_LitBy = litBy;
|
||||
m_Expire = DateTime.UtcNow + TimeSpan.FromSeconds(10);
|
||||
m_Expire = Core.Now + TimeSpan.FromSeconds(10);
|
||||
m_Burning = toDamage;
|
||||
m_Timer = Timer.DelayCall(TimeSpan.FromSeconds(1.0), TimeSpan.FromSeconds(1.0), OnFirebombFieldTimerTick);
|
||||
}
|
||||
|
|
@ -295,7 +295,7 @@ namespace Server.Items
|
|||
}
|
||||
}
|
||||
|
||||
if (DateTime.UtcNow >= m_Expire)
|
||||
if (Core.Now >= m_Expire)
|
||||
{
|
||||
m_Timer.Stop();
|
||||
Delete();
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ namespace Server.Items
|
|||
{
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that
|
||||
}
|
||||
else if (Visible && (ItemID == 4656 || ItemID == 4702) && DateTime.UtcNow >= m_NextUse)
|
||||
else if (Visible && (ItemID == 4656 || ItemID == 4702) && Core.Now >= m_NextUse)
|
||||
{
|
||||
var p = GetWorldLocation();
|
||||
|
||||
|
|
@ -42,7 +42,7 @@ namespace Server.Items
|
|||
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(5.00), BackUp);
|
||||
|
||||
m_NextUse = DateTime.UtcNow + TimeSpan.FromSeconds(10.0);
|
||||
m_NextUse = Core.Now + TimeSpan.FromSeconds(10.0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ namespace Server.Items
|
|||
|
||||
if (text.Length > 0)
|
||||
{
|
||||
var message = new PlayerBBMessage(DateTime.UtcNow, from, text);
|
||||
var message = new PlayerBBMessage(Core.Now, from, text);
|
||||
|
||||
if (m_Greeting)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ namespace Server.Items
|
|||
|
||||
m_MinDamage = minDamage;
|
||||
m_MaxDamage = maxDamage;
|
||||
m_Created = DateTime.UtcNow;
|
||||
m_Created = Core.Now;
|
||||
m_Duration = duration;
|
||||
|
||||
m_Timer = Timer.DelayCall(TimeSpan.Zero, TimeSpan.FromSeconds(1), OnTick);
|
||||
|
|
@ -46,7 +46,7 @@ namespace Server.Items
|
|||
|
||||
private void OnTick()
|
||||
{
|
||||
var now = DateTime.UtcNow;
|
||||
var now = Core.Now;
|
||||
var age = now - m_Created;
|
||||
|
||||
if (age > m_Duration)
|
||||
|
|
|
|||
|
|
@ -197,7 +197,7 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
if (m_User.Deleted || m_User.Map != Map || !m_User.InRange(this, 3)
|
||||
|| m_User.NetState == null || DateTime.UtcNow - m_LastUse >= m_UseTimeout)
|
||||
|| m_User.NetState == null || Core.Now - m_LastUse >= m_UseTimeout)
|
||||
{
|
||||
m_User.CloseGump<GameGump>();
|
||||
}
|
||||
|
|
@ -209,7 +209,7 @@ namespace Server.Items
|
|||
}
|
||||
|
||||
m_User = from;
|
||||
m_LastUse = DateTime.UtcNow;
|
||||
m_LastUse = Core.Now;
|
||||
|
||||
from.SendGump(new GameGump(this, from, 0, false));
|
||||
}
|
||||
|
|
@ -473,7 +473,7 @@ namespace Server.Items
|
|||
if (40.0 + Utility.RandomDouble() * 80.0 < lockpicking)
|
||||
{
|
||||
m_From.SendGump(new GameGump(m_Panel, m_From, m_Step, true));
|
||||
m_Panel.m_LastUse = DateTime.UtcNow;
|
||||
m_Panel.m_LastUse = Core.Now;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -520,7 +520,7 @@ namespace Server.Items
|
|||
{
|
||||
m_From.PlaySound(0x1F4);
|
||||
m_From.SendGump(new GameGump(m_Panel, m_From, m_Step + 1, false));
|
||||
m_Panel.m_LastUse = DateTime.UtcNow;
|
||||
m_Panel.m_LastUse = Core.Now;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -755,7 +755,7 @@ namespace Server.Items
|
|||
|
||||
if (ShowTimeRemaining)
|
||||
{
|
||||
m.SendMessage("Time remaining: {0}", FormatTime(info.Timer.Next - DateTime.UtcNow));
|
||||
m.SendMessage("Time remaining: {0}", FormatTime(info.Timer.Next - Core.Now));
|
||||
}
|
||||
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(5), EndLock, m);
|
||||
|
|
@ -932,7 +932,7 @@ namespace Server.Items
|
|||
var m = reader.ReadEntity<Mobile>();
|
||||
var end = reader.ReadDateTime();
|
||||
|
||||
StartTimer(m, end - DateTime.UtcNow);
|
||||
StartTimer(m, end - Core.Now);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,12 +100,12 @@ namespace Server.Items
|
|||
|
||||
public virtual void Broadcast(Mobile triggerer)
|
||||
{
|
||||
if (m_Broadcasting || DateTime.UtcNow < m_LastBroadcast + ResetDelay)
|
||||
if (m_Broadcasting || Core.Now < m_LastBroadcast + ResetDelay)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_LastBroadcast = DateTime.UtcNow;
|
||||
m_LastBroadcast = Core.Now;
|
||||
|
||||
m_Broadcasting = true;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue