예제 #1
0
파일: UIManager.cs 프로젝트: Ycsm2015/Game4
        //显示(打开)UI窗体
        //功能:
        //1.根据UI窗体的名称,加载到“所有UI窗体”缓存集合中
        //2.根据不同的UI窗体的“显示模式”,分别作不同的加载处理
        public void ShowUIForm(string uiFormName)
        {
            BaseUIForm baseUIForm = null;           //UI窗体基类

            //参数检查
            if (string.IsNullOrEmpty(uiFormName))
            {
                return;
            }
            //根据UI窗体的名称,加载到“所有UI窗体”缓存集合中
            baseUIForm = LoadFormsToAllUIFormsCatch(uiFormName);
            if (baseUIForm == null)
            {
                return;
            }

            //判断是否清空“栈”结构体集合
            if (baseUIForm.CurrentUIType.IsClearReverseChange)
            {
                ClearStackArray();
            }
            //根据不同的UI窗体的显示模式,分别作不同的加载处理
            switch (baseUIForm.CurrentUIType.UIForms_ShowMode)
            {
            case UIFormShowMode.Normal:             //“普通显示”窗口模式
                //把当前窗体加载到“当前窗体”集合中
                LoadUIToCurrentCache(uiFormName);
                break;

            case UIFormShowMode.ReverseChange:      //需要“反向切换”窗口模式
                PushUIForm(uiFormName);
                break;

            case UIFormShowMode.HideOther:          //“隐藏其他”窗口模式
                ExitUIFormFromCacheAndShowOther(uiFormName);

                break;

            default:
                break;
            }
        }
예제 #2
0
파일: UIManager.cs 프로젝트: Ycsm2015/Game4
 private void PopUIForm()
 {
     if (_StaCurrentUIForms.Count >= 2)
     {
         /* 出栈逻辑 */
         BaseUIForm topUIForm = _StaCurrentUIForms.Pop();
         //出栈的窗体,进行隐藏处理
         topUIForm.Hiding();
         //出栈窗体的下一个窗体逻辑
         BaseUIForm nextUIForm = _StaCurrentUIForms.Peek();
         //下一个窗体“重新显示”处理
         nextUIForm.ReDisplay();
     }
     else if (_StaCurrentUIForms.Count == 1)
     {
         /* 出栈逻辑 */
         BaseUIForm topUIForm = _StaCurrentUIForms.Pop();
         //出栈的窗体,进行“隐藏”处理
         topUIForm.Hiding();
     }
 }
예제 #3
0
파일: UIManager.cs 프로젝트: Ycsm2015/Game4
        //UI窗体入栈
        //功能:
        //  1.判断栈里是否已经有窗体,有则“冻结”
        //  2.先判断“UI预设缓存集合”是否有指定的UI窗体,有则处理。
        //  3.指定UI窗体入“栈”
        private void PushUIForm(string uiFormName)
        {
            BaseUIForm baseUI;              //UI预设窗体

            //判断栈里是否已经有窗体,有则“冻结”
            if (_StaCurrentUIForms.Count > 0)
            {
                BaseUIForm topUIForm = _StaCurrentUIForms.Peek();
                topUIForm.Freeze();
            }

            //先判断“UI预设缓存集合”是否有指定的UI窗体,有则处理。
            _DicALLUIForms.TryGetValue(uiFormName, out baseUI);
            if (baseUI != null)
            {
                baseUI.Display();
            }
            else
            {
            }

            //指定UI窗体入“栈”
            _StaCurrentUIForms.Push(baseUI);
        }