return;
}
- _sawmill.Warning($"Exception caught while trying to start the round! Restarting round...");
+ _sawmill.Error($"Exception caught while trying to start the round! Restarting round...");
_runtimeLog.LogException(e, nameof(GameTicker));
_startingRound = false;
RestartRound();
-using System.Runtime.InteropServices;
+using System.Diagnostics.CodeAnalysis;
+using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
using Content.Server.Database;
return GetPlayTimeForTracker(id, PlayTimeTrackingShared.TrackerOverall);
}
+ public bool TryGetTrackerTimes(IPlayerSession id, [NotNullWhen(true)] out Dictionary<string, TimeSpan>? time)
+ {
+ time = null;
+
+ if (!_playTimeData.TryGetValue(id, out var data) || !data.Initialized)
+ {
+ return false;
+ }
+
+ time = data.TrackerTimes;
+ return true;
+ }
+
public Dictionary<string, TimeSpan> GetTrackerTimes(IPlayerSession id)
{
if (!_playTimeData.TryGetValue(id, out var data) || !data.Initialized)
return;
var player = _playerManager.GetSessionByUserId(userId);
- var playTimes = _tracking.GetTrackerTimes(player);
+ if (!_tracking.TryGetTrackerTimes(player, out var playTimes))
+ {
+ // Sorry mate but your playtimes haven't loaded.
+ Logger.ErrorS("playtime", $"Playtimes weren't ready yet for {player} on roundstart!");
+ playTimes ??= new Dictionary<string, TimeSpan>();
+ }
for (var i = 0; i < jobs.Count; i++)
{