Ejemplo n.º 1
0
        private void ExitTransition(UITransitionMode mode)
        {
            // Analysis the filter view need to show
            List <UIType> curfilter = new List <UIType>();

            for (int i = blockViewlist.Count - 1; i >= 0; i--)
            {
                curfilter.Add(blockViewlist[i]);

                if (i == (blockViewlist.Count - (int)mode))
                {
                    break;
                }
            }

            //return to filter view
            for (int i = curfilter.Count; i > 0; i--)
            {
                if (curfilter[i - 1] != _viewStack.Peek().uiType)
                {
                    UIManager.Instance.GetUIByType(curfilter[i - 1], (v, p) => { v.OnEnter(); });
                }
            }

            // return to the view that come from
            if (!curfilter.Contains(_lastViewType) && !_lastViewType.Equals(UIType.None))
            {
                UIManager.Instance.GetUIByType(_lastViewType, (v, p) => { v.OnEnter(); });
            }
        }
Ejemplo n.º 2
0
        private void EnterTransition(UITransitionMode mode)
        {
            if (mode != UITransitionMode.None)
            {
                // Analysis the filter view need to keep
                List <UIType> filter = new List <UIType>();

                for (int i = 0; i < blockViewlist.Count; i++)
                {
                    if (i == (blockViewlist.Count - (int)mode))
                    {
                        break;
                    }

                    filter.Add(blockViewlist[i]);
                }

                // Exit all view that we don't need
                if (_viewStack.Count > 0)
                {
                    int viewStackCount = _viewStack.Count;
                    for (int i = 0; i < viewStackCount; i++)
                    {
                        //Debug.Log( uiType + " Exit UI type : " + _viewStack.Peek().uiType );
                        if (!filter.Contains(_viewStack.Peek().uiType))
                        {
                            //Debug.Log( uiType + " Exit UI type : " + _viewStack.Peek().uiType );
                            ViewBase v = _viewStack.Peek();
                            v.OnExit(false);
                        }
                        else
                        {
                            //Debug.Log( uiType + " Didn't Exit UI type : " + _viewStack.Peek().uiType );
                            break;
                        }
                    }
                }

                // if lost some filter ui, we need to get it back
                if (_viewStack.Count < filter.Count)
                {
                    int index = blockViewlist.IndexOf(_viewStack.Peek().uiType);

                    for (int i = blockViewlist.Count - 1; i >= 0; i--)
                    {
                        if (i > index)
                        {
                            UIManager.Instance.GetUIByType(blockViewlist[i], (v, p) => { v.OnEnter(); DebugUtils.Log(DebugUtils.Type.UI, string.Format("Add  " + blockViewlist[i])); });
                        }
                    }
                }
            }

            if (!_viewStack.Contains(this))
            {
                _viewStack.Push(this);
            }
            else
            {
                DebugUtils.LogError(DebugUtils.Type.UI, string.Format("Already has the same ui in viewStack!! UIType = {0}", uiType));
            }
        }