blob: 90a9962a5993eb6a431566392570646729af400f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
using Godot;
namespace Texty.Scripts.Game
{
public class Input : PanelContainer
{
[Signal] public delegate void CommandSubmitted(Command command);
[Signal] public delegate void UnknownInputSubmitted(string text);
private CommandParser CommandParser => GetNodeOrNull<CommandParser>($"%{nameof(CommandParser)}");
private Label PromptLabel => GetNodeOrNull<Label>($"%{nameof(PromptLabel)}");
private LineEdit TextInput => GetNodeOrNull<LineEdit>($"%{nameof(TextInput)}");
public override void _Ready()
{
TextInput.GrabFocus();
}
public 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);
}
}
}
|