public override void WriteUpToDate() { IServerVersionFileManifest versionFileManifest = FileManifestManager.Get <IServerVersionFileManifest>(); List <string> allABVersion = versionFileManifest.GetABVersion(); if (allABVersion.Count <= 0) { return; } IServerAssetBundleFileManifest serverFenbao = FileManifestManager.Get <IServerAssetBundleFileManifest>(); Dictionary <string, List <AssetDataInfo> > assetDatas = serverFenbao.GetAllAssetBundle(); string lastVersion = allABVersion[allABVersion.Count - 1]; if (assetDatas.ContainsKey(lastVersion)) { Dictionary <string, AssetDataInfo> temp = new Dictionary <string, AssetDataInfo>(); var itr = assetDatas[lastVersion].GetEnumerator(); while (itr.MoveNext()) { temp.Add(itr.Current.Name, itr.Current); } itr.Dispose(); WriteToLocal(temp, true); } }
public serverVersionFileManifestTest() { FileManifestManager.Add <IServerVersionFileManifest>(this); versionInfos = new Dictionary <string, VersionInfo>(); System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder(); // OnlyABPack // CompressionPack string version1 = "1.1"; string version2 = "1.2"; string version3 = "2.3"; string version4 = "3.4"; string version5 = "4.5"; string version6 = "4.6"; string version7 = "5.7"; string version8 = "6.8"; versionInfos.Add(version1, BuildVersion(version1, PackageType.CompressionPack)); versionInfos.Add(version2, BuildVersion(version2, PackageType.OnlyABPack)); versionInfos.Add(version3, BuildVersion(version3, PackageType.CompressionPack)); versionInfos.Add(version4, BuildVersion(version4, PackageType.OnlyABPack)); versionInfos.Add(version5, BuildVersion(version5, PackageType.CompressionPack)); versionInfos.Add(version6, BuildVersion(version6, PackageType.OnlyABPack)); versionInfos.Add(version7, BuildVersion(version5, PackageType.CompressionPack)); versionInfos.Add(version8, BuildVersion(version8, PackageType.CompressionPack)); }
protected override void OnDownLoadError(AssetDownInfo info) { Debug.Log("ZIP下载错误!"); // 回炉重造 _current_strategy.GoBackDownLoadFileResultInfo(info); // 下载错误 if (info.ErrorNumber < DownloaderConstant.MAX_DOWNLOAD_ERROR_NUMBER) { StartDownLoad(info); } else { if (_current_strategy.AssetType == eUpdateAssetType.Zip) { FileManifestManager.RemoveLocalFenBaoData(info.ToAssetDataInfo()); } else { FileManifestManager.RemoveLocalABData(info.ToAssetDataInfo()); } AssetDownLoads.StopALLDownLoad(); } if (!_downLoad_error.Contains(info)) { _downLoad_error.Add(info); } }
public fenBaoFileManifestTest() { FileManifestManager.Add <IServerFenbaoFileManifest>(this); _data_infos = new Dictionary <string, List <AssetDataInfo> >(); IServerVersionFileManifest versionFileManifest = FileManifestManager.Get <IServerVersionFileManifest>(); List <string> zipVersions = versionFileManifest.GetZipAllVersion(); int zipFileCount = 3; var itr = zipVersions.GetEnumerator(); int versionIndex = 1; while (itr.MoveNext()) { _data_infos.Add(itr.Current, new List <AssetDataInfo>()); for (int i = 0; i < zipFileCount; i++) { string name = string.Format(" Package{0}_{1}.zip", versionIndex, i); _data_infos[itr.Current].Add(BuildFenBao(name)); } versionIndex++; } itr.Dispose(); }
public override void StartDownLoad() { VersionInfo info = FileManifestManager.Get <IServerVersionFileManifest>().GetLastVersin(); if (info == null) { return; } if (info.AssetBundleManifestNames == null) { return; } for (int i = 0; i < info.AssetBundleManifestNames.Length; i++) { AssetBundleDownLoadParam param = new AssetBundleDownLoadParam(info.AssetBundleManifestNames[i]); HttpDownLoadAsync httpDownLoadAsync = CreateHttpDownLoad(); AssetDownInfo downInfo = new AssetDownInfo(); downInfo.AssetName = info.AssetBundleManifestNames[i]; downInfo.Buffer.ByteSize = int.Parse(info.AssetBundleManifestLengths[i]); downInfo.MD5 = info.AssetBundleManifestMD5s[i]; downInfo.Index = i; _version_index.Add(i); httpDownLoadAsync.Setup(downInfo); httpDownLoadAsync.StartDownLoad(param); } }
protected override void OnDownloadSuccessful(AssetDownInfo info, HttpDownLoadAsync loadAsync) { Debug.Log("Asset下载成功!"); if (_downLoad_error.Contains(info)) { _downLoad_error.Remove(info); } if (StageDataBase.CheckVersionIsDownLoadComplete(info.Version)) { // 一个版本下载完毕 VersionDownLoadComplete(info.Version); } _current_strategy.TryRemove(info); if (IsDone) { if (_stage_index < (_strategy_bases.Length - 1)) { _stage_index++; Debug.Log("换阶段了 STAGE_INDEX=" + _stage_index); } else { if (_downLoad_error.Count <= 0) { UpdateStageResult.DownLoad.ClearAll(); } OnAllDownLoadComplete(); if (DownLoadCompleteEvent != null) { DownLoadCompleteEvent(this); } FileManifestManager.WriteABDataByCurrent(); isDone = true; Debug.Log("全部下载完成!!!!!!!"); } } else { AssetDataInfo dataInfo = info.ToAssetDataInfo(); if (_current_strategy.AssetType == eUpdateAssetType.Zip) { FileManifestManager.UpdateLocalFenBaoData(dataInfo); } else { FileManifestManager.UpdateLocalABData(dataInfo); } } TryStartDownLoad(); }
public void StopDownLoad() { var itr = httpDownloadAsyncs.GetEnumerator(); while (itr.MoveNext()) { itr.Current.StopDownLoad(); } itr.Dispose(); FileManifestManager.WriteABDataByCurrent(); FileManifestManager.WriteFenBaoDataByCurrent(); }
public AssetBundleFileManifestTest() { FileManifestManager.Add <IServerAssetBundleFileManifest>(this); IServerVersionFileManifest versionFileManifest = FileManifestManager.Get <IServerVersionFileManifest>(); _data_infos = new Dictionary <string, List <AssetDataInfo> >(); List <string> abVersions = versionFileManifest.GetABVersion(); var itr = abVersions.GetEnumerator(); while (itr.MoveNext()) { _data_infos.Add(itr.Current, new List <AssetDataInfo>()); int count = 3; for (int i = 0; i < count; i++) { _data_infos[itr.Current].Add(BuildAssetData(itr.Current + "__" + i.ToString())); } } itr.Dispose(); }
// 开始解压缩 public void StartDecompress() { UpdateStageResult.DownLoad.IsEnable = false; UpdateStageResult.Compression.IsEnable = true; UpdateStageResult.Compression.ClearAll(); var deItr = _decompress_queue.GetEnumerator(); while (deItr.MoveNext()) { UpdateStageResult.Compression.TotalSize += deItr.Current.TotalSize; UpdateStageResult.Compression.FileCount++; } deItr.Dispose(); string localPath = AssetsCommon.LocalAssetPath; if (!Directory.Exists(localPath)) { Directory.CreateDirectory(localPath); } AssetDownInfo[] tempDatas = new AssetDownInfo[_decompress_queue.Count]; for (int i = 0; i < tempDatas.Length; i++) { int index = _decompress_queue[i].Index; tempDatas[index] = _decompress_queue[i]; } for (int i = 0; i < tempDatas.Length; i++) { AssetDownInfo downInfo = tempDatas[i]; string zipFileName = string.Format("{0}/{1}", localPath, downInfo.AssetName); List <AssetDataInfo> assetNames = ZipHelper.Decompress( zipFileName, localPath); AssetDataInfo dataInfo = downInfo.ToAssetDataInfo(); dataInfo.IsCompressed = true; UpdateStageResult.Compression.CurrentCount++; FileManifestManager.UpdateLocalFenBaoData(dataInfo); for (int j = 0; j < assetNames.Count; j++) { FileManifestManager.UpdateLocalABData(assetNames[j]); } if (File.Exists(zipFileName)) { File.Delete(zipFileName); } } UpdateStageResult.Compression.IsEnable = false; if (_owner.IsDownLoadAllVersion) { FileManifestManager.WriteFenBaoDataByServer(); } else { FileManifestManager.WriteFenBaoDataByCurrent(); } FileManifestManager.WriteABDataByCurrent(); }
public StrategyFactoryBase() { serverVersion = FileManifestManager.Get <IServerVersionFileManifest>(); serverAssetBundle = FileManifestManager.Get <IServerAssetBundleFileManifest>(); serverFenbao = FileManifestManager.Get <IServerFenbaoFileManifest>(); }
public AssetBundleFileDownLoad() { FileManifestManager.Add <IServerAssetBundleFileManifest>(this); _server_version = FileManifestManager.Get <IServerVersionFileManifest>(); _data_infos = new Dictionary <string, List <AssetDataInfo> >(); }
public VersionFileDownLoad() { FileManifestManager.Add <IServerVersionFileManifest>(this); _server_version_list = FileManifestManager.Get <IServerVersionListFileManifest>(); _version_infos = new Dictionary <string, VersionInfo>(); }
public VersionListDownLoad() { FileManifestManager.Add <IServerVersionListFileManifest>(this); }
protected void VersionDownLoadComplete(string version) { IServerVersionFileManifest versionFile = FileManifestManager.Get <IServerVersionFileManifest>(); versionFile.WriteVersion(version); }
public FenbaoFileDownLoad() : base() { FileManifestManager.Add <IServerFenbaoFileManifest>(this); _all_zip = new Dictionary <string, List <AssetDataInfo> >(); _server_version = FileManifestManager.Get <IServerVersionFileManifest>(); }