//-------------------------------------------------------- 
 | 
//    [Author]:           玩个游戏 
 | 
//    [  Date ]:           Tuesday, January 09, 2018 
 | 
//-------------------------------------------------------- 
 | 
  
 | 
using System; 
 | 
using System.Collections; 
 | 
using System.Collections.Generic; 
 | 
using UnityEngine; 
 | 
using UnityEngine.UI; 
 | 
  
 | 
    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; 
 | 
        [SerializeField] Transform awardObj; 
 | 
  
 | 
        float timer = 1f; 
 | 
  
 | 
        protected override void InitComponent() 
 | 
        { 
 | 
            m_Confirm.AddListener(Confirm); 
 | 
            m_Cancel.AddListener(Cancel); 
 | 
        } 
 | 
  
 | 
        protected override void OnPreOpen() 
 | 
        { 
 | 
            timer = 1f; 
 | 
            if (Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork) 
 | 
            { 
 | 
                DownLoadAndDiscompressTask.Instance.StartDownLoad(); 
 | 
            } 
 | 
  
 | 
            OnDownLoadStepChange(DownLoadAndDiscompressTask.Instance.step); 
 | 
  
 | 
            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) 
 | 
                { 
 | 
                    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; 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
  
 | 
        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(); 
 | 
        } 
 | 
  
 | 
    } 
 |