void FlushOnBackButtonPressed() { EnumUI e = instance.renderingPanelsStack.Peek(); ScriptableUIPanel scriptableUiPanel = Array.Find(instance.panelsArray, UIPanel => UIPanel.id == e); instance.loadedPanels[scriptableUiPanel.id].OnBackButtonPressed(); }
public void ShowUI(EnumUI _ui, object _data = null) { switch (_ui) { case EnumUI.MainMenu: StopAllCoroutines(); StartCoroutine(ShowMainMenu()); break; case EnumUI.GameMenu: StopAllCoroutines(); StartCoroutine(ShowGameMenu()); break; case EnumUI.Pause: uis[2].OnShow(); break; case EnumUI.RespawnDialog: uis[3].OnShow(); break; case EnumUI.GameOver: uis[4].OnShow(); break; case EnumUI.Settings: uis[5].OnShow(); break; case EnumUI.Market: //uis[6].OnShow(); uis[6].OnShow(_data); break; case EnumUI.Inventory: uis[7].OnShow(); break; case EnumUI.Missions: uis[8].OnShow(); //TODO break; case EnumUI.ClaimDialog: uis[9].OnShow(_data); break; case EnumUI.Credits: uis[10].OnShow(_data); break; } }
/// <summary> /// Hide the panel on the Top /// </summary> public static void FlushPanel(bool timeIndependantRendering = false) { EnumUI e = instance.renderingPanelsStack.Pop(); ScriptableUIPanel panel = Array.Find(instance.panelsArray, UIPanel => UIPanel.id == e); instance._animationEndCanvasGroup = panel.uiPanelBehaviour.canvasGroup; instance.loadedPanels[panel.id].EnumUiState = EnumUIState.Hidden; if (timeIndependantRendering) { instance.loadedPanels[panel.id].panel.SetActive(false); } else { instance.AnimateEnd(instance.loadedPanels[panel.id].panel, panel.endAnimation); } }
/// <summary> /// Show the panel with the given id /// </summary> /// <param name="id">EnumUi id</param> /// <param name="timeIndependantRendering">set true to do rendering without animations</param> public static void RenderPanel(EnumUI id, bool timeIndependantRendering = false) { ScriptableUIPanel panel = Array.Find(instance.panelsArray, UIPanel => UIPanel.id == id); if (!instance.loadedPanels.ContainsKey(id)) { GameObject spawnedPanel = Instantiate(panel.panelPrefab, instance.containerTransform); UIPanelBehaviour uiPanelBehaviour = panel.uiPanelBehaviour; uiPanelBehaviour.panel = spawnedPanel; uiPanelBehaviour.canvasGroup = spawnedPanel.gameObject.GetComponent <CanvasGroup>(); instance._animationStartCanvasGroup = uiPanelBehaviour.canvasGroup; instance.loadedPanels.Add(panel.id, uiPanelBehaviour); instance.loadedPanels[id].EnumUiState = EnumUIState.Rendering; spawnedPanel.SetActive(true); spawnedPanel.transform.localScale = Vector3.one; spawnedPanel.transform.SetAsLastSibling(); if (!timeIndependantRendering) { instance.AnimateStart(spawnedPanel, panel.startAnimation); } instance.renderingPanelsStack.Push(panel.id); } else if (instance.loadedPanels[id].EnumUiState == EnumUIState.Hidden) { GameObject loadedPanel = instance.loadedPanels[id].panel; instance._animationStartCanvasGroup = instance.loadedPanels[id].canvasGroup; instance._animationStartCanvasGroup.alpha = 1f; instance.loadedPanels[id].EnumUiState = EnumUIState.Rendering; loadedPanel.SetActive(true); loadedPanel.transform.localScale = Vector3.one; loadedPanel.transform.SetAsLastSibling(); if (!timeIndependantRendering) { instance.AnimateStart(loadedPanel, panel.startAnimation); } instance.renderingPanelsStack.Push(panel.id); } else if (instance.loadedPanels[id].EnumUiState == EnumUIState.Rendering) { Debug.Log("The panel " + panel.panelName + " is already Rendering"); } }