//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, September 05, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
|
namespace Snxxz.UI
|
{
|
|
public class LaunchWin : Window
|
{
|
[SerializeField] UIAlphaTween m_AlphaTween;
|
[SerializeField] Image m_BackGround;
|
[SerializeField] RectTransform m_AndroidProgressContainer;
|
[SerializeField] SmoothSlider m_PartProgressSlider;
|
[SerializeField] SmoothSlider m_TotalProgressSlider;
|
[SerializeField] Text m_StageDescription;
|
[SerializeField] RectTransform m_IosProgressContainer;
|
[SerializeField] Text m_IosProgressTip;
|
[SerializeField] Text m_BuildTime;
|
[SerializeField] Text m_Version;
|
[SerializeField] Button m_UserHelp;
|
|
bool assetBuildTimeShowed = false;
|
|
Launch.LaunchStage showStage = Launch.LaunchStage.None;
|
int showStep = 0;
|
string stepDescription = string.Empty;
|
|
float backGroundTimer = 0f;
|
int backGroundIndex = 0;
|
List<Sprite> backGrounds = new List<Sprite>();
|
|
#region Built-in
|
protected override void BindController()
|
{
|
if (Application.isEditor)
|
{
|
var sprite = BuiltInLoader.LoadSprite("Launch_1");
|
m_BackGround.overrideSprite = sprite;
|
}
|
else
|
{
|
for (var i = 0; i < 3; i++)
|
{
|
var sprite = BuiltInLoader.LoadSprite(StringUtility.Contact("Launch_", i + 1));
|
if (sprite != null)
|
{
|
backGrounds.Add(sprite);
|
}
|
}
|
|
m_BackGround.overrideSprite = backGrounds[0];
|
}
|
}
|
|
protected override void AddListeners()
|
{
|
if (m_UserHelp)
|
{
|
m_UserHelp.SetListener(OpenUserHelp);
|
}
|
}
|
|
protected override void OnPreOpen()
|
{
|
backGroundTimer = 0f;
|
backGroundIndex = 0;
|
if (m_TotalProgressSlider != null)
|
{
|
m_TotalProgressSlider.ResetValue(0f);
|
}
|
|
m_AlphaTween.SetStartState();
|
|
m_Version.text = StringUtility.Contact(VersionConfig.Get().version, "_", VersionConfig.Get().buildIndex);
|
m_BuildTime.text = VersionConfig.Get().debugVersion ? VersionConfig.Get().buildTime : "";
|
|
if (m_UserHelp)
|
{
|
var appId = VersionConfig.Get().appId;
|
var branch = VersionConfig.Get().branch;
|
m_UserHelp.gameObject.SetActive(ContactConfig.GetConfig(appId, branch) != null);
|
}
|
|
if (Application.platform == RuntimePlatform.IPhonePlayer)
|
{
|
m_AndroidProgressContainer.gameObject.SetActive(false);
|
m_IosProgressContainer.gameObject.SetActive(true);
|
}
|
else
|
{
|
m_AndroidProgressContainer.gameObject.SetActive(true);
|
m_IosProgressContainer.gameObject.SetActive(false);
|
}
|
|
if (m_StageDescription != null)
|
{
|
m_StageDescription.text = GetLaunchStageDescription(showStage, showStep);
|
}
|
|
UpdateProgress();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
}
|
|
protected override void OnAfterClose()
|
{
|
|
}
|
|
protected override void OnActived()
|
{
|
base.OnActived();
|
|
if (m_TotalProgressSlider == null)
|
{
|
m_TotalProgressSlider = this.GetComponentInChildren<SmoothSlider>(true);
|
}
|
}
|
|
#endregion
|
|
public void FadeOut()
|
{
|
m_AlphaTween.Play();
|
}
|
|
string GetLaunchStageDescription(Launch.LaunchStage _stage, int step)
|
{
|
switch (_stage)
|
{
|
case Launch.LaunchStage.SDKInit:
|
return Language.GetFromLocal(36);
|
case Launch.LaunchStage.AssetCopy:
|
return StringUtility.Contact(Language.GetFromLocal(37), "(", step, ")");
|
case Launch.LaunchStage.AssetDecompress:
|
return StringUtility.Contact(Language.GetFromLocal(38), "(", step, ")");
|
case Launch.LaunchStage.ClientVersion:
|
return Language.GetFromLocal(39);
|
case Launch.LaunchStage.CheckAsset:
|
return Language.GetFromLocal(40);
|
case Launch.LaunchStage.DownLoad:
|
return Language.GetFromLocal(41);
|
case Launch.LaunchStage.AssetBundleInit:
|
return Language.GetFromLocal(42);
|
case Launch.LaunchStage.ConfigInit:
|
return StringUtility.Contact(Language.GetFromLocal(43), "(", step, ")");
|
case Launch.LaunchStage.Complete:
|
return Language.GetFromLocal(44);
|
default:
|
return "";
|
}
|
}
|
|
protected override void LateUpdate()
|
{
|
base.LateUpdate();
|
|
UpdateProgress();
|
|
backGroundTimer += Time.deltaTime;
|
if (backGroundTimer >= 3f)
|
{
|
backGroundTimer = 0f;
|
if (backGrounds.Count > 1)
|
{
|
m_BackGround.overrideSprite = backGrounds[(++backGroundIndex) % backGrounds.Count];
|
}
|
}
|
}
|
|
private void OpenUserHelp()
|
{
|
WindowCenter.Instance.OpenFromLocal<UserHelpWin>();
|
}
|
|
private void UpdateProgress()
|
{
|
if (Application.platform == RuntimePlatform.IPhonePlayer)
|
{
|
m_IosProgressContainer.gameObject.SetActive(Launch.progressInfo.stage != Launch.LaunchStage.DownLoad);
|
var remainder = ((int)Time.time) % 3;
|
var dot = remainder == 0 ? "." : remainder == 1 ? ".." : "...";
|
m_IosProgressTip.text = StringUtility.Contact(Language.GetFromLocal(30), dot);
|
}
|
else
|
{
|
var progressInfo = Launch.progressInfo;
|
|
if (progressInfo.stage == Launch.LaunchStage.DownLoad)
|
{
|
if (m_PartProgressSlider != null && m_PartProgressSlider.gameObject.activeInHierarchy)
|
{
|
m_PartProgressSlider.gameObject.SetActive(false);
|
}
|
|
if (m_TotalProgressSlider != null && m_TotalProgressSlider.gameObject.activeInHierarchy)
|
{
|
m_TotalProgressSlider.gameObject.SetActive(false);
|
}
|
}
|
else
|
{
|
if (m_PartProgressSlider != null && !m_PartProgressSlider.gameObject.activeInHierarchy)
|
{
|
m_PartProgressSlider.gameObject.SetActive(true);
|
}
|
|
if (m_TotalProgressSlider != null && !m_TotalProgressSlider.gameObject.activeInHierarchy)
|
{
|
m_TotalProgressSlider.gameObject.SetActive(true);
|
}
|
|
if (m_TotalProgressSlider != null)
|
{
|
m_TotalProgressSlider.value = progressInfo.totalProgress;
|
}
|
|
if (m_PartProgressSlider != null)
|
{
|
m_PartProgressSlider.value = progressInfo.partProgress;
|
}
|
}
|
|
DisplayStageDescription(progressInfo.stage, progressInfo.step);
|
|
if (!assetBuildTimeShowed && AssetVersionUtility.assetsBuildTime != DateTime.MinValue)
|
{
|
assetBuildTimeShowed = true;
|
var totalMinute = (int)(AssetVersionUtility.assetsBuildTime - new DateTime(2018, 1, 1)).TotalMinutes;
|
m_Version.text = StringUtility.Contact(VersionConfig.Get().version, "_", VersionConfig.Get().buildIndex, "_", totalMinute.ToString());
|
}
|
}
|
|
}
|
|
private void DisplayStageDescription(Launch.LaunchStage stage, int step)
|
{
|
if (showStage != stage || showStep != step)
|
{
|
showStage = stage;
|
showStep = step;
|
if (m_StageDescription != null)
|
{
|
m_StageDescription.text = GetLaunchStageDescription(stage, step);
|
}
|
}
|
}
|
|
|
}
|
}
|
|
|
|
|
|