ReplayMod: Prevent file backup while saving replay (#1562)

This commit is contained in:
ReinforceZwei 2021-05-01 20:38:41 +08:00 committed by GitHub
parent ad14edad2e
commit 750684e010
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -31,6 +31,7 @@ namespace MinecraftClient.Protocol
private BinaryWriter recordStream; private BinaryWriter recordStream;
private DateTime recordStartTime; private DateTime recordStartTime;
private DateTime lastPacketTime; private DateTime lastPacketTime;
private bool prepareCleanUp = false;
private bool cleanedUp = false; private bool cleanedUp = false;
private static bool logOutput = true; private static bool logOutput = true;
@ -111,8 +112,7 @@ namespace MinecraftClient.Protocol
{ {
if (!cleanedUp) if (!cleanedUp)
{ {
MetaData.duration = Convert.ToInt32((lastPacketTime - recordStartTime).TotalMilliseconds); prepareCleanUp = true;
MetaData.SaveToFile();
CloseRecordStream(); CloseRecordStream();
CreateReplayFile(); CreateReplayFile();
cleanedUp = true; cleanedUp = true;
@ -136,6 +136,9 @@ namespace MinecraftClient.Protocol
{ {
WriteLog("Creating replay file."); WriteLog("Creating replay file.");
MetaData.duration = Convert.ToInt32((lastPacketTime - recordStartTime).TotalMilliseconds);
MetaData.SaveToFile();
using (Stream recordingFile = new FileStream(Path.Combine(temporaryCache, recordingTmpFileName), FileMode.Open)) using (Stream recordingFile = new FileStream(Path.Combine(temporaryCache, recordingTmpFileName), FileMode.Open))
{ {
using (Stream metaDataFile = new FileStream(Path.Combine(temporaryCache, MetaData.MetaDataFileName), FileMode.Open)) using (Stream metaDataFile = new FileStream(Path.Combine(temporaryCache, MetaData.MetaDataFileName), FileMode.Open))
@ -163,7 +166,7 @@ namespace MinecraftClient.Protocol
/// <param name="replayFileName"></param> /// <param name="replayFileName"></param>
public void CreateBackupReplay(string replayFileName) public void CreateBackupReplay(string replayFileName)
{ {
if (cleanedUp) if (cleanedUp || prepareCleanUp)
return; return;
WriteDebugLog("Creating backup replay file."); WriteDebugLog("Creating backup replay file.");