| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 | 
							- using GFGGame.Launcher;
 
- using VEngine;
 
- using System.Collections;
 
- using UnityEngine;
 
- namespace GFGGame
 
- {
 
-     public class VersionController : SingletonMonoBase<VersionController>
 
-     {
 
-         private UpdateVersions updateVersions;
 
-         
 
-         public void Init()
 
-         {
 
-             StartCoroutine(InitVersion());
 
-         }
 
-         public IEnumerator InitVersion()
 
-         {
 
-             LauncherView.Instance.SetDesc("正在校验资源版本...");
 
-             VEngine.Logger.Loggable = false;
 
-             EncryptHelper.resKey = LauncherConfig.resKey;
 
-             Versions.DownloadURL = LauncherConfig.CDN_ROOT;
 
-             var operation = Versions.InitializeAsync(LauncherConfig.CDN_ROOT);
 
-             yield return operation;
 
-             //VEngine.Logger.I("Initialize: {0}", operation.status);
 
-             //VEngine.Logger.I("API Version: {0}", Versions.APIVersion);
 
-             //VEngine.Logger.I("AppVersion: {0}", Versions.Manifest.appVersion);
 
-             //VEngine.Logger.I("Manifests Version: {0}", Versions.ManifestsVersion);
 
-             //VEngine.Logger.I("PlayerDataPath: {0}", Versions.PlayerDataPath);
 
-             //VEngine.Logger.I("DownloadDataPath: {0}", Versions.DownloadDataPath);
 
-             //VEngine.Logger.I("DownloadURL: {0}", Versions.DownloadURL);
 
-             StartCheckManifestVersion();
 
-         }
 
-         private void StartCheckManifestVersion()
 
-         {
 
-             StartCoroutine(CheckManifestVersion());
 
-         }
 
-         private IEnumerator CheckManifestVersion()
 
-         {
 
-             if (!Versions.OfflineMode)
 
-             {
 
-                 LogServerHelperHttp.SendNodeLog((int)LogNode.StartCheckVersion);
 
-                 // TODO:生产环境这里的清单名字应该使用带 hash 的版本
 
-                 updateVersions = Versions.UpdateAsync(nameof(Manifest) + LauncherConfig.manifest_v);
 
-                 while(!updateVersions.isDone)
 
-                 {
 
-                     if(updateVersions.asset != null && updateVersions.asset.assetVersion != null)
 
-                     {
 
-                         
 
-                         var max = updateVersions.asset.assetVersion.size;
 
-                         LauncherView.Instance.SetDesc($"正在校验资源版本...", $"{Utility.FormatBytes(max)}");
 
-                         LauncherView.Instance.SetProgress((int)(updateVersions.asset.progress * 100));
 
-                     }
 
-                     yield return updateVersions;
 
-                 };
 
-                 if (updateVersions.status == OperationStatus.Failed)
 
-                 {
 
-                     Alert.Show("更新版本信息失败,请检测网络链接后重试。")
 
-                         .SetLeftButton(true, "重试", (data) => { StartCheckManifestVersion(); });
 
-                 }
 
-                 else
 
-                 {
 
-                     yield return GetDownloadSize();
 
-                 }
 
-             }
 
-             else
 
-             {
 
-                 OnComplete();
 
-             }
 
-         }
 
-         private IEnumerator GetDownloadSize()
 
-         {
 
-             var getDownloadSize = Versions.GetDownloadSizeAsync(updateVersions);
 
-             var totalCount = getDownloadSize.bundles.Count;
 
-             while(!getDownloadSize.isDone)
 
-             {
 
-                 var remainCount = getDownloadSize.bundles.Count;
 
-                 LauncherView.Instance.SetDesc($"正在计算更新内容大小...", $"{ totalCount - remainCount }/{totalCount}");
 
-                 yield return getDownloadSize;
 
-             }
 
-             if (getDownloadSize.totalSize > 0 || updateVersions.changed)
 
-             {
 
-                 string message = $"游戏有新的版本,需要更新{Utility.FormatBytes(getDownloadSize.totalSize)}大小的内容";
 
-                 yield return Alert.Show(message)
 
-                     .SetLeftButton(true, "更新", (data) => {
 
-                         StartDownload(getDownloadSize);
 
-                     });
 
-                 yield break;
 
-             }
 
-             else
 
-             {
 
-                 OnComplete();
 
-             }
 
-         }
 
-         private void StartDownload(GetDownloadSize getDownloadSize)
 
-         {
 
-             LogServerHelperHttp.SendNodeLog((int)LogNode.StartDownload);
 
-             StartCoroutine(Downloading(getDownloadSize));
 
-         }
 
-         private IEnumerator Downloading(GetDownloadSize getDownloadSize)
 
-         {
 
-             LauncherView.Instance.SetProgress((int)(updateVersions.asset.progress * 100));
 
-             var downloadAsync = Versions.DownloadAsync(getDownloadSize.result.ToArray());
 
-             downloadAsync.updated += downloadAsync =>
 
-             {
 
-                 var current = downloadAsync.downloadedBytes; 
 
-                  var max = downloadAsync.totalSize;
 
-                 var speed = Download.TotalBandwidth;
 
-                 LauncherView.Instance.SetDesc($"正在下载资源,速度 {Utility.FormatBytes(speed)}/s", $"{Utility.FormatBytes(current)}/{Utility.FormatBytes(max)}"); 
 
-                 LauncherView.Instance.SetProgress((int)(downloadAsync.progress * 100));
 
-             };
 
-             yield return downloadAsync;
 
-             if (downloadAsync.status == OperationStatus.Failed)
 
-             {
 
-                 Alert.Show("下载失败!请检查网络状态后重试。")
 
-                     .SetLeftButton(true, "重试", (data) => { 
 
-                         StartDownload(getDownloadSize); 
 
-                     });
 
-             }
 
-             else
 
-             {
 
-                 OnComplete();
 
-             }
 
-         }
 
-         private void OnComplete()
 
-         {
 
-             if(updateVersions != null)
 
-             {
 
-                 updateVersions.Override();
 
-             }
 
-             LauncherView.Instance.SetDesc($"正在启动游戏...");
 
-             LauncherView.Instance.SetProgress(100, () =>
 
-             {
 
-                 HotUpdateCodeLoader.Instance.StartLoad();
 
-             });
 
-         }
 
-     }
 
- }
 
 
  |