Main/Core/GameEngine/Launch/CheckAssetValidTask.cs
@@ -26,7 +26,7 @@ { var remoteURL = StringUtility.Contact(VersionUtility.Instance.versionInfo.GetResourcesURL(VersionConfig.Get().branch), Language.fixPath, "/config/PriorBundle.txt"); var localURL = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, "config/PriorBundle.txt"); var downloadTask = new DownloadTask(remoteURL, localURL); var downloadTask = new DownloadHotTask(remoteURL, localURL); downloadTask.BeginDownload(AssetVersionUtility.OnDownLoadPriorBundle); //AssetVersionUtility.GetAssetVersionFile(); Main/System/AssetVersion/AssetVersionUtility.cs
@@ -68,7 +68,7 @@ } public static void OnDownLoadPriorBundle(DownloadTask task) public static void OnDownLoadPriorBundle(DownloadHotTask task) { if (task.IsDone) { @@ -166,7 +166,7 @@ if (_prior) { m_PriorAssetDownLoadDone = false; DownLoadAndDiscompressTask.Instance.Prepare(priorDownLoadAssetVersions, () => { m_PriorAssetDownLoadDone = true; }); DownLoadAndDiscompressHotTask.Instance.Prepare(priorDownLoadAssetVersions, () => { m_PriorAssetDownLoadDone = true; }); } else { Main/System/AssetVersion/DownLoadAndDiscompressHotTask.cs
File was renamed from Main/System/AssetVersion/DownLoadAndDiscompressTask.cs @@ -6,13 +6,13 @@ using Cysharp.Threading.Tasks; public class DownLoadAndDiscompressTask : Singleton<DownLoadAndDiscompressTask> public class DownLoadAndDiscompressHotTask : Singleton<DownLoadAndDiscompressHotTask> { public const int BYTE_PER_KILOBYTE = 1024; public const int BYTE_PER_MILLIONBYTE = 1048576; public float progress { get { return Mathf.Clamp01((float)DownloadMgr.Instance.DownloadedBytes / totalSize); } } public float progress { get { return Mathf.Clamp01((float)DownloadHotMgr.Instance.DownloadedBytes / totalSize); } } List<AssetVersion> tasks = new List<AssetVersion>(); public bool isDone { get { return step == Step.Completed; } } @@ -73,9 +73,7 @@ if (totalSize > BYTE_PER_MILLIONBYTE) { // TODO YYL // UIManager.Instance.OpenWindow<DownLoadWin>(); // WindowCenter.Instance.OpenFromLocal<DownLoadWin>(); UIManager.Instance.OpenWindow<DownLoadWin>(); } else { @@ -88,7 +86,7 @@ { step = Step.DownLoad; Co_StartDownLoad(); Co_StartDownLoad().Forget(); // SnxxzGame.Instance.StartCoroutine(Co_StartDownLoad()); // TODO YYL @@ -99,18 +97,18 @@ { while (tasks.Count > 0) { DownloadMgr.Instance.Prepare(); DownloadHotMgr.Instance.Prepare(); for (int i = 0; i < tasks.Count; i++) { var assetVersion = tasks[i]; var remoteURL = StringUtility.Contact(VersionUtility.Instance.versionInfo.GetResourcesURL(VersionConfig.Get().branch), Language.fixPath, "/", assetVersion.relativePath); var localURL = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, assetVersion.relativePath); DownloadMgr.Instance.AddTask(new DownloadTask(remoteURL, localURL)); DownloadHotMgr.Instance.AddTask(new DownloadHotTask(remoteURL, localURL)); } DownloadMgr.Instance.Begin(); DownloadHotMgr.Instance.Begin(); while (!DownloadMgr.Instance.IsFinished) while (!DownloadHotMgr.Instance.IsFinished) { await UniTask.DelayFrame(1); } @@ -136,8 +134,8 @@ step = Step.Completed; UIManager.Instance.OpenWindow<DownLoadWin>(); UIManager.Instance.OpenWindow<InGameDownLoadWin>(); UIManager.Instance.CloseWindow<DownLoadWin>(); UIManager.Instance.CloseWindow<InGameDownLoadWin>(); if (downLoadOkCallBack != null) { Main/System/AssetVersion/DownLoadAndDiscompressHotTask.cs.meta
Main/System/AssetVersion/DownLoadWin.cs
@@ -9,146 +9,144 @@ using UnityEngine; using UnityEngine.UI; public class DownLoadWin : UIBase public class DownLoadWin : UIBase { [SerializeField] RectTransform m_ContainerHint; [SerializeField] RichText m_Content; [SerializeField] Button m_Confirm; [SerializeField] Button m_Cancel; [SerializeField] Transform m_ContainerProgress; [SerializeField] SmoothSlider m_ProgressSlider; [SerializeField] Text m_Progress; [SerializeField] Text m_DownLoadSpeed; float timer = 1f; protected override void InitComponent() { [SerializeField] RectTransform m_ContainerHint; [SerializeField] RichText m_Content; [SerializeField] Button m_Confirm; [SerializeField] Button m_Cancel; m_Confirm.AddListener(Confirm); m_Cancel.AddListener(Cancel); } [SerializeField] Transform m_ContainerProgress; [SerializeField] SmoothSlider m_ProgressSlider; [SerializeField] Text m_Progress; [SerializeField] Text m_DownLoadSpeed; [SerializeField] Transform awardObj; float timer = 1f; protected override void InitComponent() protected override void OnPreOpen() { timer = 1f; if (Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork) { m_Confirm.AddListener(Confirm); m_Cancel.AddListener(Cancel); DownLoadAndDiscompressHotTask.Instance.StartDownLoad(); } protected override void OnPreOpen() OnDownLoadStepChange(DownLoadAndDiscompressHotTask.Instance.step); } protected override void OnOpen() { DownLoadAndDiscompressHotTask.Instance.downLoadStepChangeEvent += OnDownLoadStepChange; } protected override void OnPreClose() { DownLoadAndDiscompressHotTask.Instance.downLoadStepChangeEvent -= OnDownLoadStepChange; } protected override void OnClose() { } private void OnDownLoadStepChange(DownLoadAndDiscompressHotTask.Step _step) { switch (_step) { timer = 1f; if (Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork) case DownLoadAndDiscompressHotTask.Step.DownLoadPrepared: m_ContainerHint.SetActive(true); m_ContainerProgress.SetActive(false); DisplayHintContent(); break; case DownLoadAndDiscompressHotTask.Step.DownLoad: m_ContainerHint.SetActive(false); m_ContainerProgress.SetActive(true); DisplayHintContent(); break; } } protected void LateUpdate() { var step = DownLoadAndDiscompressHotTask.Instance.step; if (step == DownLoadAndDiscompressHotTask.Step.DownLoad) { timer += Time.deltaTime; if (timer > 1f) { DownLoadAndDiscompressTask.Instance.StartDownLoad(); } timer -= 1f; m_ProgressSlider.value = DownLoadAndDiscompressHotTask.Instance.progress; var totalSizeString = ((float)DownLoadAndDiscompressHotTask.Instance.totalSize / DownLoadAndDiscompressHotTask.BYTE_PER_MILLIONBYTE).ToString("f1"); var downLoadedSize = Mathf.Clamp(DownloadHotMgr.Instance.DownloadedBytes, 0, DownLoadAndDiscompressHotTask.Instance.totalSize - 1); var downLoadedSizeString = ((float)downLoadedSize / DownLoadAndDiscompressHotTask.BYTE_PER_MILLIONBYTE).ToString("f1"); OnDownLoadStepChange(DownLoadAndDiscompressTask.Instance.step); m_Progress.text = Language.GetFromLocal(13, StringUtility.Contact(downLoadedSizeString, "M", "/", totalSizeString, "M")); awardObj.SetActive(InGameDownLoad.Instance.IsShowDownloadAward()); } protected override void OnOpen() { DownLoadAndDiscompressTask.Instance.downLoadStepChangeEvent += OnDownLoadStepChange; } protected override void OnPreClose() { DownLoadAndDiscompressTask.Instance.downLoadStepChangeEvent -= OnDownLoadStepChange; } protected override void OnClose() { } private void OnDownLoadStepChange(DownLoadAndDiscompressTask.Step _step) { switch (_step) { case DownLoadAndDiscompressTask.Step.DownLoadPrepared: m_ContainerHint.SetActive(true); m_ContainerProgress.SetActive(false); DisplayHintContent(); break; case DownLoadAndDiscompressTask.Step.DownLoad: m_ContainerHint.SetActive(false); m_ContainerProgress.SetActive(true); DisplayHintContent(); break; } } protected void LateUpdate() { var step = DownLoadAndDiscompressTask.Instance.step; if (step == DownLoadAndDiscompressTask.Step.DownLoad) { timer += Time.deltaTime; if (timer > 1f) if (downLoadedSize >= DownLoadAndDiscompressHotTask.Instance.totalSize) { timer -= 1f; m_ProgressSlider.value = DownLoadAndDiscompressTask.Instance.progress; var totalSizeString = ((float)DownLoadAndDiscompressTask.Instance.totalSize / DownLoadAndDiscompressTask.BYTE_PER_MILLIONBYTE).ToString("f1"); var downLoadedSize = Mathf.Clamp(DownloadMgr.Instance.DownloadedBytes, 0, DownLoadAndDiscompressTask.Instance.totalSize - 1); var downLoadedSizeString = ((float)downLoadedSize / DownLoadAndDiscompressTask.BYTE_PER_MILLIONBYTE).ToString("f1"); m_Progress.text = Language.GetFromLocal(13, StringUtility.Contact(downLoadedSizeString, "M", "/", totalSizeString, "M")); if (downLoadedSize >= DownLoadAndDiscompressTask.Instance.totalSize) { m_DownLoadSpeed.text = StringUtility.Contact(UnityEngine.Random.Range(5, 10), "KB/S"); } else { m_DownLoadSpeed.text = DownloadMgr.Instance.SpeedFormat; } m_DownLoadSpeed.text = StringUtility.Contact(UnityEngine.Random.Range(5, 10), "KB/S"); } else { m_DownLoadSpeed.text = DownloadHotMgr.Instance.SpeedFormat; } } } private void DisplayHintContent() { var step = DownLoadAndDiscompressTask.Instance.step; switch (step) { case DownLoadAndDiscompressTask.Step.DownLoadPrepared: var totalCount = DownLoadAndDiscompressTask.Instance.totalCount; var totalSize = DownLoadAndDiscompressTask.Instance.totalSize; if (totalSize > DownLoadAndDiscompressTask.BYTE_PER_MILLIONBYTE) { var sizeDescription = ((float)totalSize / DownLoadAndDiscompressTask.BYTE_PER_MILLIONBYTE).ToString("f1"); m_Content.text = Language.GetFromLocal(DownLoadAndDiscompressTask.Instance.restartApp ? 1 : 2, totalCount, sizeDescription); } else { var sizeDescription = ((float)totalSize / DownLoadAndDiscompressTask.BYTE_PER_KILOBYTE).ToString("f1"); m_Content.text = Language.GetFromLocal(DownLoadAndDiscompressTask.Instance.restartApp ? 11 : 12, totalCount, sizeDescription); } break; case DownLoadAndDiscompressTask.Step.DownLoad: m_Content.text = Language.GetFromLocal(3); break; } } private void Confirm() { timer = 1f; var step = DownLoadAndDiscompressTask.Instance.step; switch (step) { case DownLoadAndDiscompressTask.Step.DownLoadPrepared: DownLoadAndDiscompressTask.Instance.StartDownLoad(); break; } } private void Cancel() { Application.Quit(); } } private void DisplayHintContent() { var step = DownLoadAndDiscompressHotTask.Instance.step; switch (step) { case DownLoadAndDiscompressHotTask.Step.DownLoadPrepared: var totalCount = DownLoadAndDiscompressHotTask.Instance.totalCount; var totalSize = DownLoadAndDiscompressHotTask.Instance.totalSize; if (totalSize > DownLoadAndDiscompressHotTask.BYTE_PER_MILLIONBYTE) { var sizeDescription = ((float)totalSize / DownLoadAndDiscompressHotTask.BYTE_PER_MILLIONBYTE).ToString("f1"); m_Content.text = Language.GetFromLocal(DownLoadAndDiscompressHotTask.Instance.restartApp ? 1 : 2, totalCount, sizeDescription); } else { var sizeDescription = ((float)totalSize / DownLoadAndDiscompressHotTask.BYTE_PER_KILOBYTE).ToString("f1"); m_Content.text = Language.GetFromLocal(DownLoadAndDiscompressHotTask.Instance.restartApp ? 11 : 12, totalCount, sizeDescription); } break; case DownLoadAndDiscompressHotTask.Step.DownLoad: m_Content.text = Language.GetFromLocal(3); break; } } private void Confirm() { timer = 1f; var step = DownLoadAndDiscompressHotTask.Instance.step; switch (step) { case DownLoadAndDiscompressHotTask.Step.DownLoadPrepared: DownLoadAndDiscompressHotTask.Instance.StartDownLoad(); break; } } private void Cancel() { Application.Quit(); } } Main/System/AssetVersion/DownloadHotMgr.cs
File was renamed from Main/System/AssetVersion/DownloadMgr.cs @@ -10,7 +10,7 @@ using Cysharp.Threading.Tasks; public class DownloadMgr : SingletonMonobehaviour<DownloadMgr> public class DownloadHotMgr : SingletonMonobehaviour<DownloadHotMgr> { #region 配置 public static int MaxRetryTimes = 5;//最大重试的次数 @@ -19,14 +19,14 @@ #endregion #region 任务列表 private Dictionary<string, DownloadTask> allTask = new Dictionary<string, DownloadTask>(); //所有任务组 private Queue<DownloadTask> waitTask = new Queue<DownloadTask>(); //当前等待下载的任务 private Dictionary<string, DownloadTask> downloadTask = new Dictionary<string, DownloadTask>(); //当前正在下载的任务 private Dictionary<string, DownloadHotTask> allTask = new Dictionary<string, DownloadHotTask>(); //所有任务组 private Queue<DownloadHotTask> waitTask = new Queue<DownloadHotTask>(); //当前等待下载的任务 private Dictionary<string, DownloadHotTask> downloadTask = new Dictionary<string, DownloadHotTask>(); //当前正在下载的任务 #endregion 任务列表 private bool isBegin; private int startTickcount = 0; private Func<bool, DownloadTask, bool> onTaskCompleted;//文件下载完成回调,<是否全部完成,任务对象,return true:立即重试,false:到队尾重试> private Func<bool, DownloadHotTask, bool> onTaskCompleted;//文件下载完成回调,<是否全部完成,任务对象,return true:立即重试,false:到队尾重试> //总速度 private float speed; @@ -69,7 +69,7 @@ } //添加任务 public DownloadMgr AddTask(DownloadTask task) public DownloadHotMgr AddTask(DownloadHotTask task) { if (allTask.ContainsKey(task.Key)) { @@ -82,7 +82,7 @@ } //准备下载,重置状态 public DownloadMgr Prepare() public DownloadHotMgr Prepare() { Stop(); this.onTaskCompleted = null; @@ -99,7 +99,7 @@ /// </summary> /// <param name="onTaskCompleted">任务结束回调</param> /// <returns></returns> public DownloadMgr Begin(Func<bool, DownloadTask, bool> onTaskCompleted = null) public DownloadHotMgr Begin(Func<bool, DownloadHotTask, bool> onTaskCompleted = null) { this.onTaskCompleted = onTaskCompleted; startTickcount = TimeUtility.AllSeconds; @@ -145,7 +145,7 @@ } // 任务下载完成 private void OnTaskCompleted(DownloadTask task) private void OnTaskCompleted(DownloadHotTask task) { downloadTask.Remove(task.Key); if (task.IsDone)//下载成功 @@ -180,7 +180,7 @@ public class DownloadTask public class DownloadHotTask { //下载任务状态 public enum TaskState @@ -195,7 +195,7 @@ public readonly string tempFile;//临时文件地址 private readonly bool clearCache;//是否清除旧的下载缓存,(断点续传) public readonly object obj; //自定义对象 private Action<DownloadTask> onCompleted;//下载完成回调 private Action<DownloadHotTask> onCompleted;//下载完成回调 private TaskState state;//下载状态 public bool isStop;//下载被停止 @@ -230,7 +230,7 @@ /// <param name="localUrl">本地保存地址</param> /// <param name="obj">自定义对象</param> /// <param name="clearCache">是否清除上次下载的缓存</param> public DownloadTask(string remoteUrl, string localUrl, object obj = null, bool clearCache = false) public DownloadHotTask(string remoteUrl, string localUrl, object obj = null, bool clearCache = false) { this.remoteUrl = remoteUrl; this.localFile = localUrl; @@ -266,11 +266,11 @@ if (IsWorking) return; Co_GetHeader(); Co_GetHeader().Forget(); // SnxxzGame.Instance.StartCoroutine(Co_GetHeader()); } public bool BeginDownload(Action<DownloadTask> onCompleted) public bool BeginDownload(Action<DownloadHotTask> onCompleted) { if ((IsWorking && requestHeaderOk) || IsDone)//已经在下载任务中或已经下载完成了 return false; @@ -278,7 +278,7 @@ failedTimes = 0; this.onCompleted = onCompleted; this.isStop = false; Co_DownloadFile(); Co_DownloadFile().Forget(); // SnxxzGame.Instance.StartCoroutine(Co_DownloadFile()); return true; } @@ -300,7 +300,7 @@ Debug.LogFormat("开始获取头信息:{0}", remoteUrl); using (var www = UnityWebRequest.Head(remoteUrl)) { www.timeout = DownloadMgr.TimeOut; www.timeout = DownloadHotMgr.TimeOut; await www.SendWebRequest(); if (www.result == UnityWebRequest.Result.ConnectionError || www.result == UnityWebRequest.Result.ProtocolError) { @@ -443,6 +443,7 @@ private async UniTask Move(string sourceFile, string destFile) { var copyState = 0;//复制文件状态,0等待,1成功,2失败 try { @@ -464,6 +465,8 @@ } else SetFailed("临时文件改名出错"); await UniTask.CompletedTask; } } Main/System/AssetVersion/DownloadHotMgr.cs.meta
Main/System/AssetVersion/InGameDownLoad.cs
@@ -27,7 +27,7 @@ public bool isDone { get { return state == State.Completed; } } //是否全部下载完成 //窗口中显示的已下载大小 public long showDownLoadedSize { get { return DownloadMgr.Instance.DownloadedBytes - backGroundDownLoadSizeRecord; } } public long showDownLoadedSize { get { return DownloadHotMgr.Instance.DownloadedBytes - backGroundDownLoadSizeRecord; } } public long showTotalSize { get { return totalSize - backGroundDownLoadSizeRecord; } }//窗口中显示的总大小 public int showTotalCount { get { return totalCount - downLoadedCountRecord; } }//窗口中显示的总数量 public int showOkCount { get { return okCount - downLoadedCountRecord; } }//窗口中显示的下载完成数量 @@ -91,7 +91,7 @@ private void Awake() { DownloadMgr.MaxDownLoadTask = GetMaxTask(); DownloadHotMgr.MaxDownLoadTask = GetMaxTask(); } private void LateUpdate() @@ -145,7 +145,7 @@ okCount = 0; totalSize = 0; DownloadMgr.Instance.Prepare(); DownloadHotMgr.Instance.Prepare(); for (int i = 0; i < this.assets.Count; i++) { @@ -164,7 +164,7 @@ //添加下载任务 var remoteURL = StringUtility.Contact(VersionUtility.Instance.versionInfo.GetResourcesURL(VersionConfig.Get().branch), Language.fixPath, "/", assetVersion.relativePath); var localURL = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, assetVersion.relativePath); DownloadMgr.Instance.AddTask(new DownloadTask(remoteURL, localURL, assetVersion)); DownloadHotMgr.Instance.AddTask(new DownloadHotTask(remoteURL, localURL, assetVersion)); } state = State.None; @@ -245,7 +245,7 @@ case Dominant.Half: if (dominantState == Dominant.None) { backGroundDownLoadSizeRecord = DownloadMgr.Instance.DownloadedBytes; backGroundDownLoadSizeRecord = DownloadHotMgr.Instance.DownloadedBytes; downLoadedCountRecord = okCount; } StartDownLoad(); @@ -254,7 +254,7 @@ case Dominant.Whole: if (dominantState == Dominant.None) { backGroundDownLoadSizeRecord = DownloadMgr.Instance.DownloadedBytes; backGroundDownLoadSizeRecord = DownloadHotMgr.Instance.DownloadedBytes; downLoadedCountRecord = okCount; Pause(); state = State.Prepared; @@ -265,8 +265,7 @@ state = State.Prepared; } dominantState = Dominant.Whole; UIManager.Instance.OpenWindow<InGameDownLoadWin>(); // // WindowCenter.Instance.Open<InGameDownLoadWin>(); // UIManager.Instance.OpenWindow<InGameDownLoadWin>(); break; } } @@ -277,7 +276,7 @@ if (state == State.None || state == State.Prepared || state == State.Pause) { state = State.DownLoad; DownloadMgr.Instance.Begin(OnFileDownLoadCompleted); DownloadHotMgr.Instance.Begin(OnFileDownLoadCompleted); } } @@ -286,13 +285,13 @@ { if (state == State.DownLoad) { DownloadMgr.Instance.Stop(); DownloadHotMgr.Instance.Stop(); state = State.Pause; } } //文件下载完成回调 private bool OnFileDownLoadCompleted(bool finished, DownloadTask task) private bool OnFileDownLoadCompleted(bool finished, DownloadHotTask task) { if (task.IsDone && task.obj is AssetVersion) { Main/System/AssetVersion/InGameDownLoadWin.cs
@@ -39,7 +39,7 @@ downLoadGo.SetListener(() => { downLoadGo.isOn = !downLoadGo.isOn; InGameDownLoad.Instance.downLoadGo = downLoadGo.isOn; DownloadMgr.MaxDownLoadTask = InGameDownLoad.Instance.GetMaxTask(); DownloadHotMgr.MaxDownLoadTask = InGameDownLoad.Instance.GetMaxTask(); }); } @@ -118,7 +118,7 @@ } else { m_DownLoadSpeed.text = DownloadMgr.Instance.SpeedFormat; m_DownLoadSpeed.text = DownloadHotMgr.Instance.SpeedFormat; } } } Main/System/ClientVersion/VersionUtility.cs
@@ -20,7 +20,7 @@ public string androidRoot { get { return string.Empty;/*StringUtility.Contact(SDKUtils.Instance.DeviceRootPath, "/", VersionConfig.Get().bundleIdentifier);*/ } } public DownloadTask downloadTask; public DownloadHotTask downloadTask; private string versionUrl; public float progress { @@ -199,11 +199,11 @@ var remoteURL = GetApkRemoteUrl(); var apkLocalUrl = GetApkLocalUrl(); downloadTask = new DownloadTask(remoteURL, apkLocalUrl); downloadTask = new DownloadHotTask(remoteURL, apkLocalUrl); downloadTask.BeginDownload(OnDownLoadApkCompleted); } private void OnDownLoadApkCompleted(DownloadTask task) private void OnDownLoadApkCompleted(DownloadHotTask task) { if (task.IsDone) { Main/System/GeneralConfig/ConstDefine.cs
File was deleted Main/System/GeneralConfig/ConstDefine.cs.meta
File was deleted Main/System/Login/LoginWin.cs
@@ -110,7 +110,7 @@ firstOpenEnd = true; InGameDownLoad.Instance.downLoadGo = false; DownloadMgr.MaxDownLoadTask = InGameDownLoad.Instance.GetMaxTask(); DownloadHotMgr.MaxDownLoadTask = InGameDownLoad.Instance.GetMaxTask(); } protected override void OnPreClose()