Files
przygody-pana-cegly/scripts/UI/PauseMenu.cs

65 lines
1.7 KiB
C#

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();
GameManager.ResetCurrentSessionState();
GetTree().ChangeSceneToPacked(MainMenuScene);
}
private void OnResumePressed()
{
UIManager.PopScreen();
GameManager.ResumeGame();
}
}