Esempio n. 1
0
    public void ClosePanel(UIPanelTypes panelType)
    {
        BasePanel bp = GetBasePanel(panelType);

        if (panelDict.Contains(bp))
        {
            while (true)
            {
                bp = panelStack.Pop();
                bp.OnBeforeClose();
                bp.OnClose();
                if (bp.panelInfo.UIPanelType == panelType)
                {
                    panelDict.Remove(bp);
                    bp.DestoryMyself();
                    break;
                }
                panelDict.Remove(bp);
                bp.DestoryMyself();
            }
            if (panelStack.Count >= 1)
            {
                bp = panelStack.Peek();
                bp.OnResume();
            }
        }
    }
Esempio n. 2
0
    public void OpenPanel(UIPanelTypes panelType)
    {
        BasePanel bp = null;
        PanelInfo pi = null;

        if (panelStack.Count > 0)
        {
            bp = panelStack.Peek();
            bp.OnPause();
        }
        if (panelDict.Contains(GetBasePanel(panelType)))
        {
            bp = GetBasePanel(panelType);
            panelStack.Push(bp);
            bp.OnShow();
        }
        else
        {
            pi = GetPanelInfo(panelType);
            if (pi == null)
            {
                Debug.LogError(panelType + ":无法打开此前页面");
                return;
            }
            GameObject instPanel = GameObject.Instantiate(Resources.Load(pi.PanelPath)) as GameObject;
            instPanel.transform.SetParent(CanvasTransform, false);
            BasePanel bw = instPanel.GetComponent <BasePanel>();
            bw.Copy(pi);
            panelDict.Add(bw);
            panelStack.Push(bw);
            bw.OnBeforeEnter();
            bw.OnEnter();
        }
    }
Esempio n. 3
0
    /// <summary>
    /// Disables all the UI Panels and enables the given one.
    /// </summary>
    /// <param name="panelType"></param>
    private void SwitchPanelTo(UIPanelTypes panelType)
    {
        // Todo: Improve this, maybe replace uipaneltypes with the actual type
        LobbyPanel panel = null;

        for (int i = 0; i < _LobbyPanels.Length; i++)
        {
            if (_LobbyPanels[i].panelType == panelType)
            {
                panel = _LobbyPanels[i];
                panel.gameObject.SetActive(true);
                break;
            }
        }

        if (!panel.isOverlay)
        {
            for (int i = 0; i < _LobbyPanels.Length; i++)
            {
                if (_LobbyPanels[i].panelType != panelType)
                {
                    _LobbyPanels[i].gameObject.SetActive(false);
                }
            }
        }
    }
Esempio n. 4
0
 public PanelInfo GetPanelInfo(UIPanelTypes uiWindowType)
 {
     foreach (var item in panelinfoList)
     {
         if (item.UIPanelType == uiWindowType)
         {
             return(item);
         }
     }
     return(null);
 }
Esempio n. 5
0
 /// <summary>
 /// 通过UIWindowType获取WindowInfo
 /// </summary>
 /// <param name="uiWindowType">窗体类型</param>
 /// <returns>该窗体的信息</returns>
 public BasePanel GetBasePanel(UIPanelTypes uiWindowType)
 {
     foreach (var item in panelDict)
     {
         if (item.panelInfo.UIPanelType == uiWindowType)
         {
             return(item);
         }
     }
     return(null);
 }
        public void ClosePanel(UIPanelTypes panel)
        {
            var panelHolder = uiPanels.FirstOrDefault(x => x.type == panel);

            panelHolder.uiPanel.SetActive(false);

            if (previousUIPanelController)
            {
                previousUIPanelController.OpenPanel();
                currentUIPanelController  = previousUIPanelController;
                previousUIPanelController = null;
            }
        }
Esempio n. 7
0
        public void OpenPanel(UIPanelTypes panel, bool isCache = false)
        {
            var panelHolder = uiPanels.FirstOrDefault(x => x.type == panel);

            panelHolder.uiPanel.SetActive(true);
            var controller = panelHolder.uiPanel.GetComponent <GenericUIPanelController>();

            if (isCache)
            {
                previousUIPanelController = currentUIPanelController;
            }
            currentUIPanelController = controller;
        }
Esempio n. 8
0
    public void HidePanel(UIPanelTypes uiWindowType)
    {
        BasePanel bp = GetBasePanel(uiWindowType);

        if (panelDict.Contains(bp))
        {
            while (true)
            {
                bp = panelStack.Pop();
                bp.OnConceal();
                if (bp.panelInfo.UIPanelType == uiWindowType)
                {
                    break;
                }
            }
            if (panelStack.Count >= 1)
            {
                bp = panelStack.Peek();
                bp.OnResume();
            }
        }
    }
Esempio n. 9
0
 /// <summary>
 /// Fires the OpenUIPanelEvent to which the UIManager listens in order to switch UI Panels.
 /// </summary>
 /// <param name="panel"></param>
 protected void OpenUIPanel(UIPanelTypes panel)
 {
     OpenUIPanelEvent(panel);
 }
Esempio n. 10
0
    public void OnPushPanel(string panelTypeString)
    {
        UIPanelTypes panelType = (UIPanelTypes)System.Enum.Parse(typeof(UIPanelTypes), panelTypeString);

        UIManager.Instance.OpenPanel(panelType);
    }