示例#1
0
        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);
        }
示例#2
0
        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();
        }
示例#3
0
 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);
 }
示例#4
0
        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);
        }
示例#5
0
        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);
        }