// ******************************************************************** // ******************************************************************** #region Constructors // ******************************************************************** public DialoguePanelData(DialogueConversation _conversation, PanelState _startingState = PanelState.HIDDEN, PanelLimitOverride _limitOverride = PanelLimitOverride.REPLACE) : base(_startingState, _limitOverride) { conversation = _conversation; }
// ******************************************************************** // ******************************************************************** #region Constructors // ******************************************************************** public LoadingSpinnerPanelData(string _loadingText = "", PanelState _startingState = PanelState.HIDDEN, PanelLimitOverride _limitOverride = PanelLimitOverride.REPLACE) : base(_startingState, _limitOverride) { loadingText = _loadingText; }
// ******************************************************************** #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); }
// ******************************************************************** // ******************************************************************** #region Constructors // ******************************************************************** public PanelData(PanelState _startingState = PanelState.HIDDEN, PanelLimitOverride _limitOverride = PanelLimitOverride.REPLACE) { startingState = _startingState; limitOverride = _limitOverride; }