using Godot; using Mr.BrickAdventures.Autoloads; namespace Mr.BrickAdventures.scripts.UI; public partial class PauseMenu : Control { [Export] public Control PauseMenuControl { get; set; } [Export] public Control SettingsControl { get; set; } [Export] public Button ResumeButton { get; set; } [Export] public Button MainMenuButton { get; set; } [Export] public Button QuitButton { get; set; } [Export] public Button SettingsButton { get; set; } [Export] public PackedScene MainMenuScene { get; set; } private GameManager GameManager => GameManager.Instance; private UIManager UIManager => UIManager.Instance; public override void _Ready() { ResumeButton.Pressed += OnResumePressed; MainMenuButton.Pressed += OnMainMenuPressed; QuitButton.Pressed += OnQuitPressed; SettingsButton.Pressed += OnSettingsPressed; PauseMenuControl.Hide(); } public override void _UnhandledInput(InputEvent @event) { if (!@event.IsActionPressed("pause")) return; if (UIManager.IsVisibleOnStack(PauseMenuControl)) OnResumePressed(); else { UIManager.PushScreen(PauseMenuControl); GameManager.PauseGame(); } } private void OnSettingsPressed() { UIManager.PushScreen(SettingsControl); GameManager.PauseGame(); } private void OnQuitPressed() { GameManager.QuitGame(); } private void OnMainMenuPressed() { GameManager.ResumeGame(); GameStateStore.Instance?.ResetSession(); GetTree().ChangeSceneToPacked(MainMenuScene); } private void OnResumePressed() { UIManager.PopScreen(); GameManager.ResumeGame(); } }