meh, make less copy/pasta in Bk2/Tasproj Write() methods. This is a less overall code, potentially reads better
This commit is contained in:
parent
bac29fe187
commit
ed9a8ec877
|
@ -25,12 +25,6 @@ namespace BizHawk.Client.Common
|
||||||
backupName = backupName.Insert(Filename.LastIndexOf("."), $".{DateTime.Now:yyyy-MM-dd HH.mm.ss}");
|
backupName = backupName.Insert(Filename.LastIndexOf("."), $".{DateTime.Now:yyyy-MM-dd HH.mm.ss}");
|
||||||
backupName = Path.Combine(backupDir, Path.GetFileName(backupName));
|
backupName = Path.Combine(backupDir, Path.GetFileName(backupName));
|
||||||
|
|
||||||
var directoryInfo = new FileInfo(backupName).Directory;
|
|
||||||
if (directoryInfo != null)
|
|
||||||
{
|
|
||||||
Directory.CreateDirectory(directoryInfo.FullName);
|
|
||||||
}
|
|
||||||
|
|
||||||
Write(backupName, isBackup: true);
|
Write(backupName, isBackup: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,6 +156,20 @@ namespace BizHawk.Client.Common
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void Write(string fn, bool isBackup = false)
|
protected virtual void Write(string fn, bool isBackup = false)
|
||||||
|
{
|
||||||
|
SetCycleValues(); // We are pretending these only need to be set on save
|
||||||
|
CreateDirectoryIfNotExists(fn);
|
||||||
|
|
||||||
|
using var bs = new ZipStateSaver(fn, Global.Config.Savestates.MovieCompressionLevel);
|
||||||
|
AddLumps(bs);
|
||||||
|
|
||||||
|
if (!isBackup)
|
||||||
|
{
|
||||||
|
Changes = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetCycleValues()
|
||||||
{
|
{
|
||||||
if (Emulator is Emulation.Cores.Nintendo.SubNESHawk.SubNESHawk subNes)
|
if (Emulator is Emulation.Cores.Nintendo.SubNESHawk.SubNESHawk subNes)
|
||||||
{
|
{
|
||||||
|
@ -175,19 +183,28 @@ namespace BizHawk.Client.Common
|
||||||
{
|
{
|
||||||
Header[HeaderKeys.CycleCount] = subGb.CycleCount.ToString();
|
Header[HeaderKeys.CycleCount] = subGb.CycleCount.ToString();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CreateDirectoryIfNotExists(string fn)
|
||||||
|
{
|
||||||
var file = new FileInfo(fn);
|
var file = new FileInfo(fn);
|
||||||
if (!file.Directory.Exists)
|
if (file.Directory != null && !file.Directory.Exists)
|
||||||
{
|
{
|
||||||
Directory.CreateDirectory(file.Directory.ToString());
|
Directory.CreateDirectory(file.Directory.ToString());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
using var bs = new ZipStateSaver(fn, Global.Config.Savestates.MovieCompressionLevel);
|
protected virtual void AddLumps(ZipStateSaver bs, bool isBackup = false)
|
||||||
|
{
|
||||||
|
AddBk2Lumps(bs);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void AddBk2Lumps(ZipStateSaver bs)
|
||||||
|
{
|
||||||
bs.PutLump(BinaryStateLump.Movieheader, tw => tw.WriteLine(Header.ToString()));
|
bs.PutLump(BinaryStateLump.Movieheader, tw => tw.WriteLine(Header.ToString()));
|
||||||
bs.PutLump(BinaryStateLump.Comments, tw => tw.WriteLine(CommentsString()));
|
bs.PutLump(BinaryStateLump.Comments, tw => tw.WriteLine(CommentsString()));
|
||||||
bs.PutLump(BinaryStateLump.Subtitles, tw => tw.WriteLine(Subtitles.ToString()));
|
bs.PutLump(BinaryStateLump.Subtitles, tw => tw.WriteLine(Subtitles.ToString()));
|
||||||
bs.PutLump(BinaryStateLump.SyncSettings, tw => tw.WriteLine(_syncSettingsJson));
|
bs.PutLump(BinaryStateLump.SyncSettings, tw => tw.WriteLine(SyncSettingsJson));
|
||||||
|
|
||||||
bs.PutLump(BinaryStateLump.Input, WriteInputLog);
|
bs.PutLump(BinaryStateLump.Input, WriteInputLog);
|
||||||
|
|
||||||
if (StartsFromSavestate)
|
if (StartsFromSavestate)
|
||||||
|
@ -210,11 +227,6 @@ namespace BizHawk.Client.Common
|
||||||
{
|
{
|
||||||
bs.PutLump(BinaryStateLump.MovieSaveRam, (BinaryWriter bw) => bw.Write(SaveRam));
|
bs.PutLump(BinaryStateLump.MovieSaveRam, (BinaryWriter bw) => bw.Write(SaveRam));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isBackup)
|
|
||||||
{
|
|
||||||
Changes = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void ClearBeforeLoad()
|
protected void ClearBeforeLoad()
|
||||||
|
|
|
@ -10,44 +10,19 @@ namespace BizHawk.Client.Common
|
||||||
public Func<string> ClientSettingsForSave { get; set; }
|
public Func<string> ClientSettingsForSave { get; set; }
|
||||||
public Action<string> GetClientSettingsOnLoad { get; set; }
|
public Action<string> GetClientSettingsOnLoad { get; set; }
|
||||||
|
|
||||||
protected override void Write(string fn, bool isBackup = false)
|
protected override void AddLumps(ZipStateSaver bs, bool isBackup = false)
|
||||||
{
|
{
|
||||||
var file = new FileInfo(fn);
|
AddBk2Lumps(bs);
|
||||||
if (file.Directory != null && !file.Directory.Exists)
|
AddTasProjLumps(bs, isBackup);
|
||||||
{
|
}
|
||||||
Directory.CreateDirectory(file.Directory.ToString());
|
|
||||||
}
|
|
||||||
|
|
||||||
using var bs = new ZipStateSaver(fn, Global.Config.Savestates.MovieCompressionLevel);
|
private void AddTasProjLumps(ZipStateSaver bs, bool isBackup = false)
|
||||||
bs.PutLump(BinaryStateLump.Movieheader, tw => tw.WriteLine(Header.ToString()));
|
{
|
||||||
bs.PutLump(BinaryStateLump.Comments, tw => tw.WriteLine(CommentsString()));
|
|
||||||
bs.PutLump(BinaryStateLump.Subtitles, tw => tw.WriteLine(Subtitles.ToString()));
|
|
||||||
bs.PutLump(BinaryStateLump.SyncSettings, tw => tw.WriteLine(SyncSettingsJson));
|
|
||||||
bs.PutLump(BinaryStateLump.Input, WriteInputLog);
|
|
||||||
|
|
||||||
// TasProj extras
|
|
||||||
var settings = JsonConvert.SerializeObject(TasStateManager.Settings);
|
var settings = JsonConvert.SerializeObject(TasStateManager.Settings);
|
||||||
bs.PutLump(BinaryStateLump.StateHistorySettings, tw => tw.WriteLine(settings));
|
bs.PutLump(BinaryStateLump.StateHistorySettings, tw => tw.WriteLine(settings));
|
||||||
|
|
||||||
bs.PutLump(BinaryStateLump.LagLog, tw => LagLog.Save(tw));
|
bs.PutLump(BinaryStateLump.LagLog, tw => LagLog.Save(tw));
|
||||||
bs.PutLump(BinaryStateLump.Markers, tw => tw.WriteLine(Markers.ToString()));
|
bs.PutLump(BinaryStateLump.Markers, tw => tw.WriteLine(Markers.ToString()));
|
||||||
|
|
||||||
if (StartsFromSavestate)
|
|
||||||
{
|
|
||||||
if (TextSavestate != null)
|
|
||||||
{
|
|
||||||
bs.PutLump(BinaryStateLump.CorestateText, (TextWriter tw) => tw.Write(TextSavestate));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
bs.PutLump(BinaryStateLump.Corestate, (BinaryWriter bw) => bw.Write(BinarySavestate));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (StartsFromSaveRam)
|
|
||||||
{
|
|
||||||
bs.PutLump(BinaryStateLump.MovieSaveRam, (BinaryWriter bw) => bw.Write(SaveRam));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ClientSettingsForSave != null)
|
if (ClientSettingsForSave != null)
|
||||||
{
|
{
|
||||||
var clientSettingsJson = ClientSettingsForSave();
|
var clientSettingsJson = ClientSettingsForSave();
|
||||||
|
@ -70,11 +45,6 @@ namespace BizHawk.Client.Common
|
||||||
{
|
{
|
||||||
bs.PutLump(BinaryStateLump.StateHistory, bw => TasStateManager.Save(bw));
|
bs.PutLump(BinaryStateLump.StateHistory, bw => TasStateManager.Save(bw));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isBackup)
|
|
||||||
{
|
|
||||||
Changes = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool Load(bool preload)
|
public override bool Load(bool preload)
|
||||||
|
|
Loading…
Reference in New Issue