/// <summary> /// 反序列化本地版本资源列表(版本 2)回调函数。 /// </summary> /// <param name="binaryReader">指定流。</param> /// <returns>反序列化的本地版本资源列表(版本 2)。</returns> public static LocalVersionList LocalVersionListDeserializeCallback_V2(BinaryReader binaryReader) { byte[] encryptBytes = binaryReader.ReadBytes(CachedHashBytesLength); int resourceCount = binaryReader.Read7BitEncodedInt32(); LocalVersionList.Resource[] resources = resourceCount > 0 ? new LocalVersionList.Resource[resourceCount] : null; for (int i = 0; i < resourceCount; i++) { string name = binaryReader.ReadEncryptedString(encryptBytes); string variant = binaryReader.ReadEncryptedString(encryptBytes); string extension = binaryReader.ReadEncryptedString(encryptBytes) ?? DefaultExtension; byte loadType = binaryReader.ReadByte(); int length = binaryReader.Read7BitEncodedInt32(); int hashCode = binaryReader.ReadInt32(); resources[i] = new LocalVersionList.Resource(name, variant, extension, loadType, length, hashCode); } int fileSystemCount = binaryReader.Read7BitEncodedInt32(); LocalVersionList.FileSystem[] fileSystems = fileSystemCount > 0 ? new LocalVersionList.FileSystem[fileSystemCount] : null; for (int i = 0; i < fileSystemCount; i++) { string name = binaryReader.ReadEncryptedString(encryptBytes); int resourceIndexCount = binaryReader.Read7BitEncodedInt32(); int[] resourceIndexes = resourceIndexCount > 0 ? new int[resourceIndexCount] : null; for (int j = 0; j < resourceIndexCount; j++) { resourceIndexes[j] = binaryReader.Read7BitEncodedInt32(); } fileSystems[i] = new LocalVersionList.FileSystem(name, resourceIndexes); } return(new LocalVersionList(resources, fileSystems)); }
/// <summary> /// 反序列化本地版本资源列表(版本 0)回调函数。 /// </summary> /// <param name="binaryReader">指定流。</param> /// <returns>反序列化的本地版本资源列表(版本 0)。</returns> public static LocalVersionList DeserializeLocalVersionListCallback_V0(BinaryReader binaryReader) { byte[] encryptBytes = binaryReader.ReadBytes(CachedHashBytesLength); int resourceCount = binaryReader.ReadInt32(); LocalVersionList.Resource[] resources = resourceCount > 0 ? new LocalVersionList.Resource[resourceCount] : null; for (int i = 0; i < resourceCount; i++) { string name = binaryReader.ReadEncryptedString(encryptBytes); string variant = binaryReader.ReadEncryptedString(encryptBytes); byte loadType = binaryReader.ReadByte(); int length = binaryReader.ReadInt32(); int hashCode = binaryReader.ReadInt32(); resources[i] = new LocalVersionList.Resource(name, variant, null, loadType, length, hashCode); } return(new LocalVersionList(resources)); }
/// <summary> /// 反序列化本地版本资源列表(版本 1)回调函数。 /// </summary> /// <param name="stream">指定流。</param> /// <returns>反序列化的本地版本资源列表(版本 1)。</returns> public static LocalVersionList LocalVersionListDeserializeCallback_V1(Stream stream) { using (BinaryReader binaryReader = new BinaryReader(stream, Encoding.UTF8)) { byte[] encryptBytes = binaryReader.ReadBytes(CachedHashBytesLength); int resourceCount = binaryReader.Read7BitEncodedInt32(); LocalVersionList.Resource[] resources = resourceCount > 0 ? new LocalVersionList.Resource[resourceCount] : null; for (int i = 0; i < resourceCount; i++) { string name = binaryReader.ReadEncryptedString(encryptBytes); string variant = binaryReader.ReadEncryptedString(encryptBytes); string extension = binaryReader.ReadEncryptedString(encryptBytes) ?? DefaultExtension; byte loadType = binaryReader.ReadByte(); int length = binaryReader.Read7BitEncodedInt32(); int hashCode = binaryReader.ReadInt32(); resources[i] = new LocalVersionList.Resource(name, variant, extension, loadType, length, hashCode); } return(new LocalVersionList(resources, null)); } }