58 lines
1.7 KiB
C#
58 lines
1.7 KiB
C#
using Godot;
|
|
using Mr.BrickAdventures;
|
|
using Mr.BrickAdventures.Autoloads;
|
|
|
|
namespace Mr.BrickAdventures.scripts.UI;
|
|
|
|
public partial class GameOverScreen : Control
|
|
{
|
|
[Export] public Control GameOverPanel { get; set; }
|
|
[Export] public Button RestartButton { get; set; }
|
|
[Export] public Button MainMenuButton { get; set; }
|
|
[Export] public PackedScene MainMenuScene { get; set; }
|
|
|
|
public override void _Ready()
|
|
{
|
|
RestartButton.FocusMode = Control.FocusModeEnum.All;
|
|
MainMenuButton.FocusMode = Control.FocusModeEnum.All;
|
|
|
|
RestartButton.Pressed += OnRestartClicked;
|
|
MainMenuButton.Pressed += OnMainMenuClicked;
|
|
|
|
if (InputDeviceManager.Instance != null)
|
|
InputDeviceManager.Instance.DeviceChanged += OnDeviceChanged;
|
|
}
|
|
|
|
public override void _ExitTree()
|
|
{
|
|
if (InputDeviceManager.Instance != null)
|
|
InputDeviceManager.Instance.DeviceChanged -= OnDeviceChanged;
|
|
}
|
|
|
|
private void OnDeviceChanged(int device)
|
|
{
|
|
var d = (InputDeviceManager.InputDevice)device;
|
|
if (d != InputDeviceManager.InputDevice.Mouse && GameOverPanel.IsVisibleInTree())
|
|
RestartButton.GrabFocus();
|
|
}
|
|
|
|
private void OnMainMenuClicked()
|
|
{
|
|
GameStateStore.Instance?.ResetAll();
|
|
GetTree().ChangeSceneToPacked(MainMenuScene);
|
|
}
|
|
|
|
private void OnRestartClicked()
|
|
{
|
|
GameManager.Instance?.RestartGame();
|
|
}
|
|
|
|
public void OnPlayerDeath()
|
|
{
|
|
if (GameStateStore.Instance?.Player.Lives != 0) return;
|
|
|
|
GameOverPanel.Show();
|
|
if (InputDeviceManager.Instance?.IsPointerless == true)
|
|
RestartButton.GrabFocus();
|
|
}
|
|
} |