public static bool Pop(string identifier) { BaseUIMenu menu = null; for (int i = 0; i <= (int)eUILayer.AlwaysOnTop && menu == null; ++i) { menu = OpenedUIStack[i].Find((x) => x.UIIdentifier == identifier); } return(menu != null?PopSelf(menu) : false); }
public static void PopTop(eUILayer layer) { if (OpenedUIStack[(int)layer].Count <= 0) { return; } var layerGroup = OpenedUIStack[(int)layer]; BaseUIMenu menu = layerGroup[layerGroup.Count - 1]; menu.Pop(); }
public static void AddUIToCache(BaseUIMenu menu) { if (menu.UIIdentifier == null) { menu.UIIdentifier = menu.name; } if (!UICached.ContainsKey(menu.UIIdentifier)) { UICached[menu.UIIdentifier] = new Stack <BaseUIMenu>(); } UICached[menu.UIIdentifier].Push(menu); menu.gameObject.SetActive(false); }
public static bool PopSelf(BaseUIMenu menu, bool destroy = false) { if (OpenedUIStack[(int)menu.UILayer].Count <= 0) { return(true); } var layerGroup = OpenedUIStack[(int)menu.UILayer]; var index = layerGroup.FindIndex((x) => x == menu); if (index >= 0) { if (menu.UILayer == eUILayer.Menu) { AFramework.Analytics.TrackingManager.I.TrackMenuActiveTime(menu.UIIdentifier, menu.MenuActiveTime); } layerGroup.RemoveAt(index); if (destroy) { Destroy(menu.gameObject); } else { menu.gameObject.SetActive(false); UICached[menu.UIIdentifier].Push(menu); } if (EventOnMenuPopped != null) { EventOnMenuPopped(menu); } return(true); } return(false); }
public static BaseUIMenu Push(string identifier, object[] initParams) { TryCacheUI(identifier); BaseUIMenu menu = UICached[identifier].Pop(); if (menu.UILayer == eUILayer.Menu && OpenedUIStack[(int)eUILayer.Popup].Count > 0) { PopAllLayer(eUILayer.Popup); } menu.gameObject.SetActive(true); OpenedUIStack[(int)menu.UILayer].Add(menu); menu.Init(initParams); menu.ResetActiveTime(); menu.transform.SetAsLastSibling(); if (EventOnMenuPushed != null) { EventOnMenuPushed(menu); } return(menu); }