/// <summary> /// Shows the Screen. /// </summary> /// <param name="uiToShow">Screen to show.</param> /// <param name="pos">Position of the Screen.</param> /// <param name="previousScreenVisibility">Previous screen visibility.</param> /// <param name="param">Aditional Parameters.</param> public IWidget ShowUI(GameUI uiToShow, Vector3 pos, PreviousScreenVisibility previousScreenVisibility, bool allowDuplicateInQueue, bool searchGameObjectsWithTag, bool setAsLastSibling = true, params object[] param) { // Hide or Dequeue Previous UI if (previousScreenVisibility != PreviousScreenVisibility.DoNothing) { if (previousScreenVisibility == PreviousScreenVisibility.DequeuePreviousExcludingHud || previousScreenVisibility == PreviousScreenVisibility.DequeuePreviousIncludingHud) { DequeueUI(previousScreenVisibility); } if (previousScreenVisibility == PreviousScreenVisibility.HidePreviousExcludingHud || previousScreenVisibility == PreviousScreenVisibility.HidePreviousIncludingHud) { HideCurrentUI(previousScreenVisibility); } } IWidget uiRef = null; uiRef = GetScreen(uiToShow, true, searchGameObjectsWithTag, allowDuplicateInQueue); ((MonoBehaviour)uiRef).transform.SetParent(_parentCanvas, false); ((MonoBehaviour)uiRef).transform.localPosition = pos; if (setAsLastSibling) { ((MonoBehaviour)uiRef).transform.SetAsLastSibling(); } return(ShowUI(uiRef, allowDuplicateInQueue, param)); }
/// <summary> /// Hides the Previous Screen. /// </summary> /// <param name="previousScreenVisibility">Previous Screen visibility.</param> public void HideCurrentUI(PreviousScreenVisibility previousScreenVisibility) { if (UIQueue.Count > 0) { IWidget screen = UIQueue [UIQueue.Count - 1]; if (previousScreenVisibility == PreviousScreenVisibility.DequeuePreviousIncludingHud || !(screen is Hud)) { this.HideUI(screen); } } }
/// <summary> /// Dequeues the Previous Screen from the Screens Queue. /// </summary> /// <param name="previousScreenVisibility">Previous Screen Visibility.</param> public void DequeueUI(PreviousScreenVisibility previousScreenVisibility) { if (UIQueue.Count > 0) { IWidget screen = UIQueue [UIQueue.Count - 1]; if (previousScreenVisibility == PreviousScreenVisibility.DequeuePreviousIncludingHud || !(screen is Hud)) { UIQueue.RemoveAt(UIQueue.Count - 1); this.DestroyUI(screen); } } }
/// <summary> /// Shows the Screen. /// </summary> /// <param name="uiToShow">Screen to show.</param> /// <param name="previousScreenVisibility">Previous Screen Visibility.</param> /// <param name="param">Aditional Parameters.</param> public IWidget ShowUI(GameUI uiToShow, PreviousScreenVisibility previousScreenVisibility, params object[] param) { return(ShowUI(uiToShow, Vector3.zero, previousScreenVisibility, _allowDuplicateInQueue, _searchGameObjectsWithTag, true, param)); }