79 lines
2.1 KiB
C#
79 lines
2.1 KiB
C#
using Chickensoft.AutoInject;
|
|
using Chickensoft.GodotNodeInterfaces;
|
|
using Chickensoft.Introspection;
|
|
using Godot;
|
|
|
|
namespace Zennysoft.Game.Ma;
|
|
|
|
public interface IMainMenu : IControl
|
|
{
|
|
event MainMenu.StartGameEventHandler StartGame;
|
|
event MainMenu.EnemyViewerEventHandler EnemyViewer;
|
|
event MainMenu.GalleryEventHandler Gallery;
|
|
event MainMenu.QuitEventHandler Quit;
|
|
|
|
void FadeIn();
|
|
}
|
|
|
|
[Meta(typeof(IAutoNode))]
|
|
public partial class MainMenu : Control, IMainMenu
|
|
{
|
|
public override void _Notification(int what) => this.Notify(what);
|
|
|
|
[Node] public IButton StartGameButton { get; set; } = default!;
|
|
|
|
[Node] public IButton EnemyViewerButton { get; set; } = default!;
|
|
|
|
[Node] public IButton GalleryButton { get; set; } = default!;
|
|
|
|
[Node] public IButton OptionsButton { get; set; } = default!;
|
|
|
|
[Node] public IButton QuitButton { get; set; } = default!;
|
|
|
|
[Signal]
|
|
public delegate void StartGameEventHandler();
|
|
[Signal]
|
|
public delegate void EnemyViewerEventHandler();
|
|
[Signal]
|
|
public delegate void GalleryEventHandler();
|
|
[Signal]
|
|
public delegate void OptionsEventHandler();
|
|
[Signal]
|
|
public delegate void QuitEventHandler();
|
|
|
|
public void OnReady()
|
|
{
|
|
StartGameButton.Pressed += OnStartGamePressed;
|
|
EnemyViewerButton.Pressed += EnemyViewerButton_Pressed;
|
|
GalleryButton.Pressed += GalleryButton_Pressed;
|
|
OptionsButton.Pressed += OptionsButton_Pressed;
|
|
QuitButton.Pressed += OnQuitPressed;
|
|
StartGameButton.GrabFocus();
|
|
}
|
|
|
|
public void FadeIn()
|
|
{
|
|
StartGameButton.GrabFocus();
|
|
Show();
|
|
}
|
|
|
|
public void OnExitTree()
|
|
{
|
|
StartGameButton.Pressed -= OnStartGamePressed;
|
|
EnemyViewerButton.Pressed -= EnemyViewerButton_Pressed;
|
|
GalleryButton.Pressed -= GalleryButton_Pressed;
|
|
OptionsButton.Pressed -= OptionsButton_Pressed;
|
|
QuitButton.Pressed -= OnQuitPressed;
|
|
}
|
|
|
|
public void OnStartGamePressed() => EmitSignal(SignalName.StartGame);
|
|
|
|
private void GalleryButton_Pressed() => EmitSignal(SignalName.Gallery);
|
|
|
|
private void EnemyViewerButton_Pressed() => EmitSignal(SignalName.EnemyViewer);
|
|
|
|
private void OptionsButton_Pressed() => EmitSignal(SignalName.Options);
|
|
|
|
public void OnQuitPressed() => EmitSignal(SignalName.Quit);
|
|
}
|