Catch replay start and end errors on round restarts (#20565)

This commit is contained in:
DrSmugleaf
2023-09-28 15:48:29 -07:00
committed by GitHub
parent bcad37f351
commit 14cfe44ece

View File

@@ -23,38 +23,45 @@ public sealed partial class GameTicker
/// </summary>
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;
if (_replays.IsRecording)
{
_sawmillReplays.Warning("Already an active replay recording before the start of the round, not starting automatic recording.");
return;
}
_sawmillReplays.Debug($"Starting replay recording for round {RoundId}");
var finalPath = GetAutoReplayPath();
var recordPath = finalPath;
var tempDir = _cfg.GetCVar(CCVars.ReplayAutoRecordTempDir);
ResPath? moveToPath = null;
if (!string.IsNullOrEmpty(tempDir))
{
var baseReplayPath = new ResPath(_cfg.GetCVar(CVars.ReplayDirectory)).ToRootedPath();
moveToPath = baseReplayPath / finalPath;
var fileName = finalPath.Filename;
recordPath = new ResPath(tempDir) / fileName;
_sawmillReplays.Debug($"Replay will record in temporary position: {recordPath}");
}
var recordState = new ReplayRecordState(moveToPath);
if (!_replays.TryStartRecording(_resourceManager.UserData, recordPath.ToString(), state: recordState))
{
_sawmillReplays.Error("Can't start automatic replay recording!");
}
}
_sawmillReplays.Debug($"Starting replay recording for round {RoundId}");
var finalPath = GetAutoReplayPath();
var recordPath = finalPath;
var tempDir = _cfg.GetCVar(CCVars.ReplayAutoRecordTempDir);
ResPath? moveToPath = null;
if (!string.IsNullOrEmpty(tempDir))
catch (Exception e)
{
var baseReplayPath = new ResPath(_cfg.GetCVar(CVars.ReplayDirectory)).ToRootedPath();
moveToPath = baseReplayPath / finalPath;
var fileName = finalPath.Filename;
recordPath = new ResPath(tempDir) / fileName;
_sawmillReplays.Debug($"Replay will record in temporary position: {recordPath}");
}
var recordState = new ReplayRecordState(moveToPath);
if (!_replays.TryStartRecording(_resourceManager.UserData, recordPath.ToString(), state: recordState))
{
_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
/// </summary>
private void ReplayEndRound()
{
if (_replays.ActiveRecordingState is ReplayRecordState)
try
{
_replays.StopRecording();
if (_replays.ActiveRecordingState is ReplayRecordState)
{
_replays.StopRecording();
}
}
catch (Exception e)
{
Log.Error($"Error while stopping replay recording:\n{e}");
}
}