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

@ -75,7 +75,7 @@ namespace Server.Multis
public BaseBoat() : base(0x0)
{
m_DecayTime = DateTime.UtcNow + BoatDecayDelay;
m_DecayTime = Core.Now + BoatDecayDelay;
TillerMan = new TillerMan(this);
Hold = new Hold(this);
@ -168,29 +168,29 @@ namespace Server.Multis
{
get
{
var start = TimeOfDecay - BoatDecayDelay;
var start = Core.Now - TimeOfDecay - BoatDecayDelay;
if (DateTime.UtcNow - start < TimeSpan.FromHours(1.0))
if (start < TimeSpan.FromHours(1.0))
{
return 1043010; // This structure is like new.
}
if (DateTime.UtcNow - start < TimeSpan.FromDays(2.0))
if (start < TimeSpan.FromDays(2.0))
{
return 1043011; // This structure is slightly worn.
}
if (DateTime.UtcNow - start < TimeSpan.FromDays(3.0))
if (start < TimeSpan.FromDays(3.0))
{
return 1043012; // This structure is somewhat worn.
}
if (DateTime.UtcNow - start < TimeSpan.FromDays(4.0))
if (start < TimeSpan.FromDays(4.0))
{
return 1043013; // This structure is fairly worn.
}
if (DateTime.UtcNow - start < TimeSpan.FromDays(5.0))
if (start < TimeSpan.FromDays(5.0))
{
return 1043014; // This structure is greatly worn.
}
@ -527,7 +527,7 @@ namespace Server.Multis
public void Refresh()
{
m_DecayTime = DateTime.UtcNow + BoatDecayDelay;
m_DecayTime = Core.Now + BoatDecayDelay;
TillerMan?.InvalidateProperties();
}
@ -539,7 +539,7 @@ namespace Server.Multis
return true;
}
if (!IsMoving && DateTime.UtcNow >= m_DecayTime)
if (!IsMoving && Core.Now >= m_DecayTime)
{
new DecayTimer(this).Start();

View file

@ -66,7 +66,7 @@ namespace Server.Multis
if (setDecayTime)
{
m_DecayTime = DateTime.UtcNow + DecayDelay;
m_DecayTime = Core.Now + DecayDelay;
}
m_DecayTimer = Timer.DelayCall(DecayDelay, Delete);

View file

@ -43,9 +43,9 @@ namespace Server.Multis
{
AllHouses.Add(this);
LastRefreshed = DateTime.UtcNow;
LastRefreshed = Core.Now;
BuiltOn = DateTime.UtcNow;
BuiltOn = Core.Now;
LastTraded = DateTime.MinValue;
Doors = new List<BaseDoor>();
@ -203,14 +203,14 @@ namespace Server.Multis
ResetDynamicDecay();
}
LastRefreshed = DateTime.UtcNow;
LastRefreshed = Core.Now;
result = DecayLevel.Ageless;
}
else if (DynamicDecay.Enabled)
{
var stage = m_CurrentStage;
if (stage == DecayLevel.Ageless || DynamicDecay.Decays(stage) && NextDecayStage <= DateTime.UtcNow)
if (stage == DecayLevel.Ageless || DynamicDecay.Decays(stage) && NextDecayStage <= Core.Now)
{
SetDynamicDecay(++stage);
}
@ -531,7 +531,7 @@ namespace Server.Multis
public DecayLevel GetOldDecayLevel()
{
var timeAfterRefresh = DateTime.UtcNow - LastRefreshed;
var timeAfterRefresh = Core.Now - LastRefreshed;
var percent = (int)(timeAfterRefresh.Ticks * 1000 / DecayPeriod.Ticks);
if (percent >= 1000) // 100.0%
@ -576,7 +576,7 @@ namespace Server.Multis
var oldLevel = DecayLevel;
LastRefreshed = DateTime.UtcNow;
LastRefreshed = Core.Now;
if (DynamicDecay.Enabled)
{
@ -2416,7 +2416,7 @@ namespace Server.Multis
var info = m.Aggressed[i];
if (info.Defender.Player && info.Defender.Alive &&
DateTime.UtcNow - info.LastCombatTime < HouseRegion.CombatHeatDelay &&
Core.Now - info.LastCombatTime < HouseRegion.CombatHeatDelay &&
(!(m.Guild is Guild attackerGuild) || !(info.Defender.Guild is Guild defenderGuild) ||
defenderGuild != attackerGuild && !defenderGuild.IsEnemy(attackerGuild)))
{
@ -2935,7 +2935,7 @@ namespace Server.Multis
var child = children[j];
if (child.Decays && !child.IsLockedDown && !child.IsSecure &&
child.LastMoved + child.DecayTime <= DateTime.UtcNow)
child.LastMoved + child.DecayTime <= Core.Now)
{
Timer.DelayCall(child.Delete);
}
@ -3176,7 +3176,7 @@ namespace Server.Multis
if (version < 11)
{
LastRefreshed = DateTime.UtcNow + TimeSpan.FromHours(24 * Utility.RandomDouble());
LastRefreshed = Core.Now + TimeSpan.FromHours(24 * Utility.RandomDouble());
}
if (DynamicDecay.Enabled && !loadedDynamicDecay)
@ -3633,7 +3633,7 @@ namespace Server.Multis
if (DynamicDecay.Decays(level))
{
NextDecayStage = DateTime.UtcNow + DynamicDecay.GetRandomDuration(level);
NextDecayStage = Core.Now + DynamicDecay.GetRandomDuration(level);
}
else
{
@ -3764,7 +3764,7 @@ namespace Server.Multis
m_House.Friends.Clear();
m_House.CoOwners.Clear();
m_House.ChangeLocks(to);
m_House.LastTraded = DateTime.UtcNow;
m_House.LastTraded = Core.Now;
}
}

View file

@ -146,7 +146,7 @@ namespace Server.Multis
if (canClaim && !BaseHouse.HasAccountHouse(from))
{
Owner.Owner = from;
Owner.LastTraded = DateTime.UtcNow;
Owner.LastTraded = Core.Now;
}
}