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