summaryrefslogtreecommitdiff
path: root/Scripts/Terminal/ButtonBlock.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Scripts/Terminal/ButtonBlock.cs')
-rw-r--r--Scripts/Terminal/ButtonBlock.cs28
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