diff options
Diffstat (limited to 'Scripts/InputContainer.cs')
| -rw-r--r-- | Scripts/InputContainer.cs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/Scripts/InputContainer.cs b/Scripts/InputContainer.cs new file mode 100644 index 0000000..485086e --- /dev/null +++ b/Scripts/InputContainer.cs @@ -0,0 +1,44 @@ +using Godot; + +namespace Texty.Scripts +{ + public abstract class InputContainer : HBoxContainer + { + [Signal] + public delegate void InputSubmitted(string text); + + public LineEdit InputField; + public Button SubmitButton; + + public override void _Ready() + { + InputField = GetNode<LineEdit>(nameof(InputField)); + SubmitButton = GetNode<Button>(nameof(SubmitButton)); + + InputField.GrabFocus(); + SubmitButton.Disabled = InputField.Text.Empty(); + } + + public void OnInputChanged(string newText) + { + SubmitButton.Disabled = newText.Empty(); + } + + public void OnInputSubmitted(string newText) + { + SubmitText(newText); + } + + public void OnInputSubmitted() + { + SubmitText(InputField.Text); + } + + private void SubmitText(string newText) + { + if (newText.Empty()) return; + EmitSignal(nameof(InputSubmitted), newText); + InputField.Clear(); + } + } +}
\ No newline at end of file |
