private void Update_Update()
    {
        if (updateState == UpdateState.Updating)
        {
            frameCount++;
            if (frameCount % frameGap == 0)
            {
                long downloadedFileTotalSize = 0;
                foreach (DownloadItem di in m_DownloadItems)
                {
                    if (di != null)
                    {
                        downloadedFileTotalSize += di.GetCurrentLength();
                    }
                }

                SizeText.text = FileUtils.ByteToReadableFileSize(downloadedFileTotalSize) + "/" + m_FileListTotalSize_Readable;
                if (m_FileListTotalSize == 0)
                {
                    ProgressSlider.value = 0;
                    ProgressText.text    = "0%";
                }
                else
                {
                    float process = (float)downloadedFileTotalSize / m_FileListTotalSize;
                    ProgressSlider.value = process;
                    ProgressText.text    = string.Format("{0:F}", process * 100) + "%";
                }
            }
        }
    }
 public DownloadFileInfo(string filename, string filePath, string md5sum, long fileSize)
 {
     FileName         = filename;
     FilePath         = filePath;
     MD5              = md5sum;
     FileSize         = fileSize;
     FileReadableSize = FileUtils.ByteToReadableFileSize(fileSize);
 }
 void FinishedDownload()
 {
     GameNameText.text    = "Mech Storm (Ready)";
     updateState          = UpdateState.Finished;
     SizeText.text        = FileUtils.ByteToReadableFileSize(m_FileListTotalSize) + "/" + m_FileListTotalSize_Readable;
     ProgressSlider.value = 1;
     StageText.text       = "OK.";
     ProgressText.text    = "100%";
     UpdateCompleted      = true;
     FinishedExtract();
 }
示例#4
0
 private void Initialized()
 {
     GameNameText.text      = "Mech Storm";
     ClientVersionText.text = "Client Version:  " + ClientVersion;
     ServerVersionText.text = "Server Version: Unknown";
     StageText.text         = "Preparing...";
     SizeText.text          = FileUtils.ByteToReadableFileSize(0);
     ProgressSlider.value   = 0;
     ProgressText.text      = "0%";
     m_FileListInfos.Clear();
     m_DownloadItems.Clear();
     m_FileListTotalSize          = 0;
     m_FileListTotalSize_Readable = "0B";
     m_DownloadFileCount          = 0;
     StageText.color = TextDefaultColor;
 }
    IEnumerator GetFileSizeList()
    {
        WWW www_serverVersion = new WWW(m_ResourcesURL + "ServerVersion");

        yield return(www_serverVersion);

        if (www_serverVersion.error != null)
        {
            Debug.Log("Loading error:" + www_serverVersion.url + "\n" + www_serverVersion.error);
        }
        else
        {
            string content = www_serverVersion.text;
            string version = content.Split('\n')[0];
            ServerVersion          = version;
            ServerVersionText.text = "Server Version: " + version;
        }

        if (ServerVersion == ClientVersion)
        {
            StageText.text = "Checking resources...";
            updateState    = UpdateState.Checking;
        }

        WWW www_ignore = new WWW(m_ResourcesURL + ".downloadIgnore");

        yield return(www_ignore);

        if (www_ignore.error != null)
        {
            Debug.Log("Loading error:" + www_ignore.url + "\n" + www_ignore.error);
        }
        else
        {
            string   content = www_ignore.text;
            string[] lines   = content.Split('\n');
            foreach (string line in lines)
            {
                if (!string.IsNullOrEmpty(line))
                {
                    string fullFileName = line.TrimEnd('\n');
                    DownloadIgnoreFileList.Add(fullFileName);
                }
            }
        }

        WWW www = new WWW(m_ResourcesURL + "FileSizeList.txt");

        yield return(www);

        if (www.error != null)
        {
            Debug.Log("Loading error:" + www.url + "\n" + www.error);
        }
        else
        {
            string   content = www.text;
            string[] lines   = content.Split('\n');
            foreach (string line in lines)
            {
                if (!string.IsNullOrEmpty(line))
                {
                    if (m_FileSizeListRegex.IsMatch(line))
                    {
                        Match  match    = m_FileSizeListRegex.Match(line);
                        long   fileSize = long.Parse(match.Groups["size"].Value);
                        string filePath = match.Groups["filepath"].Value;
                        if (filePath.StartsWith("StreamingAssets/AssetBundle/"))
                        {
                            if (!filePath.StartsWith("StreamingAssets/AssetBundle/" + GetPlatformAbbr()))
                            {
                                continue;
                            }
                        }

                        string fileName     = match.Groups["filename"].Value;
                        string fileFullPath = filePath + fileName;
                        if (DownloadIgnoreFileList.Contains(fileFullPath))
                        {
                            continue;
                        }
                        string md5sum = match.Groups["md5"].Value.ToUpper();

                        if (DownloadFileMD5Sum.ContainsKey(fileFullPath))
                        {
                            string md5sum_local = DownloadFileMD5Sum[fileFullPath];
                            if (md5sum_local.Equals(md5sum))
                            {
                                continue;
                            }
                        }

                        m_FileListTotalSize += fileSize;
                        DownloadFileInfo fi = new DownloadFileInfo(fileName, filePath, md5sum, fileSize);
                        m_FileListInfos.Add(fi);
                    }
                }
            }

            m_FileListTotalSize_Readable = FileUtils.ByteToReadableFileSize(m_FileListTotalSize);
            m_DownloadFileCount          = m_FileListInfos.Count;
        }

        yield return(null);
    }