123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- using System.Collections;
- using System.Collections.Generic;
- using Fort23.Core;
- using Fort23.GameData;
- using hirdParty.DownloadSystem;
- using ThirdParty;
- using ThirdParty.DownloadSystem;
- using UnityEngine;
- public class GameAssetUpdatePanel
- {
- private AssetMD5Info remotelyMD5Info;
- public System.Action OnCallBack;
- private IDownloadUI _downloadUI;
- private List<MD5FileInfo> checkFileInfo = new List<MD5FileInfo>();
- public void StartUpdateAsset()
- {
- _downloadUI = HotSyncContent.DownloadUI;
- _downloadUI.SetMassge("开始校验资源");
- // DownloadFileData downloadFileData = new DownloadFileData();
- // downloadFileData.remoteUrl = AssetBundleLoadManager.Instance.RootPersistentBundleURL + "MD5.txt";
- // DownloadHander downloadHander = FileDownloadSystem.Instance.DownloadFile(downloadFileData);
- DownloadFileData downloadFileData2 = new DownloadFileData();
- downloadFileData2.remoteUrl =
- $"{HotSyncContent.AssetURL}/{HotSyncContent.platform}/{HotSyncContent.Currversion}/Bundle/MD5.txt";
- downloadFileData2.maxCount = int.MaxValue;
- downloadFileData2.timeOut = 10;
- DownloadHander downloadHander2 = FileDownloadSystem.Instance.DownloadFile(downloadFileData2);
- DownLoadHanderGroup downLoadHanderGroup = new DownLoadHanderGroup();
- // downLoadHanderGroup.AddHander(downloadHander);
- downLoadHanderGroup.AddHander(downloadHander2);
- downLoadHanderGroup.OnCallBack = delegate { ComparisonMD5(downloadHander2); };
- downLoadHanderGroup.StartUpdate();
- }
- private void ComparisonMD5(DownloadHander downloadHander2)
- {
- _downloadUI.SetMassge("对比资源中");
- // AssetMD5Info localMD5Info = JsonHelper.FromJson<AssetMD5Info>(downloadHander.Text);
- string json = System.Text.UTF8Encoding.UTF8.GetString(downloadHander2.Data);
- remotelyMD5Info = JsonHelper.FromJson<AssetMD5Info>(json);
- Check();
- // List<MD5FileInfo> updateFlieInfo = new List<MD5FileInfo>();
- //
- // for (int i = 0; i < remotelyMD5Info.fileInfo.Count; i++)
- // {
- // MD5FileInfo remotelymd5FileInfo = remotelyMD5Info.fileInfo[i];
- // bool isYongYou = false;
- // for (int j = 0; j < localMD5Info.fileInfo.Count; j++)
- // {
- // MD5FileInfo localmd5FileInfo = localMD5Info.fileInfo[j];
- // if (remotelymd5FileInfo.fileName.Equals(localmd5FileInfo.fileName))
- // {
- // isYongYou = true;
- // if (!remotelymd5FileInfo.md5.Equals(localmd5FileInfo.md5))
- // {
- // updateFlieInfo.Add(remotelymd5FileInfo);
- // }
- // }
- // }
- //
- // if (!isYongYou)
- // {
- // updateFlieInfo.Add(remotelymd5FileInfo);
- // }
- // }
- //
- // DownloadFile(updateFlieInfo);
- }
- private async void DownloadFile(List<MD5FileInfo> updateFlieInfo)
- {
- Debug.Log("开始下载文件" + updateFlieInfo.Count);
-
- CTask<bool> cTask = CTask<bool>.Create();
- long size = 0;
- for (int i = 0; i < updateFlieInfo.Count; i++)
- {
- MD5FileInfo md5FileInfo = updateFlieInfo[i];
- if (md5FileInfo.size <= 0)
- {
- continue;
- }
- if (md5FileInfo.fileName.Contains("MD5"))
- {
- continue;
- }
- size += md5FileInfo.size;
- }
- string message = _downloadUI.GetLoadingText(46);
- message = string.Format(message, size / 1024 / 1024);
- _downloadUI.ShowPopWindow(0, message, () =>
- {
- _downloadUI.HidePopWindow();
- cTask.SetResult(false);
- Application.Quit();
- }, () =>
- {
- _downloadUI.HidePopWindow();
- cTask.SetResult(true);
- });
- await cTask;
- if (!cTask.GetResult())
- {
- return;
- }
- DownLoadHanderGroup downLoadHanderGroup = new DownLoadHanderGroup();
- // long size = 0;
- for (int i = 0; i < updateFlieInfo.Count; i++)
- {
- MD5FileInfo md5FileInfo = updateFlieInfo[i];
- if (md5FileInfo.size <= 0)
- {
- continue;
- }
- if (md5FileInfo.fileName.Contains("MD5"))
- {
- continue;
- }
- DownloadFileData downloadFileData = new DownloadFileData();
- // size += md5FileInfo.size;
- downloadFileData.remoteUrl =
- $"{HotSyncContent.AssetURL}/{HotSyncContent.platform}/{HotSyncContent.Currversion}/Bundle/{md5FileInfo.fileName}";
- Debug.Log("下载文件" + downloadFileData.remoteUrl);
- downloadFileData.localPath = AssetBundleLoadManager.Instance.RootPersistentBundleURL + md5FileInfo.fileName;
- DownloadHander fileDow = FileDownloadSystem.Instance.DownloadFile(downloadFileData);
- downLoadHanderGroup.AddHander(fileDow);
- }
- float sizeM = size / 1024f / 1024f;
- SliderData sliderData = new SliderData();
- sliderData.maxValue = size;
- _downloadUI.SetMassge($"开始下载文件,个数{updateFlieInfo.Count} 大小{sizeM}");
-
-
-
- sliderData.CcurrValue = delegate
- {
- float m = downLoadHanderGroup.size / 1024f / 1024f;
- float speed = downLoadHanderGroup.speed / 1024f;
- _downloadUI.SetMassge(
- $"开始下载文件,个数{updateFlieInfo.Count} 大小{m.ToString(".00")}M / {sizeM.ToString(".00")}M 速度{speed.ToString(".00")} Kb");
- return downLoadHanderGroup.size;
- };
- _downloadUI.SetSlider(sliderData);
- downLoadHanderGroup.OnCallBack = Check;
- downLoadHanderGroup.StartUpdate();
- }
- private void Check()
- {
- _downloadUI.ClearSlider();
- checkFileInfo.Clear();
- checkFileInfo.AddRange(remotelyMD5Info.fileInfo);
- CheckFilePool _checkFileThrans = new CheckFilePool();
- _checkFileThrans.isStreamingAssetsPath = true;
- _checkFileThrans.streamingAssetsPath = AssetBundleLoadManager.Instance.RootStreamingBundleURL;
- SliderData sliderData = new SliderData();
- sliderData.maxValue = checkFileInfo.Count;
- _downloadUI.SetMassge($"校验本地文件");
- sliderData.CcurrValue = delegate
- {
- float m = _checkFileThrans.FileCount();
- if (_checkFileThrans.isFinish)
- {
- _downloadUI.ClearSlider();
- if (_checkFileThrans.shiBaiFile.Count > 0)
- {
- Debug.Log("还有错误文件需要下载");
- for (int i = 0; i < _checkFileThrans.shiBaiFile.Count; i++)
- {
- Debug.Log(_checkFileThrans.shiBaiFile[i].fileName);
- }
- DownloadFile(_checkFileThrans.shiBaiFile);
- }
- else
- {
- OnCallBack?.Invoke();
- }
- }
- else
- {
- _downloadUI.SetMassge(
- $"校验本地文件{m} / {sliderData.maxValue}");
- }
- return m;
- };
- _downloadUI.SetSlider(sliderData);
- string rootPath = AssetBundleLoadManager.Instance.RootPersistentBundleURL;
- _checkFileThrans.Start(rootPath, checkFileInfo);
- }
- }
|