//--------------------------------------------------------
|
// [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();
|
}
|
|
}
|