summary refs log tree commit diff stats
path: root/client/Archipelago/textclient.gd
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2025-08-29 15:53:32 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2025-08-29 15:53:32 -0400
commit96211e016a9d25af63f932742dd115f0c80070d8 (patch)
tree9aa97c1a9f5f03a5920d08552e806650fe55b208 /client/Archipelago/textclient.gd
parent660c5eda45dfca9ff5739d131224f2dbcc258289 (diff)
downloadlingo2-archipelago-96211e016a9d25af63f932742dd115f0c80070d8.tar.gz
lingo2-archipelago-96211e016a9d25af63f932742dd115f0c80070d8.tar.bz2
lingo2-archipelago-96211e016a9d25af63f932742dd115f0c80070d8.zip
[Client] Added textclient
Diffstat (limited to 'client/Archipelago/textclient.gd')
-rw-r--r--client/Archipelago/textclient.gd90
1 files changed, 90 insertions, 0 deletions
diff --git a/client/Archipelago/textclient.gd b/client/Archipelago/textclient.gd new file mode 100644 index 0000000..6a0aa95 --- /dev/null +++ b/client/Archipelago/textclient.gd
@@ -0,0 +1,90 @@
1extends CanvasLayer
2
3var panel
4var label
5var entry
6var is_open = false
7
8
9func _ready():
10 process_mode = ProcessMode.PROCESS_MODE_ALWAYS
11
12 panel = Panel.new()
13 panel.set_name("Panel")
14 panel.offset_left = 100
15 panel.offset_right = 1820
16 panel.offset_top = 100
17 panel.offset_bottom = 980
18 panel.visible = false
19 add_child(panel)
20
21 label = RichTextLabel.new()
22 label.set_name("Label")
23 label.offset_left = 80
24 label.offset_right = 1640
25 label.offset_top = 80
26 label.offset_bottom = 720
27 label.scroll_following = true
28 label.selection_enabled = true
29 panel.add_child(label)
30
31 label.push_font(load("res://assets/fonts/Lingo2.ttf"))
32 label.push_font_size(36)
33
34 var entry_style = StyleBoxFlat.new()
35 entry_style.bg_color = Color(0.9, 0.9, 0.9, 1)
36
37 entry = LineEdit.new()
38 entry.set_name("Entry")
39 entry.offset_left = 80
40 entry.offset_right = 1640
41 entry.offset_top = 760
42 entry.offset_bottom = 840
43 entry.add_theme_font_override("font", load("res://assets/fonts/Lingo2.ttf"))
44 entry.add_theme_font_size_override("font_size", 36)
45 entry.add_theme_color_override("font_color", Color(0, 0, 0, 1))
46 entry.add_theme_color_override("cursor_color", Color(0, 0, 0, 1))
47 entry.add_theme_stylebox_override("focus", entry_style)
48 panel.add_child(entry)
49 entry.connect("text_submitted", text_entered)
50
51
52func _input(event):
53 if event is InputEventKey and event.pressed:
54 if event.keycode == KEY_TAB and !Input.is_key_pressed(KEY_SHIFT):
55 if !get_tree().paused:
56 is_open = true
57 get_tree().paused = true
58 Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
59 panel.visible = true
60 entry.grab_focus()
61 get_viewport().set_input_as_handled()
62 else:
63 dismiss()
64 elif event.keycode == KEY_ESCAPE:
65 if is_open:
66 dismiss()
67 get_viewport().set_input_as_handled()
68
69
70func dismiss():
71 if is_open:
72 get_tree().paused = false
73 Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
74 panel.visible = false
75 is_open = false
76
77
78func parse_printjson(text):
79 if !label.text.is_empty():
80 #label.newline()
81 pass
82
83 label.append_text("[p]" + text + "[/p]")
84
85
86func text_entered(text):
87 var ap = global.get_node("Archipelago")
88 var cmd = text.trim_suffix("\n")
89 ap.client.say(cmd)
90 entry.text = ""