Beispiel #1
0
        // ********************************************************************


        // ********************************************************************
        #region Constructors
        // ********************************************************************
        public DialoguePanelData(DialogueConversation _conversation,
                                 PanelState _startingState         = PanelState.HIDDEN,
                                 PanelLimitOverride _limitOverride = PanelLimitOverride.REPLACE)
            : base(_startingState, _limitOverride)
        {
            conversation = _conversation;
        }
Beispiel #2
0
    // ********************************************************************


    // ********************************************************************
    #region Constructors
    // ********************************************************************
    public LoadingSpinnerPanelData(string _loadingText               = "",
                                   PanelState _startingState         = PanelState.HIDDEN,
                                   PanelLimitOverride _limitOverride = PanelLimitOverride.REPLACE)
        : base(_startingState, _limitOverride)
    {
        loadingText = _loadingText;
    }
Beispiel #3
0
    // ********************************************************************
    #endregion
    // ********************************************************************


    // ********************************************************************
    #region Public Methods
    // ********************************************************************
    public static Panel OpenPanel(Panel _prefab, PanelData _data = null)
    {
        if (_prefab == null)
        {
            Debug.LogError("OpenPanel() called with null prefab.");
            return(null);
        }

        string panelGroup = _prefab.group;

        if (_data != null && !_data.panelGroup.NullOrEmpty())
        {
            panelGroup = _data.panelGroup;
        }
        PanelLimitOverride limitOverride = _data != null ? _data.limitOverride : PanelLimitOverride.REPLACE;

        bool atLimit = (!panelGroup.NullOrEmpty() &&
                        instance.m_groupStacks.ContainsKey(panelGroup) &&
                        instance.m_groupStacks[panelGroup].Count > 0);

        // Hide existing panel if we are replacing it
        Panel hidingPanel = null;

        if (atLimit && limitOverride == PanelLimitOverride.REPLACE)
        {
            hidingPanel = instance.m_groupStacks[panelGroup].Front();
        }

        // If we are allowed to show this new panel, do so
        if (!atLimit || limitOverride != PanelLimitOverride.NONE)
        {
            Panel newPanel = Instantiate <GameObject>(_prefab.gameObject, instance.transform, false).GetComponent <Panel>();
            newPanel.name  = _prefab.name;
            newPanel.group = panelGroup;

            // Set sibling position (if no data, gets left where created - on top)
            if (_data != null)
            {
                switch (_data.siblingPosition)
                {
                case PanelData.SiblingPosition.TOP:
                {
                    newPanel.transform.SetAsLastSibling();
                    break;
                }

                case PanelData.SiblingPosition.BOTTOM:
                {
                    newPanel.transform.SetAsFirstSibling();
                    break;
                }

                case PanelData.SiblingPosition.SPECIFIED:
                {
                    newPanel.transform.SetSiblingIndex(_data.siblingIndex);
                    break;
                }

                default:
                    break;
                }
            }

            newPanel.Initialise(_data);
            if (!instance.m_activePanels.Empty())
            {
                instance.m_activePanels.Back().FocusChanged(false);
            }
            instance.m_activePanels.Add(newPanel);
            if (!instance.m_groupStacks.ContainsKey(panelGroup))
            {
                instance.m_groupStacks[panelGroup] = new List <Panel>();
            }

            if (atLimit && limitOverride == PanelLimitOverride.WAIT)
            {
                instance.m_groupStacks[panelGroup].Add(newPanel);
            }
            else
            {
                instance.m_groupStacks[panelGroup].AddAtFront(newPanel);
                instance.StartCoroutine(instance._OpenPanel(newPanel, hidingPanel));
            }

            //Debug.Log("Opening new panel: "+_prefab.name);
            return(newPanel);
        }

        return(null);
    }
Beispiel #4
0
    // ********************************************************************


    // ********************************************************************
    #region Constructors
    // ********************************************************************
    public PanelData(PanelState _startingState         = PanelState.HIDDEN,
                     PanelLimitOverride _limitOverride = PanelLimitOverride.REPLACE)
    {
        startingState = _startingState;
        limitOverride = _limitOverride;
    }