From 0a858ed58b484a23d01a8232e151dd8efa145561 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期三, 22 八月 2018 14:57:46 +0800
Subject: [PATCH] 1621 IOS分包资源下载弹框,点击暂停游戏崩溃

---
 System/AssetVersion/InGameDownLoad.cs |   33 +++++++++++++++++++++++----------
 1 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/System/AssetVersion/InGameDownLoad.cs b/System/AssetVersion/InGameDownLoad.cs
index 8f27ffe..10fcb72 100644
--- a/System/AssetVersion/InGameDownLoad.cs
+++ b/System/AssetVersion/InGameDownLoad.cs
@@ -15,8 +15,6 @@
     List<AssetVersion> tasks = new List<AssetVersion>();
 
     public bool inGameDownLoadAllow = false;
-
-
 
     public float progress {
         get {
@@ -240,7 +238,6 @@
         }
     }
 
-    int workingQueueMaxCount = 1;
 
     IEnumerator Co_StartDownLoad()
     {
@@ -249,18 +246,14 @@
         workingQueue.Clear();
         okCount = 0;
 
+        var downLoadTasksQueues = new Queue<AssetVersion>();
+
         for (int i = 0; i < tasks.Count; i++)
         {
             var assetVersion = tasks[i];
             if (!assetVersion.localValid)
             {
-                var remoteURL = StringUtility.Contact(VersionUtility.Instance.versionInfo.GetResourcesURL(VersionConfig.Get().branch), "/", assetVersion.relativePath);
-                var localURL = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, assetVersion.relativePath);
-
-                var remoteFile = new RemoteFile();
-                workingQueue.Add(remoteFile);
-                remoteFile.Init(remoteURL, localURL, assetVersion, true);
-                remoteFile.Begin(OnFileDownLoadCompleted);
+                downLoadTasksQueues.Enqueue(assetVersion);
             }
             else
             {
@@ -270,6 +263,17 @@
 
         while (okCount < totalCount)
         {
+            while (workingQueue.Count < 2 && downLoadTasksQueues.Count > 0)
+            {
+                var assetVersion = downLoadTasksQueues.Dequeue();
+                var remoteURL = StringUtility.Contact(VersionUtility.Instance.versionInfo.GetResourcesURL(VersionConfig.Get().branch), "/", assetVersion.relativePath);
+                var localURL = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, assetVersion.relativePath);
+
+                var remoteFile = new RemoteFile();
+                workingQueue.Add(remoteFile);
+                remoteFile.Init(remoteURL, localURL, assetVersion, true);
+                remoteFile.Begin(OnFileDownLoadCompleted);
+            }
             yield return null;
         }
 
@@ -307,6 +311,15 @@
 
     private void OnFileDownLoadCompleted(bool _ok, AssetVersion _assetVersion)
     {
+        foreach (var remote in workingQueue)
+        {
+            if (remote.assetVersion == _assetVersion)
+            {
+                workingQueue.Remove(remote);
+                break;
+            }
+        }
+
         if (_ok)
         {
             okCount++;

--
Gitblit v1.8.0