private void CompareSaves() { var p1 = TB_OldSAV.Text; var p2 = TB_NewSAV.Text; var f1 = new FileInfo(p1); if (!SaveUtil.IsSizeValid((int)f1.Length)) { return; } var f2 = new FileInfo(p1); if (!SaveUtil.IsSizeValid((int)f2.Length)) { return; } var s1 = SaveUtil.GetVariantSAV(p1); if (!(s1 is SAV8SWSH w1)) { return; } var s2 = SaveUtil.GetVariantSAV(p2); if (!(s2 is SAV8SWSH w2)) { return; } var compare = new SCBlockCompare(w1, w2); richTextBox1.Lines = compare.Summary().ToArray(); }
public static async Task <SaveFile> TryGetSaveFile() { try { var path = await PickFile().ConfigureAwait(false); if (path == null) { return(null); } var fi = new FileInfo(path); var len = fi.Length; bool isPossibleSAV = SaveUtil.IsSizeValid((int)len); if (!isPossibleSAV) { var lenD = len - 122; bool isPossibleDSAV = SaveUtil.IsSizeValid((int)lenD); if (isPossibleDSAV) { var data1 = File.ReadAllBytes(path); Byte[] dataD = new Byte[lenD]; Array.ConstrainedCopy(data1, 0, dataD, 0, (int)lenD); var savD = SaveUtil.GetVariantSAV(data1); savD?.SetFileInfo(path); return(savD); } return(null); } var data = File.ReadAllBytes(path); var sav = SaveUtil.GetVariantSAV(data); sav?.SetFileInfo(path); return(sav); } catch (FileNotFoundException ex) { await UserDialogs.Instance.AlertAsync($"The file is being passed as a URI instead of a path. Please try moving your saves to a different folder.\n\nStack Trace:\n{ex}").ConfigureAwait(false); return(null); } catch (Exception ex) { await UserDialogs.Instance.AlertAsync($"Exception choosing file: {ex}").ConfigureAwait(false); return(null); } }
/// <summary> /// Checks if the length is too big to be a detectable file. /// </summary> /// <param name="length">File size</param> public static bool IsFileTooBig(long length) { if (length <= 0x10_0000) // 1 MB { return(false); } if (length > int.MaxValue) { return(true); } if (SaveUtil.IsSizeValid((int)length)) { return(false); } if (SAV3GCMemoryCard.IsMemoryCardSize(length)) { return(false); // pbr/GC have size > 1MB } return(true); }
public static async Task <SaveFile> TryGetSaveFile() { try { var file = await PickFile().ConfigureAwait(false); if (file == null) { return(null); } await using var stream = await file.OpenReadAsync().ConfigureAwait(false); var len = stream.Length; bool isPossibleSAV = SaveUtil.IsSizeValid((int)len); if (!isPossibleSAV) { return(null); } var data = new byte[len]; stream.Read(data); var sav = SaveUtil.GetVariantSAV(data); sav?.Metadata.SetExtraInfo(file.FullPath); return(sav); } catch (FileNotFoundException ex) { await UserDialogs.Instance.AlertAsync($"The file is being passed as a URI instead of a path. Please try moving your saves to a different folder.\n\nStack Trace:\n{ex}").ConfigureAwait(false); return(null); } #pragma warning disable CA1031 // Do not catch general exception types catch (Exception ex) #pragma warning restore CA1031 // Do not catch general exception types { await UserDialogs.Instance.AlertAsync($"Exception choosing file: {ex}").ConfigureAwait(false); return(null); } }
public static SaveFile TryGetSaveFile(string filePath) { try { var data = File.ReadAllBytes(filePath); var len = data.Length; bool isPossibleSAV = SaveUtil.IsSizeValid(len); if (!isPossibleSAV) { return(null); } var sav = SaveUtil.GetVariantSAV(data); sav?.Metadata.SetExtraInfo(filePath); return(sav); } catch { //Ignore errors as this is meant to be a background scanning function return(null); } }
private void CompareSaves() { var p1 = TB_OldSAV.Text; var p2 = TB_NewSAV.Text; var f1 = new FileInfo(p1); if (!SaveUtil.IsSizeValid((int)f1.Length)) { return; } var f2 = new FileInfo(p1); if (!SaveUtil.IsSizeValid((int)f2.Length)) { return; } var s1 = SaveUtil.GetVariantSAV(p1); if (s1 is not ISCBlockArray w1) { return; } var s2 = SaveUtil.GetVariantSAV(p2); if (s2 is not ISCBlockArray w2) { return; } // Get an external source of names if available. var extra = GetExtraKeyNames(w1); var compare = new SCBlockCompare(w1.Accessor, w2.Accessor, extra); richTextBox1.Lines = compare.Summary().ToArray(); }