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