From: DrSmugleaf Date: Thu, 28 Sep 2023 22:48:29 +0000 (-0700) Subject: Catch replay start and end errors on round restarts (#20565) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=14cfe44ece633a6b7a73eee02dc76a8ee76f0ee2;p=space-station-14.git Catch replay start and end errors on round restarts (#20565) --- diff --git a/Content.Server/GameTicking/GameTicker.Replays.cs b/Content.Server/GameTicking/GameTicker.Replays.cs index 03cf748d09..78a8182ce6 100644 --- a/Content.Server/GameTicking/GameTicker.Replays.cs +++ b/Content.Server/GameTicking/GameTicker.Replays.cs @@ -23,38 +23,45 @@ public sealed partial class GameTicker /// private void ReplayStartRound() { - if (!_cfg.GetCVar(CCVars.ReplayAutoRecord)) - return; - - if (_replays.IsRecording) + try { - _sawmillReplays.Warning("Already an active replay recording before the start of the round, not starting automatic recording."); - return; - } + if (!_cfg.GetCVar(CCVars.ReplayAutoRecord)) + return; - _sawmillReplays.Debug($"Starting replay recording for round {RoundId}"); + if (_replays.IsRecording) + { + _sawmillReplays.Warning("Already an active replay recording before the start of the round, not starting automatic recording."); + return; + } - var finalPath = GetAutoReplayPath(); - var recordPath = finalPath; - var tempDir = _cfg.GetCVar(CCVars.ReplayAutoRecordTempDir); - ResPath? moveToPath = null; + _sawmillReplays.Debug($"Starting replay recording for round {RoundId}"); - if (!string.IsNullOrEmpty(tempDir)) - { - var baseReplayPath = new ResPath(_cfg.GetCVar(CVars.ReplayDirectory)).ToRootedPath(); - moveToPath = baseReplayPath / finalPath; + var finalPath = GetAutoReplayPath(); + var recordPath = finalPath; + var tempDir = _cfg.GetCVar(CCVars.ReplayAutoRecordTempDir); + ResPath? moveToPath = null; - var fileName = finalPath.Filename; - recordPath = new ResPath(tempDir) / fileName; + if (!string.IsNullOrEmpty(tempDir)) + { + var baseReplayPath = new ResPath(_cfg.GetCVar(CVars.ReplayDirectory)).ToRootedPath(); + moveToPath = baseReplayPath / finalPath; - _sawmillReplays.Debug($"Replay will record in temporary position: {recordPath}"); - } + var fileName = finalPath.Filename; + recordPath = new ResPath(tempDir) / fileName; + + _sawmillReplays.Debug($"Replay will record in temporary position: {recordPath}"); + } - var recordState = new ReplayRecordState(moveToPath); + var recordState = new ReplayRecordState(moveToPath); - if (!_replays.TryStartRecording(_resourceManager.UserData, recordPath.ToString(), state: recordState)) + if (!_replays.TryStartRecording(_resourceManager.UserData, recordPath.ToString(), state: recordState)) + { + _sawmillReplays.Error("Can't start automatic replay recording!"); + } + } + catch (Exception e) { - _sawmillReplays.Error("Can't start automatic replay recording!"); + Log.Error($"Error while starting an automatic replay recording:\n{e}"); } } @@ -63,9 +70,16 @@ public sealed partial class GameTicker /// private void ReplayEndRound() { - if (_replays.ActiveRecordingState is ReplayRecordState) + try + { + if (_replays.ActiveRecordingState is ReplayRecordState) + { + _replays.StopRecording(); + } + } + catch (Exception e) { - _replays.StopRecording(); + Log.Error($"Error while stopping replay recording:\n{e}"); } }