using Godot; using Texty.Scripts.Terminal; namespace Texty.Scripts.Game { [Tool] public class CommandInputArea : InputArea { [Signal] public delegate void CommandSubmitted(Command command); [Signal] public delegate void UnknownInputSubmitted(string text); private CommandParser CommandParser => GetNodeOrNull($"%{nameof(CommandParser)}"); public override void _Ready() { TextInput.GrabFocus(); } public override void OnTextEntered(string text) { if (text.Empty()) return; TextInput.Clear(); var command = CommandParser.TryParse(text); if (command != null) EmitSignal(nameof(CommandSubmitted), command); else EmitSignal(nameof(UnknownInputSubmitted), text); } } }