private void OnLoadReadWriteVersionListSuccess(string fileUri, byte[] bytes, float duration, object userData) { MemoryStream memoryStream = null; try { memoryStream = new MemoryStream(bytes, false); LocalVersionList versionList = m_ResourceManager.m_ReadWriteVersionListSerializer.Deserialize(memoryStream); if (!versionList.IsValid) { throw new GameFrameworkException("Deserialize read write version list failure."); } LocalVersionList.Resource[] resources = versionList.GetResources(); LocalVersionList.FileSystem[] fileSystems = versionList.GetFileSystems(); Dictionary <ResourceName, string> resourceInFileSystemNames = new Dictionary <ResourceName, string>(); foreach (LocalVersionList.FileSystem fileSystem in fileSystems) { int[] resourceIndexes = fileSystem.GetResourceIndexes(); foreach (int resourceIndex in resourceIndexes) { LocalVersionList.Resource resource = resources[resourceIndex]; resourceInFileSystemNames.Add(new ResourceName(resource.Name, resource.Variant, resource.Extension), fileSystem.Name); } } long totalLength = 0L; foreach (LocalVersionList.Resource resource in resources) { ResourceName resourceName = new ResourceName(resource.Name, resource.Variant, resource.Extension); string fileSystemName = null; resourceInFileSystemNames.TryGetValue(resourceName, out fileSystemName); totalLength += resource.Length; m_VerifyInfos.Add(new VerifyInfo(resourceName, fileSystemName, (LoadType)resource.LoadType, resource.Length, resource.HashCode)); } m_LoadReadWriteVersionListComplete = true; if (ResourceVerifyStart != null) { ResourceVerifyStart(m_VerifyInfos.Count, totalLength); } } catch (Exception exception) { if (exception is GameFrameworkException) { throw; } throw new GameFrameworkException(Utility.Text.Format("Parse read-write version list exception '{0}'.", exception), exception); } finally { if (memoryStream != null) { memoryStream.Dispose(); memoryStream = null; } } }
private void OnLoadReadWriteVersionListSuccess(string fileUri, byte[] bytes, float duration, object userData) { if (m_ReadWriteVersionListReady) { throw new GameFrameworkException("Read write version list has been parsed."); } MemoryStream memoryStream = null; try { memoryStream = new MemoryStream(bytes, false); LocalVersionList versionList = m_ResourceManager.m_ReadWriteVersionListSerializer.Deserialize(memoryStream); if (!versionList.IsValid) { throw new GameFrameworkException("Deserialize read write version list failure."); } LocalVersionList.Resource[] resources = versionList.GetResources(); LocalVersionList.FileSystem[] fileSystems = versionList.GetFileSystems(); foreach (LocalVersionList.FileSystem fileSystem in fileSystems) { int[] resourceIndexes = fileSystem.GetResourceIndexes(); foreach (int resourceIndex in resourceIndexes) { LocalVersionList.Resource resource = resources[resourceIndex]; SetCachedFileSystemName(new ResourceName(resource.Name, resource.Variant, resource.Extension), fileSystem.Name); } } foreach (LocalVersionList.Resource resource in resources) { ResourceName resourceName = new ResourceName(resource.Name, resource.Variant, resource.Extension); SetReadWriteInfo(resourceName, (LoadType)resource.LoadType, resource.Length, resource.HashCode); } m_ReadWriteVersionListReady = true; RefreshCheckInfoStatus(); } catch (Exception exception) { if (exception is GameFrameworkException) { throw; } throw new GameFrameworkException(Utility.Text.Format("Parse read write version list exception '{0}'.", exception.ToString()), exception); } finally { if (memoryStream != null) { memoryStream.Dispose(); memoryStream = null; } } }