Files
2025-05-29 22:31:40 +03:00

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();
}
}