public GTWindow OpenWindow(EWindowID windowID) { if (!m_AllWindows.ContainsKey(windowID)) { return(null); } GTWindow window = m_AllWindows[windowID]; DealWindowStack(window, true); window.Show(); Transform trans = window.transform; if (trans == null) { return(null); } if (window.MaskType != EWindowMaskType.None) { GTEventCenter.FireEvent(GTEventID.TYPE_FORCE_STOPJOYSTICK); } if (window.ShowMode == EWindowShowMode.SaveTarget && m_MutexStacks.Count > 0) { GTWindow w = m_MutexStacks[m_MutexStacks.Count - 1]; window.TargetID = w.ID; } GTCameraManager.Instance.AddUI(trans.gameObject); if (m_OpenWindows.Contains(window) == false) { m_OpenWindows.Add(window); } RefreshDepth(window); DealMask(); return(window); }
void DealWindowStack(GTWindow win, bool open) { if (win.Type != EWindowType.WINDOW) { return; } if (open) { for (int i = 0; i < mOpenWinStack.Count; i++) { if (mOpenWinStack[i] != win) { mOpenWinStack[i].CacheTransform.gameObject.SetActive(false); } } mOpenWinStack.Add(win); } else { mOpenWinStack.Remove(win); if (mOpenWinStack.Count > 0) { GTWindow last = mOpenWinStack[mOpenWinStack.Count - 1]; last.CacheTransform.gameObject.SetActive(true); } } }
void DealMask() { GTWindow needBlackWindow = null; GTWindow needBlackTransparentWindow = null; GTWindow needWhiteTransparentWindow = null; GTWindow needBlurWindow = null; for (int i = 0; i < m_OpenWindows.Count; i++) { GTWindow w = m_OpenWindows[i]; switch (w.MaskType) { case EWindowMaskType.Black: FindMask(ref needBlackWindow, w); break; case EWindowMaskType.BlackTransparent: FindMask(ref needBlackTransparentWindow, w); break; case EWindowMaskType.WhiteTransparent: FindMask(ref needWhiteTransparentWindow, w); break; case EWindowMaskType.Blur: FindMask(ref needBlurWindow, w); break; } } LoadMask <MaskBlack>(needBlackWindow, "Guis/Mask/MaskBlack", ref m_Black); LoadMask <MaskBlackTransparent>(needBlackTransparentWindow, "Guis/Mask/MaskBlackTransparent", ref m_BlackTransparent); LoadMask <MaskWhiteTransparent>(needWhiteTransparentWindow, "Guis/Mask/MaskWhiteTransparent", ref m_WhiteTransparent); LoadMask <MaskBlur>(needBlurWindow, "Guis/Mask/MaskBlur", ref m_Blur); }
public GTWindow GetWindow(EWindowID windowID) { GTWindow window = null; m_AllWindows.TryGetValue(windowID, out window); return(window); }
void RefreshDepth(GTWindow window) { EWindowType type = window.Type; List <UIPanel> pList = new List <UIPanel>(); FindPanels(window, ref pList); List <UIPanel> aList = new List <UIPanel>(); for (int i = 0; i < m_OpenWindows.Count; i++) { if (m_OpenWindows[i].Type == type) { FindPanels(m_OpenWindows[i], ref aList); } } for (int i = aList.Count - 1; i >= 0; i--) { if (aList[i] == null || aList[i].transform == null) { aList.RemoveAt(i); } } if (pList.Count >= 2) { pList.Sort(UIPanel.CompareFunc); } int stDepth = m_MinDepths[type]; aList.ForEach(item => { stDepth = item.depth > stDepth ? item.depth : stDepth; }); pList.ForEach(item => { stDepth += 2; item.depth = stDepth; }); UIPanel.list.Sort(UIPanel.CompareFunc); }
private void OnBtnMaskClick(GameObject go) { if (m_TargetWindow != null && m_TargetWindow.OnMaskClick != null) { m_TargetWindow.OnMaskClick(); m_TargetWindow = null; } }
public void SetTargetWindow(GTWindow w) { if (w == null) { return; } this.m_TargetWindow = w; this.m_Panel.depth = m_TargetWindow.Panel.depth - 1; }
public T GetWindow <T>(EWindowID windowID) where T : GTWindow { GTWindow baseWindow = null; m_AllWindows.TryGetValue(windowID, out baseWindow); T window = (T)baseWindow; return(window); }
void FindPanels(GTWindow window, ref List <UIPanel> panels) { if (window == null || window.Panel == null) { return; } panels.AddRange(window.Panel.GetComponents <UIPanel>()); panels.AddRange(window.Panel.GetComponentsInChildren <UIPanel>()); }
public void SetParent(GTWindow parent) { if (transform == null) { return; } if (parent == null || parent.transform == null) { return; } transform.parent = parent.transform; HasParentWindow = true; }
public void HideWindow(EWindowID windowID) { GTWindow window = m_AllWindows[windowID]; if (window == null) { return; } window.HideAsync(); m_OpenWindows.Remove(window); DealWindowStack(window, false); DealMask(); }
void DealWindowStack(GTWindow win, bool open) { if (win.ShowMode != EWindowShowMode.HideOther) { return; } if (open) { if (m_MutexStacks.Count > 0) { GTWindow w = m_MutexStacks[m_MutexStacks.Count - 1]; for (int i = 0; i < m_OpenWindows.Count; i++) { if (m_OpenWindows[i].ShowMode == EWindowShowMode.SaveTarget && w.ID == m_OpenWindows[i].TargetID) { m_OpenWindows[i].SetActive(false); } if (m_OpenWindows[i].Type == EWindowType.Window && m_OpenWindows[i].ShowMode == EWindowShowMode.DoNothing) { m_OpenWindows[i].Hide(); } } w.SetActive(false); } m_MutexStacks.Add(win); } else { m_MutexStacks.Remove(win); if (m_MutexStacks.Count > 0) { GTWindow last = m_MutexStacks[m_MutexStacks.Count - 1]; last.SetActive(true); for (int i = 0; i < m_OpenWindows.Count; i++) { if (m_OpenWindows[i].ShowMode == EWindowShowMode.SaveTarget && m_OpenWindows[i].TargetID == last.ID) { m_OpenWindows[i].SetActive(true); } } } } }
void FindMask(ref GTWindow needWindow, GTWindow w) { if (w.IsVisable() == false) { return; } if (needWindow == null) { needWindow = w; } else { if (needWindow.Panel.depth < w.Panel.depth) { needWindow = w; } } }
private void Switch(Func func) { if (mSelectFunc == func) { return; } if (mSelectFunc != Func.Func_None) { EWindowID id = mFuncWindows[mSelectFunc]; GTWindowManager.Instance.CloseWindow(id); } mSelectFunc = func; if (mSelectFunc != Func.Func_None) { EWindowID newID = mFuncWindows[mSelectFunc]; GTWindow window = GTWindowManager.Instance.OpenWindow(newID); window.SetParent(this); } }
private void LoadLeftWindow(EBagType bagType) { if (bagType == mShow) { return; } if (mLeftWindows.ContainsKey(mShow)) { EWindowID closeWindowID = mLeftWindows[mShow]; GTWindowManager.Instance.CloseWindow(closeWindowID); } if (mLeftWindows.ContainsKey(bagType)) { EWindowID openWindowID = mLeftWindows[bagType]; GTWindow window = GTWindowManager.Instance.OpenWindow(openWindowID); window.SetParent(this); } mShow = bagType; }
public void CloseWindow(EWindowID windowID) { GTWindow window = mAllWindows[windowID]; if (window == null) { return; } EWindowType type = window.Type; window.Close(); List <GTWindow> list = null; mOpenWindows.TryGetValue(type, out list); if (list != null) { list.Remove(window); } DealWindowStack(window, false); }
void LoadMask <T>(GTWindow needWindow, string path, ref T mask) where T : MaskGUI { if (needWindow != null) { if (mask == null) { mask = GTResourceManager.Instance.Load <GameObject>(path, true).GetComponent <T>(); GTCameraManager.Instance.AddUI(mask.gameObject); } if (mask != null) { mask.gameObject.SetActive(true); mask.SetTargetWindow(needWindow); } } else { if (mask != null) { mask.gameObject.SetActive(false); } } }
public GTWindow OpenWindow(EWindowID windowID) { if (!mAllWindows.ContainsKey(windowID)) { return(null); } GTWindow window = mAllWindows[windowID]; DealWindowStack(window, true); window.Show(); Transform trans = window.CacheTransform; if (trans == null) { return(null); } if (window.Type == EWindowType.WINDOW) { CloseAllWindowByType(EWindowType.DIALOG); } if (window.Type == EWindowType.WINDOW || window.Type == EWindowType.DIALOG) { GTEventCenter.FireEvent(GTEventID.TYPE_STOP_JOYSTICK); } GTCameraManager.Instance.AddUI(trans.gameObject); List <GTWindow> list = null; mOpenWindows.TryGetValue(window.Type, out list); if (list == null) { list = new List <GTWindow>(); mOpenWindows[window.Type] = list; } list.Add(window); RefreshDepth(window); return(window); }
public override bool Check() { GTWindow window = GTWindowManager.Instance.GetWindow(WindowID); return(window == null ? false : window.IsVisable()); }
void RegisterWindow(EWindowID id, GTWindow win) { m_AllWindows[id] = win; win.ID = id; }