IEnumerator SwitchWndAsync(EWndID targetID, object uiData, EWndID[] arOriginID) { if (!IsUICaching(targetID)) { HideWndSync(arOriginID); if (targetID != EWndID.None && !IsUIShowing(targetID)) { UIWindow targetWnd = GetUIWnd(targetID); if (targetWnd != null) { m_ShowUIID.Add(targetID); targetWnd.PrepareShowUI(uiData); targetWnd.gameObject.SetActive(true); targetWnd.ReadyShowUI(uiData); //fufeng todo: check state to show loading or communicating... while (targetWnd.UIState != EUIState.Ready) { yield return(null); } } else { Debug.LogError("UI should be prepared: " + targetID); } } } }
IEnumerator PrepareWndAsync(EWndID uiID) { if (uiID != EWndID.None) { UIWindow uiWnd = GetUIWnd(uiID); if (uiWnd == null) { if (!IsUICaching(uiID)) { m_CacheUIID.Add(uiID); AsyncOperation asyncOp = SceneManager.LoadSceneAsync(uiID.ToString()); if (asyncOp != null) { while (!asyncOp.isDone) { yield return(null); } } this.m_CacheUIID.Remove(uiID); uiWnd = GetUIWnd(uiID); if (uiWnd != null) { uiWnd.gameObject.SetActive(false); } else { Debug.LogError("UI prepare failed: " + uiID); } } } } }
public static IEnumerator ShowUIAsync(EWndID showID, object exData, EWndID[] arHideID) { IEnumerator itor = uimanager.ShowWndAsync(showID, exData, arHideID); while (itor.MoveNext()) { yield return(null); } }
public UIWindow GetUIWnd(EWndID uiID) { if (uiID != EWndID.None && m_AllUIWnd.ContainsKey(uiID)) { return(m_AllUIWnd[uiID]); } return(null); }
public bool IsUIShowing(EWndID uiID) { if (uiID != EWndID.None && m_ShowUIID.Contains(uiID)) { return(true); } return(false); }
public bool IsUICaching(EWndID uiID) { if (uiID != EWndID.None && m_CacheUIID.Contains(uiID)) { return(true); } return(false); }
public static IEnumerator SwitchUIAsync(EWndID showID, object exData, EWndID hideID) { IEnumerator itor = uimanager.SwitchWndAsync(showID, exData, new EWndID[] { hideID }); while (itor.MoveNext()) { yield return(null); } }
public static IEnumerator PrepareUIAsync(EWndID showID) { IEnumerator itor = uimanager.PrepareWndAsync(showID); while (itor.MoveNext()) { yield return(null); } }
IEnumerator ShowWndAsync(EWndID showID, object exData, EWndID[] arHideID) { IEnumerator itor = PrepareWndAsync(showID); while (itor.MoveNext()) { yield return(null); } itor = SwitchWndAsync(showID, exData, arHideID); while (itor.MoveNext()) { yield return(null); } }
void HideWndSync(EWndID[] arHideID) { if (arHideID != null) { for (int i = 0; i < arHideID.Length; ++i) { EWndID hideID = arHideID[i]; if (hideID != EWndID.None && IsUIShowing(hideID)) { m_ShowUIID.Remove(hideID); UIWindow hideWnd = GetUIWnd(hideID); if (hideWnd != null) { hideWnd.gameObject.SetActive(false); hideWnd.AlreadyHideUI(); //fufeng todo: dynamic destroy ui wnd } } } } }
public static void ShowUISync(EWndID showID, object exData, EWndID[] arHideID) { uimanager.StartCoroutine(uimanager.ShowWndAsync(showID, exData, arHideID)); }
public static void ShowUISync(EWndID showID, object exData) { uimanager.StartCoroutine(uimanager.ShowWndAsync(showID, exData, null)); }
public static void HideUI(EWndID hideID) { uimanager.HideWndSync(new EWndID[] { hideID }); }