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(); } }