Exemplo n.º 1
0
        /// <summary>
        /// 获取下载列表
        /// </summary>
        private List <BundleInfo> GetDownloadList()
        {
            List <PatchBundle> downloadList = new List <PatchBundle>(1000);

            foreach (var patchBundle in _remotePatchManifest.BundleList)
            {
                // 忽略缓存文件
                if (DownloadSystem.ContainsVerifyFile(patchBundle.Hash))
                {
                    continue;
                }

                // 忽略APP资源
                // 注意:如果是APP资源并且哈希值相同,则不需要下载
                if (_impl.AppPatchManifest.Bundles.TryGetValue(patchBundle.BundleName, out PatchBundle appPatchBundle))
                {
                    if (appPatchBundle.IsBuildin && appPatchBundle.Hash == patchBundle.Hash)
                    {
                        continue;
                    }
                }

                // 注意:通过比对文件大小做快速的文件校验!
                // 注意:在初始化的时候会去做最终校验!
                string filePath = SandboxHelper.MakeCacheFilePath(patchBundle.Hash);
                if (File.Exists(filePath))
                {
                    long fileSize = FileUtility.GetFileSize(filePath);
                    if (fileSize == patchBundle.SizeBytes)
                    {
                        continue;
                    }
                }

                downloadList.Add(patchBundle);
            }

            return(_impl.ConvertToDownloadList(downloadList));
        }