예제 #1
0
        void OnUpdate()
        {
            if (fileInfo == null)
            {
                return;
            }

            if (_preFileInfo != fileInfo)
            {
                _preFileInfo = fileInfo;


                iconImage.sprite = FileIcon.GetIcon(Path.GetExtension(fileInfo.localPath));
                urlText.text     = Path.GetFileName(fileInfo.url);
                pathText.text    = fileInfo.localPath;
            }


            DownloadFile downloadFile = fileInfo.downloadFile;

            if (downloadFile == null)
            {
                if (fileInfo.state == FileInfo.StateType.Complete)
                {
                    totalBar.localScale = new Vector3(1, 1, 1);
                    rateText.text       = Mathf.Ceil(1 * 100) + "%";
                }
                else
                {
                    totalBar.localScale = new Vector3(0, 1, 1);
                    rateText.text       = "";
                }

                for (int i = 0; i < blockItemsColor.Count; i++)
                {
                    blockItemsColor[i].gameObject.SetActive(false);
                    blockItemsBg[i].gameObject.SetActive(false);
                }

                sizeText.text  = fileInfo.size > 0 ?   ToSizeStr(fileInfo.size) : "";
                stateText.text = "";
                timeText.text  = fileInfo.loadTime > 0 ?   ToTimeStr(fileInfo.loadTime) : "";
                return;
            }


            long speed = 0;

            if (downloadFile.state == DownloadFile.StateType.Loading)
            {
                speed         = downloadFile.loadedSize - preLoadedSize;
                preLoadedSize = downloadFile.loadedSize;
            }

            totalBar.localScale = new Vector3(downloadFile.progress, 1, 1);
            rateText.text       = Mathf.Ceil(downloadFile.progress * 100) + "%";
            sizeText.text       = downloadFile.size <= 0 ? "" : string.Format("{0} / {1}", ToSizeStr(downloadFile.loadedSize), ToSizeStr(downloadFile.size));

            if (fileInfo.state == FileInfo.StateType.Complete)
            {
                stateText.text = "已完成";
            }
            else if (fileInfo.state == FileInfo.StateType.Complete)
            {
                stateText.text = "已暂停";
            }
            else if (downloadFile.state == DownloadFile.StateType.Loading)
            {
                stateText.text = ToSizeStr(speed) + "/S";
            }
            else if (fileInfo.state == FileInfo.StateType.Queue)
            {
                stateText.text = "队列中";
            }
            else
            {
                stateText.text = "";
            }

            if (downloadFile.state == DownloadFile.StateType.Loading)
            {
                if (speed > 0)
                {
                    leftTime = (downloadFile.size - downloadFile.loadedSize) / speed;
                }
                timeText.text = string.Format("{0} / {1}", ToTimeStr(fileInfo.loadTime), speed > 0 ? ToTimeStr(leftTime) : "--:--:--");
            }
            else if (fileInfo.loadTime > 0)
            {
                timeText.text = string.Format("{0}", ToTimeStr(fileInfo.loadTime));
            }
            else
            {
                timeText.text = "";
            }


            RectTransform blockItemBg;
            RectTransform blockItemColor;

            for (int i = 0; i < downloadFile.blockList.Count; i++)
            {
                if (i < blockItemsColor.Count)
                {
                    blockItemColor = blockItemsColor[i];
                    blockItemBg    = blockItemsBg[i];
                }
                else
                {
                    blockItemBg = (RectTransform)GameObject.Instantiate(blockPrefabBg.gameObject).transform;
                    blockItemBg.SetParent(blockContainer, false);
                    blockItemsBg.Add(blockItemBg);
                    blockItemBg.SetAsFirstSibling();


                    blockItemColor = (RectTransform)GameObject.Instantiate(blockPrefabColor.gameObject).transform;
                    blockItemColor.SetParent(blockContainer, false);
                    blockItemsColor.Add(blockItemColor);
                    blockItemColor.SetAsLastSibling();
                }

                float b = downloadFile.size <= 0 ? 0 :  downloadFile.blockList[i].begin * 1f / downloadFile.size;
                float w = downloadFile.size <= 0 ? 0 : (downloadFile.blockList[i].end - downloadFile.blockList[i].begin) * 1f / downloadFile.size;
                b *= blockTotalWidth;
                w *= blockTotalWidth;

                blockItemBg.anchoredPosition = blockItemColor.anchoredPosition = new Vector2(b, blockItemColor.anchoredPosition.y);
                blockItemBg.sizeDelta        = blockItemColor.sizeDelta = new Vector2(w, blockItemColor.sizeDelta.y);
                blockItemColor.localScale    = new Vector3(downloadFile.blockList[i].progress, 1, 1);
                if (!blockItemColor.gameObject.activeSelf)
                {
                    blockItemColor.gameObject.SetActive(true);
                }
                if (!blockItemBg.gameObject.activeSelf)
                {
                    blockItemBg.gameObject.SetActive(true);
                }
            }

            for (int i = downloadFile.blockList.Count; i < blockItemsColor.Count; i++)
            {
                blockItemsColor[i].gameObject.SetActive(false);
                blockItemsBg[i].gameObject.SetActive(false);
            }
        }
        void Awake()
        {
            _install = this;

            dict.Add(".psd", 11);
            dict.Add(".jpg", 12);
            dict.Add(".gif", 13);
            dict.Add(".png", 14);
            dict.Add(".bmp", 15);
            dict.Add(".tga", 16);
            dict.Add(".ico", 17);
            dict.Add(".hdr", 18);
            dict.Add(".raw", 19);
            dict.Add(".pdf", 20);
            dict.Add(".txt", 21);
            dict.Add(".doc", 22);
            dict.Add(".rtf", 23);
            dict.Add(".odt", 24);
            dict.Add(".sub", 25);
            dict.Add(".unx", 26);
            dict.Add(".ort", 27);
            dict.Add(".chm", 28);
            dict.Add(".wpd", 29);
            dict.Add(".mp3", 30);
            dict.Add(".wav", 31);
            dict.Add(".aac", 32);
            dict.Add(".flac", 33);
            dict.Add(".cda", 34);
            dict.Add(".midi", 35);
            dict.Add(".rmf", 36);
            dict.Add(".ogg", 37);
            dict.Add(".voc", 38);
            dict.Add(".wma", 39);
            dict.Add(".qt", 40);
            dict.Add(".flv", 41);
            dict.Add(".mp4", 42);
            dict.Add(".avi", 43);
            dict.Add(".3gp", 44);
            dict.Add(".mpg", 45);
            dict.Add(".mkv", 46);
            dict.Add(".mov", 47);
            dict.Add(".asf", 48);
            dict.Add(".vob", 49);
            dict.Add(".fb2", 50);
            dict.Add(".djvu", 51);
            dict.Add(".mobi", 52);
            dict.Add(".epub", 53);
            dict.Add(".iw4", 54);
            dict.Add(".prc", 55);
            dict.Add(".chm2", 56);
            dict.Add(".tcr", 57);
            dict.Add(".ebk", 58);
            dict.Add(".azw", 59);
            dict.Add(".zip", 60);
            dict.Add(".rar", 61);
            dict.Add(".iso", 62);
            dict.Add(".jar", 63);
            dict.Add(".tar", 64);
            dict.Add(".ace", 65);
            dict.Add(".lzh", 66);
            dict.Add(".arj", 67);
            dict.Add(".cab", 68);
            dict.Add(".zoo", 69);
            dict.Add(".js", 70);
            dict.Add(".htm", 71);
            dict.Add(".css", 72);
            dict.Add(".xml", 73);
            dict.Add(".mht", 74);
            dict.Add(".psp", 75);
            dict.Add(".eml", 76);
            dict.Add(".php", 77);
            dict.Add(".java", 78);
            dict.Add(".py", 79);
            dict.Add(".ini", 80);
            dict.Add(".sys", 81);
            dict.Add(".key", 82);
            dict.Add(".ppt", 83);
            dict.Add(".nfo", 84);
            dict.Add(".xls", 85);
            dict.Add(".csv", 86);
            dict.Add(".cab2", 87);
            dict.Add(".mdb", 88);
            dict.Add(".com", 89);
            dict.Add(".swf", 90);
            dict.Add(".exe", 91);
            dict.Add(".dat", 92);
            dict.Add(".hlp", 93);
            dict.Add(".dll", 94);
            dict.Add(".faq", 95);
            dict.Add(".rss", 96);
            dict.Add(".fon", 97);
            dict.Add(".ttf", 98);
            dict.Add(".otf", 99);
        }