Skip to content

Commit

Permalink
Merge pull request #11 from Hopper262/pr-header-v3
Browse files Browse the repository at this point in the history
Support extra field in GVAS version 3 (possibly a checksum)
  • Loading branch information
SparkyTD authored Aug 14, 2022
2 parents 720333a + 779b546 commit a13d5e8
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions UnrealEngine.Gvas/SaveGameHeader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,27 @@ public class SaveGameHeader
public CustomVersionSerializationFormat CustomVersionFormat { get; set; }
public List<CustomVersion> CustomVersions { get; set; } = new();
public string? SaveGameClassName { get; set; }
public long Unknown1 { get; set; }

public static SaveGameHeader ReadFrom(BinaryReader reader)
{
var magic = reader.ReadChars(4);
if (!magic.SequenceEqual(FileTypeTag))
throw new SaveGameException("Invalid magic number in file header, expected: 'GVAS'.");

return new SaveGameHeader
var header = new SaveGameHeader
{
SaveGameFileVersion = reader.ReadInt32(),
PackageFileUE4Version = reader.ReadInt32(),
SavedEngineVersion = EngineVersion.ReadFrom(reader),
CustomVersionFormat = (CustomVersionSerializationFormat) reader.ReadInt32(),
CustomVersions = Enumerable.Range(0, reader.ReadInt32()).Select(_ => CustomVersion.ReadFrom(reader)).ToList(),
SaveGameClassName = reader.ReadFString()
SaveGameClassName = reader.ReadFString(),
Unknown1 = 0
};
if (header.SaveGameFileVersion >= 3)
header.Unknown1 = reader.ReadInt64();
return header;
}

public void WriteTo(BinaryWriter writer)
Expand All @@ -42,5 +47,7 @@ public void WriteTo(BinaryWriter writer)
foreach (var customVersion in CustomVersions)
customVersion.WriteTo(writer);
writer.WriteFString(SaveGameClassName);
if (SaveGameFileVersion >= 3)
writer.Write(Unknown1);
}
}

0 comments on commit a13d5e8

Please sign in to comment.