Encounter / Assets / Scripts / GUIHandlers / MainMenu.cs
MainMenu.cs
Raw
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;
    }
}