using UnityEngine; using UnityEngine.Events; public enum GameState { MainMenu, InGame, Paused, GameOver } public class StateManager : MonoBehaviour { public GameState PreviousState; public GameState CurrentState; public static event System.Action OnGameStateChanged; // Pause Event public UnityEvent OnGamePauseToggle = new(); public void SetGameState(GameState newState) { PreviousState = CurrentState; CurrentState = newState; OnGameStateChanged?.Invoke(CurrentState); // Check if the state has changed to or from Paused if (CurrentState == GameState.Paused || PreviousState == GameState.Paused) { OnGamePauseToggle.Invoke(); Debug.Log("Invoked Pause Toggle"); } } }