diff options
| author | Sophia Pearson <codergal89@gmail.com> | 2022-09-07 11:22:35 +0200 |
|---|---|---|
| committer | Sophia Pearson <codergal89@gmail.com> | 2022-09-07 11:22:35 +0200 |
| commit | ccd374cbedd87528c85d497fa7bef9b0c90815e9 (patch) | |
| tree | d146de06e0d91a30d37b6d8ccb4d6e5b7dceda03 /Scripts/Terminal/ButtonBlock.cs | |
| parent | 23a3b14f4d3662f20d7202aeb569b789b520ba57 (diff) | |
| download | texty-ccd374cbedd87528c85d497fa7bef9b0c90815e9.tar.xz texty-ccd374cbedd87528c85d497fa7bef9b0c90815e9.zip | |
menus: implement main menu and building blocks
Diffstat (limited to 'Scripts/Terminal/ButtonBlock.cs')
| -rw-r--r-- | Scripts/Terminal/ButtonBlock.cs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Scripts/Terminal/ButtonBlock.cs b/Scripts/Terminal/ButtonBlock.cs new file mode 100644 index 0000000..769fdf8 --- /dev/null +++ b/Scripts/Terminal/ButtonBlock.cs @@ -0,0 +1,28 @@ +using System.Linq; +using Godot; +using Godot.Collections; +using Texty.Scripts.GodotExtensions; + +namespace Texty.Scripts.Terminal +{ + [Tool] + public abstract class ButtonBlock : MarginContainer + { + private VBoxContainer Buttons => GetNodeOrNull<VBoxContainer>($"%{nameof(Buttons)}"); + + public override void _Ready() + { + ConnectButtons(); + Buttons.GetChildren<Button>().ForEach(button => button.MouseFilter = MouseFilterEnum.Ignore); + Buttons.GetChildren<Button>().FirstOrDefault()?.GrabFocus(); + } + + protected abstract void OnButtonPressed(int index); + + private void ConnectButtons() + { + foreach (var (button, index) in Buttons.GetChildren<Button>().Select((button, index) => (button, index))) + button.Connect("pressed", this, nameof(OnButtonPressed), new Array(index)); + } + } +}
\ No newline at end of file |
