299 lines
12 KiB
C#
299 lines
12 KiB
C#
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();
|
|
}
|
|
|
|
}
|