using TMPro; using UnityEngine; /// <summary> /// Handles the main menu screen which controls things such as quitting mid game, saving and exiting, or checking settings /// </summary> public class MainMenu : MonoBehaviour { [Header("Canvas Components")] [SerializeField] private Canvas mainMenuCanvas; // The deactivated canvas that is called when the user presses escape [SerializeField] private Canvas settingsCanvas; // The canvas that holds the settings functionality for the player [SerializeField] private TextMeshProUGUI encounterValueText; // Text reference for the field that lists how many encounters the user is in private const float Freeze = 0.0f; // Frozen time scale private const float Resume = 1.0f; // Normal time scale /// <summary> /// Opens and closes the inventory based on the player's pressing of the escape key /// </summary> private void Update() { if (Input.GetKeyDown(KeyCode.Escape) && mainMenuCanvas.enabled is false) OpenMainMenu(); else if (Input.GetKeyDown(KeyCode.Escape) && mainMenuCanvas.enabled is true) CloseMainMenu(); } /// <summary> /// Opens the main menu canvas whiel making sure that the settings canvas is disabled and the time scale is frozen /// </summary> private void OpenMainMenu() { int encounterV = GameManager.Instance.GetEncounterValue(); encounterValueText.text = $"Total Encounters\n{encounterV}"; mainMenuCanvas.enabled = true; settingsCanvas.enabled = false; Time.timeScale = Freeze; } /// <summary> /// Resets the time scale and disables both main menu and settings canvas /// </summary> public void CloseMainMenu() { mainMenuCanvas.enabled = false; settingsCanvas.enabled = false; Time.timeScale = Resume; } /// <summary> /// Quits the game without saving /// </summary> public void QuitGame() => Application.Quit(); /// <summary> /// Switches to the settings canvas from the main menu canvas /// </summary> public void SwitchToSettings() { settingsCanvas.enabled = true; mainMenuCanvas.enabled = false; } /// <summary> /// Switches to the main menu canvas from the settings canvas /// </summary> public void SwitchToMainMenu() { mainMenuCanvas.enabled = true; settingsCanvas.enabled = false; } }