UE_Map Read_UE_Map(ValueInfo value_info) { string key_type = reader.ReadString(); string value_type = reader.ReadString(); long unknown_position = reader.BaseStream.Position; var unknown = reader.ReadBytes(5); if (unknown.Any(b => b != 0)) { throw new InvalidOperationException($"Offset 0x{unknown_position:X8}: the 5 bytes are expected to be all 0. I cannot do json to gvas conversion in this case."); } int count = reader.ReadInt32(); List <UE_Map_KeyValuePair> content = new List <UE_Map_KeyValuePair>(); ValueInfo value_info_temp = new ValueInfo(); value_info_temp.length = -1; value_info_temp.position = PositionToken.InsideMap; for (int i = 0; i < count; i++) { value_info_temp.type = key_type; UE_Value key = Read_UE_Value(value_info_temp); value_info_temp.type = value_type; UE_Value value = Read_UE_Value(value_info_temp); content.Add(new UE_Map_KeyValuePair(key, value)); } return(new UE_Map(value_info.type, key_type, value_type, count, 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); }