static GvasFormat.SaveGameHeader SaveGameHeader(JsonReader reader) { var _R = new GvasFormat.SaveGameHeader(); reader.AssertReadToken(JsonToken.StartObject); _R.FileTypeTag = reader.AssertReadPropertyNameValue <int>(JsonNaming.SaveGameHeader.FileTypeTag); _R.SaveGameFileVersion = reader.AssertReadPropertyNameValue <int>(JsonNaming.SaveGameHeader.SaveGameFileVersion); _R.PackageFileUE4Version = reader.AssertReadPropertyNameValue <int>(JsonNaming.SaveGameHeader.PackageFileUE4Version); reader.AssertReadPropertyName(JsonNaming.SaveGameHeader.SavedEngineVersion); { _R.SavedEngineVersion = new EngineVersion(); reader.AssertReadToken(JsonToken.StartObject); _R.SavedEngineVersion.Major = reader.AssertReadPropertyNameValue <UInt16>(JsonNaming.SaveGameHeader.EngineVersion.Major); _R.SavedEngineVersion.Minor = reader.AssertReadPropertyNameValue <UInt16>(JsonNaming.SaveGameHeader.EngineVersion.Minor); _R.SavedEngineVersion.Patch = reader.AssertReadPropertyNameValue <UInt16>(JsonNaming.SaveGameHeader.EngineVersion.Patch); _R.SavedEngineVersion.ChangeList = reader.AssertReadPropertyNameValue <UInt32>(JsonNaming.SaveGameHeader.EngineVersion.ChangeList); _R.SavedEngineVersion.Branch = reader.AssertReadPropertyNameValue <string>(JsonNaming.SaveGameHeader.EngineVersion.Branch); reader.AssertReadToken(JsonToken.EndObject); } _R.CustomVersionFormat = reader.AssertReadPropertyNameValue <int>(JsonNaming.SaveGameHeader.CustomVersionFormat); reader.AssertReadPropertyName(JsonNaming.SaveGameHeader.CustomVersions); { reader.AssertReadToken(JsonToken.StartObject); reader.AssertReadPropertyNameValue <int>(JsonNaming.SaveGameHeader.CustomVersionContainer.Count); reader.AssertReadPropertyName(JsonNaming.SaveGameHeader.CustomVersionContainer.Versions); var version_list = new List <CustomVersion>(); reader.AssertReadToken(JsonToken.StartArray); while (true) { var token = reader.AssertRead(); if (token == JsonToken.StartObject) { string key_string = reader.AssertReadPropertyNameValue <string>(JsonNaming.SaveGameHeader.CustomVersion.Key); Guid key = Guid.Parse(key_string); int version = reader.AssertReadPropertyNameValue <int>(JsonNaming.SaveGameHeader.CustomVersion.Version); reader.AssertReadToken(JsonToken.EndObject); var _ver = new CustomVersion(); _ver.Key = key; _ver.Version = version; version_list.Add(_ver); } else if (token == JsonToken.EndArray) { break; } else { throw new FormatException(); } } reader.AssertReadToken(JsonToken.EndObject); _R.CustomVersions = new CustomVersionContainer(); _R.CustomVersions.Count = version_list.Count; _R.CustomVersions.Versions = version_list.ToArray(); } _R.SaveGameClassName = reader.AssertReadPropertyNameValue <string>(JsonNaming.SaveGameHeader.SaveGameClassName); reader.AssertReadToken(JsonToken.EndObject); return(_R); }
public static GvasFormat.Gvas Gvas(JsonReader reader) { reader.AssertReadToken(JsonToken.StartObject); reader.AssertReadPropertyName(JsonNaming.Gvas.Header); GvasFormat.SaveGameHeader header = Read.SaveGameHeader(reader); reader.AssertReadPropertyName(JsonNaming.Gvas.Content); List <UE_Property> content = Read.Object_as_PropertyList(reader); reader.AssertReadToken(JsonToken.EndObject); return(new Gvas() { Header = header, PropertyList = content }); }
internal static GvasFormat.SaveGameHeader Read(UE_BinaryReader reader) { var result = new GvasFormat.SaveGameHeader(); result.FileTypeTag = GvasFormat.SaveGameHeader.UE4_SAVEGAME_FILE_TYPE_TAG; { result.SaveGameFileVersion = reader.ReadInt32(); result.PackageFileUE4Version = reader.ReadInt32(); } // var engine_version = new EngineVersion(); { engine_version.Major = reader.ReadUInt16(); engine_version.Minor = reader.ReadUInt16(); engine_version.Patch = reader.ReadUInt16(); engine_version.ChangeList = reader.ReadUInt32(); engine_version.Branch = reader.ReadString(); } result.SavedEngineVersion = engine_version; // result.CustomVersionFormat = reader.ReadInt32(); // var version_container = new CustomVersionContainer(); { version_container.Count = reader.ReadInt32(); version_container.Versions = new CustomVersion[version_container.Count]; for (var i = 0; i < version_container.Count; i++) { var version = new CustomVersion(); { version.Key = new Guid(reader.ReadBytes(16)); version.Version = reader.ReadInt32(); } version_container.Versions[i] = version; } } result.CustomVersions = version_container; // result.SaveGameClassName = reader.ReadString(); return(result); }
internal static void Write(UE_BinaryWriter writer, GvasFormat.SaveGameHeader header) { writer.Write(header.FileTypeTag); writer.Write(header.SaveGameFileVersion); writer.Write(header.PackageFileUE4Version); // writer.Write(header.SavedEngineVersion.Major); writer.Write(header.SavedEngineVersion.Minor); writer.Write(header.SavedEngineVersion.Patch); writer.Write(header.SavedEngineVersion.ChangeList); writer.Write(header.SavedEngineVersion.Branch); // writer.Write(header.CustomVersionFormat); writer.Write(header.CustomVersions.Count); for (int i = 0; i < header.CustomVersions.Versions.Length; i++) { var v = header.CustomVersions.Versions[i]; var bin = v.Key.ToByteArray(); writer.Write(bin, 0, bin.Length); writer.Write(v.Version); } // writer.Write(header.SaveGameClassName); }