Esempio n. 1
0
        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 UE_Property Read()
        {
            if (reader.PeekChar() < 0)
            {
                throw new EndOfStreamException();
            }
            var name = reader.ReadString();

            if (name == null)
            {
                return(null);
            }
            else if (name == UE_None.Identifier)
            {
                return(UE_None.Get());
            }
            else
            {
                var value_info = new ValueInfo();
                value_info.type     = reader.ReadString();
                value_info.length   = reader.ReadInt64();
                value_info.position = PositionToken.Normal;
                var value = Read_UE_Value(value_info);
                return(new UE_Property()
                {
                    Name = name, Value = value
                });
            }
        }