public void DispatchPopUp <T>(AbstractPopUpPanel.PopUpPanelData popUpPanelData, PopUpPriority popUpPriority = PopUpPriority.MediumPriority) where T : AbstractPopUpPanel { var popUpPrefab = popUpPrefabList.Find(item => item.GetType() == typeof(T)); if (popUpPrefab == null && defaultPopUpPrefab == null) { Debug.LogError("No defaultPopUpPrefab is set"); return; } AbstractPopUpPanel displayPanelPrefab = popUpPrefab ?? defaultPopUpPrefab; var scenePanelObject = availablePopUpObjects.Find(item => item.name == displayPanelPrefab.name); switch (popUpPriority) { case PopUpPriority.LowPriority: DisplayLowPriorityPopUp(popUpPanelData, displayPanelPrefab, scenePanelObject); break; case PopUpPriority.MediumPriority: DisplayMediumPriorityPopUp(popUpPanelData, displayPanelPrefab, scenePanelObject, popUpPriority); break; case PopUpPriority.HighPriority: DisplayHighPriorityPopUp(popUpPanelData, displayPanelPrefab, scenePanelObject, popUpPriority); break; } }
public void DispatchPopUp <T>(string title, string message, PopUpPriority popUpPriority = PopUpPriority.MediumPriority, AbstractUIPanel ownerPanel = null, AbstractPopUpPanel.OnUIButtonPressed confirmButtonPressedCallback = null, AbstractPopUpPanel.OnUIButtonPressed cancelButtonPressedCallback = null, params object[] data) where T : AbstractPopUpPanel { var popUpPanelData = new AbstractPopUpPanel.PopUpPanelData(); popUpPanelData.title = title; popUpPanelData.message = message; popUpPanelData.confirmButtonPressedCallback = confirmButtonPressedCallback; popUpPanelData.cancelButtonPressedCallback = cancelButtonPressedCallback; popUpPanelData.ownerPanel = ownerPanel; popUpPanelData.data = data; DispatchPopUp <T>(popUpPanelData, popUpPriority); }
private void AddToDataStack(AbstractPopUpPanel displayPanel, AbstractPopUpPanel.PopUpPanelData popUpPanelData, PopUpPriority popUpPriority) { popUpPanelData.displayPanel = displayPanel; // Add high priority to the front of the stack of incoming priority is high priority if (popUpPriority == PopUpPriority.HighPriority) { popUpDataStack.AddFirst(popUpPanelData); } else { popUpDataStack.AddLast(popUpPanelData); } if (activePopUp.gameObject.activeInHierarchy == false) { activePopUp = null; IterateThroughStack(); } }
private void DisplayHighPriorityPopUp(AbstractPopUpPanel.PopUpPanelData popUpPanelData, AbstractPopUpPanel displayPanelPrefab, AbstractPopUpPanel scenePanelObject, PopUpPriority popUpPriority) { displayPanelPrefab = InstantiatePopUp(displayPanelPrefab, scenePanelObject); if (activePopUp) { AddToDataStack(activePopUp, activePopUp.popUpPanelData, popUpPriority); } DisplayPopup(displayPanelPrefab, popUpPanelData); }