Newer
Older
TheVengeance-Project-IADE-Unity2D / Assets / Scripts / UI / Pause Menu / PauseMenu.cs
  1. using MyCollections.Managers;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Xml.Serialization;
  6. using UnityEngine;
  7. using UnityEngine.SceneManagement;
  8. public class PauseMenu : MonoBehaviour
  9. {
  10. private GameStateManager gameStateManager;
  11. [SerializeField] private GameObject[] buttonsGroup;
  12. [SerializeField] private GameObject settingsPanel;
  13. [SerializeField] private HUDManager hudManager;
  14. private PauseMenuState currentState;
  15. public void Exit()
  16. {
  17. SceneManager.LoadScene("MainMenu");
  18. }
  19. //Resumes the game
  20. private void Resume()
  21. {
  22. gameStateManager.ResumeGame();
  23. gameObject.SetActive(false);
  24. }
  25. //Open Settings Menu
  26. private void OpenSettings()
  27. {
  28. settingsPanel.SetActive(true);
  29. }
  30. private void OnEnable()
  31. {
  32. gameObject.SetActive(true);
  33. gameStateManager = GameStateManager.Instance;
  34. SetState(PauseMenuState.None);
  35. }
  36. private void OnDisable()
  37. {
  38. hudManager.SetHUDMode(HUDMode.None);
  39. }
  40. public void ToggleSettings()
  41. {
  42. if (currentState != PauseMenuState.Settings)
  43. {
  44. SetState(PauseMenuState.Settings);
  45. }
  46. else
  47. {
  48. SetState(PauseMenuState.None);
  49. }
  50. }
  51. private void SetState(PauseMenuState state)
  52. {
  53. ClearMenuHUD();
  54. switch (state)
  55. {
  56. case PauseMenuState.None:
  57. OpenMenuOptions();
  58. break;
  59. case PauseMenuState.Settings:
  60. OpenSettings();
  61. break;
  62. }
  63. currentState = state;
  64. }
  65. private void OpenMenuOptions()
  66. {
  67. for (int i = 0; i < buttonsGroup.Length; i++)
  68. {
  69. buttonsGroup[i].gameObject.SetActive(true);
  70. }
  71. }
  72. private void ClearMenuHUD()
  73. {
  74. for (int i = 0; i < buttonsGroup.Length; i++)
  75. {
  76. buttonsGroup[i].gameObject.SetActive(false);
  77. }
  78. settingsPanel.SetActive(false);
  79. }
  80. [Serializable]
  81. public enum PauseMenuState
  82. {
  83. None,
  84. Settings
  85. }
  86. }