少年修仙传客户端代码仓库
client_Wu Xijin
2018-08-22 0a858ed58b484a23d01a8232e151dd8efa145561
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++;