Example #1
0
 /// <summary>
 /// 处理退出选项
 /// </summary>
 private void ProcessQuitOptions(IntGroup viewGroup, QuitOptions options)
 {
     if (options.HasFlag(QuitOptions.LeaveStack))
     {
         ProcessLeaveStack(viewGroup);
     }
 }
Example #2
0
        /// <summary>
        /// 退出视图
        /// </summary>
        /// <param name="viewId">视图id</param>
        /// <param name="options">选项</param>
        /// <param name="callback">退出完成回调</param>
        public void Quit(int viewId, QuitOptions options = QuitOptions.None, Action callback = null)
        {
            ViewState state;

            if (_viewDic.TryGetValue(viewId, out state))
            {
                if (state.active)
                {
                    state.active     = false;
                    _viewDic[viewId] = state;

                    OnViewQuitStartEvent?.Invoke(viewId);

                    _uiModule?.Quit(viewId, () =>
                    {
                        callback?.Invoke();
                        _uiModule?.UnFocus(viewId);
                        OnViewQuitCompletedEvent?.Invoke(viewId);
                    }, options.HasFlag(QuitOptions.Destroy));
                }
                else
                {
                    callback?.Invoke();
                }
            }
            else
            {
                callback?.Invoke();
            }

            ProcessQuitOptions(IntGroup.Get(viewId), options);
        }
Example #3
0
        /// <summary>
        /// 转化选项
        /// </summary>
        private QuitOptions ToOptions(bool leaveStack, bool destroy)
        {
            QuitOptions result = QuitOptions.None;

            if (leaveStack)
            {
                result |= QuitOptions.LeaveStack;
            }
            if (destroy)
            {
                result |= QuitOptions.Destroy;
            }
            return(result);
        }
Example #4
0
        /// <summary>
        /// 退出所有视图
        /// </summary>
        /// <param name="options">选项</param>
        public void QuitAll(QuitOptions options = QuitOptions.None)
        {
            _tempQuitList.Clear();

            foreach (int id in _viewDic.Keys)
            {
                _tempQuitList.Add(id);
            }

            for (int i = 0; i < _tempQuitList.Count; i++)
            {
                Quit(_tempQuitList[i], QuitOptionsFilter(QuitOptions.LeaveStack, options), null);
            }

            if (options.HasFlag(QuitOptions.LeaveStack))
            {
                ResetStack();
            }
        }
Example #5
0
        /// <summary>
        /// 退出视图
        /// </summary>
        /// <param name="viewGroup">视图组</param>
        /// <param name="options">选项</param>
        /// <param name="callback">完成回调</param>
        public void Quit(IntGroup viewGroup, QuitOptions options = QuitOptions.None, Action callback = null)
        {
            int all  = viewGroup.Count;
            int done = 0;

            for (int i = 0; i < all; i++)
            {
                Quit(viewGroup[i], QuitOptionsFilter(QuitOptions.LeaveStack, options), () =>
                {
                    done++;
                    if (done >= all)
                    {
                        callback?.Invoke();
                    }
                });
            }

            ProcessQuitOptions(viewGroup, options);
        }
Example #6
0
        /// <summary>
        /// 退出所有视图
        /// 会有部分视图驻留
        /// </summary>
        /// <param name="stayViewGroup">驻留视图组</param>
        /// <param name="options">退出的视图选项</param>
        /// <param name="stayOptions">驻留的视图选项</param>
        public void QuitAll(IntGroup stayViewGroup, QuitOptions options = QuitOptions.None, StayOptions stayOptions = StayOptions.None)
        {
            _tempQuitList.Clear();

            foreach (int id in _viewDic.Keys)
            {
                if (!stayViewGroup.Contains(id))
                {
                    _tempQuitList.Add(id);
                }
            }

            for (int i = 0; i < _tempQuitList.Count; i++)
            {
                Quit(_tempQuitList[i], QuitOptionsFilter(QuitOptions.LeaveStack, options), null);
            }

            if (options.HasFlag(QuitOptions.LeaveStack))
            {
                ResetStack();
            }

            ProcessStayOptions(stayViewGroup, stayOptions);
        }
Example #7
0
 /// <summary>
 /// 退出所有视图
 /// 会有部分视图驻留
 /// </summary>
 /// <param name="stayViewId">驻留视图</param>
 /// <param name="options">退出的视图选项</param>
 /// <param name="stayOptions">驻留的视图选项</param>
 public void QuitAll(int stayViewId, QuitOptions options = QuitOptions.None, StayOptions stayOptions = StayOptions.None)
 {
     _module.QuitAll(stayViewId, options, stayOptions);
 }
Example #8
0
 /// <summary>
 /// 退出所有视图
 /// 会有部分视图驻留
 /// </summary>
 /// <param name="stayViewGroup">驻留视图组</param>
 /// <param name="options">退出的视图选项</param>
 /// <param name="stayOptions">驻留的视图选项</param>
 public void QuitAll(IntGroup stayViewGroup, QuitOptions options = QuitOptions.None, StayOptions stayOptions = StayOptions.None)
 {
     _module.QuitAll(stayViewGroup, options, stayOptions);
 }
Example #9
0
 /// <summary>
 /// 退出所有视图
 /// </summary>
 public void QuitAll(QuitOptions options = QuitOptions.None)
 {
     _module.QuitAll(options);
 }
Example #10
0
 /// <summary>
 /// 退出视图
 /// </summary>
 /// <param name="viewGroup">视图组</param>
 /// <param name="options">选项</param>
 /// <param name="callback">完成回调</param>
 public void Quit(IntGroup viewGroup, QuitOptions options = QuitOptions.None, Action callback = null)
 {
     _module.Quit(viewGroup, options, callback);
 }
Example #11
0
 /// <summary>
 /// 退出视图
 /// </summary>
 /// <param name="viewId">视图id</param>
 /// <param name="options">选项</param>
 /// <param name="callback">退出完成回调</param>
 public void Quit(int viewId, QuitOptions options = QuitOptions.None, Action callback = null)
 {
     _module.Quit(viewId, options, callback);
 }
Example #12
0
 /// <summary>
 /// 退出选项过滤器
 /// </summary>
 private QuitOptions QuitOptionsFilter(QuitOptions filter, QuitOptions src)
 {
     return(src & (~filter));
 }
Example #13
0
 /// <summary>
 /// 退出所有视图
 /// 会有部分视图驻留
 /// </summary>
 /// <param name="stayViewId">驻留视图</param>
 /// <param name="options">退出的视图选项</param>
 /// <param name="stayOptions">驻留的视图选项</param>
 public void QuitAll(int stayViewId, QuitOptions options = QuitOptions.None, StayOptions stayOptions = StayOptions.None)
 {
     QuitAll(IntGroup.Get(stayViewId), options, stayOptions);
 }