Esempio n. 1
0
        private void OnHideUI(UIInfoData uiInfo, DelOnCompleteHideUI onComplete = null)
        {
            if (!_showUIDic.ContainsKey(uiInfo.UIID))
            {
                return;
            }
            int uiid = uiInfo.UIID;

            // 委托不为空等待逻辑执行完成后再隐藏UI
            if (null != onComplete)
            {
                onComplete += delegate
                {
                    _showUIDic.Remove(uiInfo.UIID);
                    if (uiInfo.CoreData.IsDestoryOnClosed && _allUIDic.ContainsKey(uiid))
                    {
                        _allUIDic.Remove(uiInfo.UIID);
                    }
                };
                _showUIDic[uiid].HideUI(onComplete);
            }
            else
            {
                _showUIDic[uiid].HideUI();
                _showUIDic.Remove(uiInfo.UIID);
                if (uiInfo.CoreData.IsDestoryOnClosed && _allUIDic.ContainsKey(uiid))
                {
                    _allUIDic.Remove(uiInfo.UIID);
                }
            }
        }
 public override void HideUI(DelOnCompleteHideUI onComplete = null)
 {
     HideAnimation(delegate
     {
         base.HideUI(onComplete);
         Debug.Log("Animation is over!");
     });
 }
Esempio n. 3
0
        /// <summary>
        /// 按照UI的核心策略,隐藏或者销毁UI
        /// </summary>
        /// <param name="onComplete"></param>

        public virtual void HideUI(DelOnCompleteHideUI onComplete = null)
        {
            if (infoData.CoreData.IsDestoryOnClosed)
            {
                if (null != onComplete)
                {
                    onComplete();
                }
                DestoryUI();
            }
            else
            {
                HideDirectly();
                if (null != onComplete)
                {
                    onComplete();
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 关闭UI,根据导航策略采取不同关闭行为
        /// </summary>
        /// <param name="uiInfo"></param>
        /// <param name="onComplete"></param>
        public static void CloseUI(UIInfoData uiInfo, DelOnCompleteHideUI onComplete = null)
        {
            if (null == uiInfo || CoreGlobeVar.INVAILD_UIID == uiInfo.UIID)
            {
                return;
            }
            switch (uiInfo.CoreData.NavigationMode)
            {
            case UINavigationMode.NormalNavigation:
                UIManager._instance.OnCloseReturnUI(uiInfo);
                break;

            case UINavigationMode.IngoreNavigation:
                UIManager._instance.OnHideUI(uiInfo, onComplete);
                break;

            default:
                break;
            }
        }
Esempio n. 5
0
        private void OnCloseReturnUI(UIInfoData uiInfo, DelOnCompleteHideUI onComplete = null)
        {
            if (!_showUIDic.ContainsKey(uiInfo.UIID))
            {
                return;
            }
            // 没有导航数据使用前置UI的Infodata导回去
            if (0 == _backSequenceStack.Count)
            {
                if (null == _curNavUIBase)
                {
                    return;
                }
                UIInfoData preUIInfo = _curNavUIBase.PreUIInfo;
                if (null != preUIInfo)
                {
                    if (null == onComplete)
                    {
                        onComplete = delegate { OnShowUI(preUIInfo); };
                    }
                    else
                    {
                        onComplete += delegate { OnShowUI(preUIInfo); };
                    }
                    OnHideUI(uiInfo, onComplete);
                }
                return;
            }
            // 有导航数据
            NavigationData uiReturnInfo = _backSequenceStack.Peek();

            if (null != uiReturnInfo)
            {
                int willShowUIID = uiReturnInfo.HideTargetUI.infoData.UIID;
                if (uiInfo.UIID != willShowUIID)
                {
                    return;
                }
                if (!_showUIDic.ContainsKey(willShowUIID))
                {
                    return;
                }
                DelOnCompleteHideUI tmpDel = delegate
                {
                    int siblingIndex = 0;
                    foreach (int backId in uiReturnInfo.BackShowTargetsList)
                    {
                        if (_showUIDic.ContainsKey(backId))
                        {
                            continue;
                        }
                        if (!_allUIDic.ContainsKey(backId))
                        {
                            if (null == NavBackUIReload(backId, siblingIndex + 1))
                            {
                                continue;
                            }
                        }
                        _allUIDic[backId].ReShowUI();
                        _showUIDic[backId] = _allUIDic[backId];
                        siblingIndex       = _showUIDic[backId].Trans.GetSiblingIndex();
                    }
                    _allUIDic.TryGetValue(uiReturnInfo.BackShowTargetsList[uiReturnInfo.BackShowTargetsList.Count - 1], out _curNavUIBase);
                    _backSequenceStack.Pop();
                };
                if (null == onComplete)
                {
                    onComplete = tmpDel;
                }
                else
                {
                    onComplete += tmpDel;
                }
                OnHideUI(uiInfo, onComplete);
            }
            ReShowHiddenAllCache();
        }
Esempio n. 6
0
 /// <summary>
 /// 经过反向导航栈然后关闭隐藏UI
 /// </summary>
 /// <param name="uiInfo"></param>
 public static void CloseReturnUI(UIInfoData uiInfo, DelOnCompleteHideUI onComplete = null)
 {
     UIManager._instance.OnCloseReturnUI(uiInfo, onComplete);
 }