Example #1
0
        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();
        }
Example #2
0
        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);
            }
        }
Example #3
0
 /// <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);
 }
Example #4
0
        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);
            }
        }
Example #5
0
 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);
     }
 }
Example #6
0
    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();
    }