89 lines
2.2 KiB
C#
89 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using DG.Tweening;
|
|
|
|
namespace MMO
|
|
{
|
|
public class MMOUILoading : MMOUIBase
|
|
{
|
|
public Action DelInitOver;
|
|
public Action DelLoadOver;
|
|
|
|
[SerializeField] GameObject mGobFirstSign;
|
|
[SerializeField] Text mTxtProgress;
|
|
[SerializeField] Image mImgProgress;
|
|
|
|
private Text mTxtTip;
|
|
|
|
private Tweener mTween;
|
|
|
|
private bool mIsInitHanging = false;
|
|
|
|
private void Awake()
|
|
{
|
|
mTxtTip = mGobFirstSign.GetComponent<Text>();
|
|
}
|
|
|
|
public override void OnOpen()
|
|
{
|
|
base.OnOpen();
|
|
|
|
mGobFirstSign.SetActive(!MMOUserData.Instance.HasFirstLoaded);
|
|
|
|
mImgProgress.fillAmount = 0;
|
|
|
|
mTween = mImgProgress.DOFillAmount(UnityEngine.Random.Range(0.93f, 0.97f), MMOUserData.Instance.HasFirstLoaded ? 1 : 10);
|
|
mTween.onUpdate = UpdateText;
|
|
mTween.onComplete = OnInitOver;
|
|
}
|
|
|
|
public void FinishRest()
|
|
{
|
|
if (mTween != null)
|
|
{
|
|
mTween.onUpdate = null;
|
|
mTween.onComplete = null;
|
|
mTween.Kill();
|
|
}
|
|
|
|
mTween = mImgProgress.DOFillAmount(1, 0.5f);
|
|
mTween.onUpdate = UpdateText;
|
|
mTween.onComplete = OnLoadOver;
|
|
}
|
|
|
|
private void UpdateText()
|
|
{
|
|
mTxtProgress.text = string.Format("LOADING...{0:f0}%", Mathf.Clamp(mImgProgress.fillAmount * 100, 0, 100));
|
|
}
|
|
|
|
private void OnInitOver()
|
|
{
|
|
if (Application.internetReachability == NetworkReachability.NotReachable)
|
|
{
|
|
mGobFirstSign.SetActive(true);
|
|
mTxtTip.text = "Loading failed, please check the network";
|
|
mIsInitHanging = true;
|
|
return;
|
|
}
|
|
|
|
DelInitOver?.Invoke();
|
|
}
|
|
|
|
private void OnLoadOver()
|
|
{
|
|
DelLoadOver?.Invoke();
|
|
Close();
|
|
}
|
|
|
|
public void NotifyInitOver()
|
|
{
|
|
if (IsOpened && mIsInitHanging)
|
|
{
|
|
mGobFirstSign.SetActive(false);
|
|
DelInitOver?.Invoke();
|
|
}
|
|
}
|
|
}
|
|
} |