using UnityEngine; using UnityEngine.InputSystem; public class GameManager : MonoBehaviour { [SerializeField] private PlayerInput _controls; [SerializeField, ReadOnly] private GameState _state; [SerializeField] private UIController ui; public static GameManager Instance { get; private set; } private void Awake() { if (Instance != null && Instance != this) { Destroy(gameObject); } else { Instance = this; _state = GameState.InGame; } } public void TriggerGameOver(int dimensionID) { if (_state == GameState.Loss) return; // Stop controls _controls.SwitchCurrentActionMap("UI"); // Show Game Over Message Debug.Log("Game Over: Dimension " + dimensionID + " has been destroyed"); // Show Options (Return to Menu / Retry) _state = GameState.Loss; } public void EnterPause(){ _controls.SwitchCurrentActionMap("UI"); _state = GameState.Pause; ui.EnterPause(); } public void ExitPause(){ _controls.SwitchCurrentActionMap("Player"); _state = GameState.InGame; ui.ExitPause(); } } public enum GameState { MainMenu, InGame, Loss, Pause }