/// <summary> /// Opens the pause menuScene /// </summary> /// <param name="onOpenGUI"></param> /// <param name="onCloseGUI"></param> public void OpenPauseMenu(Action onOpenGUI, Action onCloseGUI) { var options = new UIOptions(true, true, false, true); options.SetActions(null, x => onOpenGUI?.Invoke(), x => onCloseGUI?.Invoke()); OpenGUIMenu(pauseMenu, options); }
/// <summary> /// Opens the inventory /// </summary> /// <param name="onOpenGUI"></param> /// <param name="onCloseGUI"></param> public void OpenInventory(Action onOpenGUI, Action onCloseGUI) { var options = new UIOptions(true, false, false, false); options.SetActions(GameManager.Instance.inventory.InitializeInventory, x => onOpenGUI?.Invoke(), x => onCloseGUI?.Invoke()); OpenGUIMenu(inventoryUi, options); }
/// <summary> /// Opens the monoBehaviour passed as a gui on the main canvas /// </summary> /// <param name="menu">the gui to instantiate</param> /// <param name="options">menuScene instantiation effects</param> public void OpenGUIMenu(GameObject menu, UIOptions options) { if (IsGuiOpened) { return; } SoundManager.Instance.PlayNonDiegeticRandomPitchSound(openUIAudio); IsGuiOpened = true; m_JustOpenedGUI = true; m_CurrentGUI = Instantiate(menu, m_CanvasInstance.transform); m_CurrentGUI.SetActive(true); options.beforeOpenGUI?.Invoke(m_CurrentGUI); m_CurrentGUICanvasGroup = m_CurrentGUI.GetComponent <CanvasGroup>(); void Callback() { m_CurrentGUICanvasGroup.interactable = true; if (options.pauseTime) { Time.timeScale = 0f; } if (options.lockInput) { PlayerInput.Instance.BlockInput(); } if (options.showPointer) { PointerManager.Instance.SetCursorActive(); } PlayerController.Instance.BlockMovement(options.lockMovement); options.onOpenGUI?.Invoke(m_CurrentGUI); } if (m_CurrentGUICanvasGroup && !options.pauseTime) { AnimateAlpha(m_CurrentGUICanvasGroup, 1f, alphaAnimationDuration, Callback); } else { Callback(); } m_OnCloseGUI = options.onCloseGUI; }