using UnityEngine; using System.Collections; using System.Collections.Generic; using GCGame.Table; using System; using Games.GlobeDefine; public class LoadingTips : UIControllerBase { public enum LoadTipType { Reconnect, ResDownloading, } private void OnEnable() { SetInstance(this); } private void OnDisable() { SetInstance(null); } private void Update() { LoadUIUpdate(); } public void Close() { UIManager.CloseUI(UIInfo.LoadingTips); } public static void ShowLoadingTips(LoadTipType loadTipType) { _DefaultShowUI = true; if (LoadingTips.Instance()) { LoadingTips.Instance().InitLoadTips(loadTipType); return; } UIManager.ShowUI(UIInfo.LoadingTips, delegate (bool bSucess, object param) { if (bSucess) { if (!_DefaultShowUI) { HideLoadingTips(); } else { LoadingTips.Instance().InitLoadTips(loadTipType); } } }); } public static void HideLoadingTips() { _DefaultShowUI = false; if (!LoadingTips.Instance()) { return; } LoadingTips.Instance().Close(); } #region public static bool _DefaultShowUI = false; public GameObject _EffectReconnectPrefab; public GameObject _EffectResLoadingPrefab; private GameObject _EffectReconnectInstance; private GameObject _EffectResLoadingInstance; private void InitEffect() { if (_EffectReconnectInstance == null) { _EffectReconnectInstance = GameObject.Instantiate(_EffectReconnectPrefab); _EffectReconnectInstance.transform.SetParent(transform); _EffectReconnectInstance.transform.localScale = Vector3.one; _EffectReconnectInstance.AddComponent(); } if (_EffectResLoadingInstance == null) { _EffectResLoadingInstance = GameObject.Instantiate(_EffectResLoadingPrefab); _EffectResLoadingInstance.transform.SetParent(transform); _EffectResLoadingInstance.transform.localScale = Vector3.one; _EffectResLoadingInstance.AddComponent(); } } public void InitLoadTips(LoadTipType loadTipType) { InitEffect(); if (loadTipType == LoadTipType.Reconnect) { _EffectReconnectInstance.gameObject.SetActive(true); _EffectResLoadingInstance.gameObject.SetActive(false); } else if (loadTipType == LoadTipType.ResDownloading) { _EffectReconnectInstance.gameObject.SetActive(false); _EffectResLoadingInstance.gameObject.SetActive(true); } } #endregion #region loading ui public class LoadingUIInfo { public string UIName; public float StartTime; } static LoadingUIInfo _LoadingUI = null; public static float _LoadingTimeLimit = 5.0f; public static void LoadingUI(string uiName) { GuiTextDebug.debug("LoadingUI:" + uiName); if (_LoadingUI != null) return; _LoadingUI = new LoadingUIInfo(); _LoadingUI.UIName = uiName; _LoadingUI.StartTime = Time.time; if (_LoadingTimeLimit < 0) { _LoadingTimeLimit = SystemParam.GetSystemParam_FLOAT(39); } ShowLoadingTips(LoadTipType.ResDownloading); } public static void LoadingUIFinish(string uiName) { _LoadingUI = null; HideLoadingTips(); } private void LoadUIUpdate() { if (_LoadingUI == null) return; if (Time.time - _LoadingUI.StartTime > _LoadingTimeLimit) { GUIData.AddNotifyData("#{23007}"); _LoadingUI = null; HideLoadingTips(); } } #endregion }