using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; using TMPro; using UnityEngine.EventSystems; public class PauseMenu : MonoBehaviour { public static bool GameIsPaused = false; public GameObject pauseMenuUI; public GameObject pauseSettingsMenuUI; public GameObject pauseGraphicsSettingsMenuUI; public GameObject pauseAudioSettingsMenuUI; public GameObject pauseGameplaySettingsMenuUI; public GameObject pauseQuitToMainMenuQuestionMenuUI; public GameObject pauseQuitGameMenuUI; public Animator pauseMenuBackgroundPanelAnimator; [Header("Menus Buttons")] [SerializeField] private Button pauseMenuHomePanelFirstSelectedButton; [SerializeField] private Button settingsMenuPanelFirstSelectedButton; [SerializeField] private Button quitToMainMenuPanelFirstSelectedButton; [SerializeField] private Button quitGameMenuPanelFirstSelectedButton; [SerializeField] private TMP_Dropdown graphicsMenuPanelFirstSelectedButton; [SerializeField] private Slider audioSettingsMenuPanelFirstSelectedButton; [SerializeField] private Slider gameplaySettingsMenuPanelFirstSelectedButton; private static PauseMenu _instance; public static PauseMenu GetInstance() { return _instance; } private void Awake() { if (!_instance) { _instance = this; } } public enum PauseMenuState { Resumed, PauseMenuHome, PhotomodeMenu, SettingsMenu, GraphicsSettingsMenu, AudioSettingsMenu, GameplaySettingsMenu, QuitToMainMenuQuestionMenu, QuitGameQuestionMenu } public PauseMenuState pauseMenuState = PauseMenuState.Resumed; public void GoToResumed() { StartCoroutine(ResumeAfterSec()); } IEnumerator ResumeAfterSec() { yield return new WaitForSecondsRealtime(0.5f); UIManager.GetInstance().userInterfaceIsOnScreen = false; pauseMenuUI.SetActive(true); pauseSettingsMenuUI.SetActive(false); Resume(); pauseMenuState = PauseMenuState.Resumed; } public void GoToPauseMenuHome() { UIManager.GetInstance().userInterfaceIsOnScreen = true; pauseMenuUI.SetActive(true); pauseSettingsMenuUI.SetActive(false); pauseQuitToMainMenuQuestionMenuUI.SetActive(false); pauseQuitGameMenuUI.SetActive(false); Pause(); pauseMenuState = PauseMenuState.PauseMenuHome; EventSystemController.GetInstance().firstSelectedButton = pauseMenuHomePanelFirstSelectedButton.gameObject; EventSystem.current.SetSelectedGameObject(EventSystemController.GetInstance().firstSelectedButton); } public void GoToPhotomodeMenu() { pauseMenuUI.SetActive(false); pauseGraphicsSettingsMenuUI.SetActive(false); pauseAudioSettingsMenuUI.SetActive(false); pauseGameplaySettingsMenuUI.SetActive(false); pauseSettingsMenuUI.SetActive(false); PhotomodeManager.GetInstance().HasPressedToOpenPhotoMode = true; pauseMenuState = PauseMenuState.PhotomodeMenu; //EventSystemController.GetInstance().firstSelectedButton = settingsMenuPanelFirstSelectedButton.gameObject; EventSystem.current.SetSelectedGameObject(EventSystemController.GetInstance().firstSelectedButton); } public void GoToSettingsMenu() { pauseMenuUI.SetActive(false); pauseGraphicsSettingsMenuUI.SetActive(false); pauseAudioSettingsMenuUI.SetActive(false); pauseGameplaySettingsMenuUI.SetActive(false); pauseSettingsMenuUI.SetActive(true); pauseMenuState = PauseMenuState.SettingsMenu; EventSystemController.GetInstance().firstSelectedButton = settingsMenuPanelFirstSelectedButton.gameObject; EventSystem.current.SetSelectedGameObject(EventSystemController.GetInstance().firstSelectedButton); } public void GoToGraphicsSettingsMenu() { pauseSettingsMenuUI.SetActive(false); pauseGraphicsSettingsMenuUI.SetActive(true); pauseMenuState = PauseMenuState.GraphicsSettingsMenu; EventSystemController.GetInstance().firstSelectedButton = graphicsMenuPanelFirstSelectedButton.gameObject; EventSystem.current.SetSelectedGameObject(EventSystemController.GetInstance().firstSelectedButton); } public void GoToAudioSettingsMenu() { pauseSettingsMenuUI.SetActive(false); pauseAudioSettingsMenuUI.SetActive(true); pauseMenuState = PauseMenuState.AudioSettingsMenu; EventSystemController.GetInstance().firstSelectedButton = audioSettingsMenuPanelFirstSelectedButton.gameObject; EventSystem.current.SetSelectedGameObject(EventSystemController.GetInstance().firstSelectedButton); } public void GoToGameplaySettingsMenu() { pauseSettingsMenuUI.SetActive(false); pauseAudioSettingsMenuUI.SetActive(false); pauseGameplaySettingsMenuUI.SetActive(true); pauseMenuState = PauseMenuState.GameplaySettingsMenu; EventSystemController.GetInstance().firstSelectedButton = gameplaySettingsMenuPanelFirstSelectedButton.gameObject; EventSystem.current.SetSelectedGameObject(EventSystemController.GetInstance().firstSelectedButton); } public void GoToQuitToMainMenuQuestion() { pauseMenuUI.SetActive(false); pauseQuitToMainMenuQuestionMenuUI.SetActive(true); pauseMenuState = PauseMenuState.QuitToMainMenuQuestionMenu; EventSystemController.GetInstance().firstSelectedButton = quitToMainMenuPanelFirstSelectedButton.gameObject; EventSystem.current.SetSelectedGameObject(EventSystemController.GetInstance().firstSelectedButton); } public void GoToQuitGameQuestion() { pauseMenuUI.SetActive(false); pauseQuitGameMenuUI.SetActive(true); pauseMenuState = PauseMenuState.QuitGameQuestionMenu; EventSystemController.GetInstance().firstSelectedButton = quitGameMenuPanelFirstSelectedButton.gameObject; EventSystem.current.SetSelectedGameObject(EventSystemController.GetInstance().firstSelectedButton); } void Update() { #region Old way //if (Input.GetKeyDown(KeyCode.Escape)) //{ // if (!GameplayController.GetInstance().IsOnState(GameplayController.State.InventoryMenu) // && !GameplayController.GetInstance().IsOnState(GameplayController.State.ImportantTutorialMessage) // && !LoadManager.GetInstance().LoadingGame && !ExaminableItemData.GetInstance().IsExamining) // { // if (GameIsPaused) // { // Resume(); // } // else // { // Pause(); // } // } //} #endregion switch (pauseMenuState) { case PauseMenuState.Resumed: if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.JoystickButton7)/*Start button*/) { if (!GameplayController.GetInstance().IsOnState(GameplayController.State.InventoryMenu) && !GameplayController.GetInstance().IsOnState(GameplayController.State.ImportantTutorialMessage) && !LoadManager.GetInstance().LoadingGame && !ExaminableItemData.GetInstance().IsExamining) { GoToPauseMenuHome(); } } break; case PauseMenuState.PauseMenuHome: if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.JoystickButton1)/*B button*/ || Input.GetKeyDown(KeyCode.JoystickButton7)/*Start button*/) { if (!GameplayController.GetInstance().IsOnState(GameplayController.State.InventoryMenu) && !GameplayController.GetInstance().IsOnState(GameplayController.State.ImportantTutorialMessage) && !LoadManager.GetInstance().LoadingGame && !ExaminableItemData.GetInstance().IsExamining) { GoToResumed(); } } break; case PauseMenuState.PhotomodeMenu: //if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.JoystickButton1)/*B button*/) //{ // GoToPauseMenuHome(); //} break; case PauseMenuState.SettingsMenu: if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.JoystickButton1)/*B button*/) { GoToPauseMenuHome(); } break; case PauseMenuState.GraphicsSettingsMenu: if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.JoystickButton1)/*B button*/) { GoToSettingsMenu(); } break; case PauseMenuState.AudioSettingsMenu: if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.JoystickButton1)/*B button*/) { GoToSettingsMenu(); } break; case PauseMenuState.GameplaySettingsMenu: if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.JoystickButton1)/*B button*/) { GoToSettingsMenu(); } break; case PauseMenuState.QuitToMainMenuQuestionMenu: if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.JoystickButton1)/*B button*/) { GoToPauseMenuHome(); } break; case PauseMenuState.QuitGameQuestionMenu: if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.JoystickButton1)/*B button*/) { GoToPauseMenuHome(); } break; default: break; } } public void Resume() { pauseMenuUI.SetActive(false); pauseMenuBackgroundPanelAnimator.SetBool("FadeIn", false); pauseSettingsMenuUI.SetActive(false); pauseGraphicsSettingsMenuUI.SetActive(false); pauseAudioSettingsMenuUI.SetActive(false); Time.timeScale = 1f; GameIsPaused = false; Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; GameplayController.GetInstance().GoToGameplayState(); } public void Pause() { pauseMenuUI.SetActive(true); pauseMenuBackgroundPanelAnimator.SetBool("FadeIn", true); Time.timeScale = 0f; GameIsPaused = true; Cursor.lockState = CursorLockMode.None; Cursor.visible = true; GameplayController.GetInstance().GoToPauseMenuState(); } public void LoadMenu() { pauseMenuUI.SetActive(false); Time.timeScale = 1f; GameIsPaused = false; Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; //- I COMMENTED OUT TO SEE IF IT WORKS WITH THE LOAD!!!!! //GameSystemsManager.GetInstance().Systems.SetActive(false); //I ADDED TO SEE IF IT WORKS!!!!!!!!! Destroy(GameSystemsManager.GetInstance().transform.gameObject); //------------------------------------------------------------- GameplayController.GetInstance().GoToMainMenuState(); //SaveSlotManager.GetInstance().LoadingScreen.SetActive(true); //SaveSlotManager.GetInstance().loadingUIAnimator.SetBool("FadeIn", true); //SceneManager.LoadScene("MainMenu"); LoadManager.GetInstance().LoadMainMenu(); } public void QuitGame() { Application.Quit(); } }