about summary refs log tree commit diff stats
path: root/apworld/client/textclient.gd
diff options
context:
space:
mode:
Diffstat (limited to 'apworld/client/textclient.gd')
-rw-r--r--apworld/client/textclient.gd86
1 files changed, 63 insertions, 23 deletions
diff --git a/apworld/client/textclient.gd b/apworld/client/textclient.gd index 9841063..e345489 100644 --- a/apworld/client/textclient.gd +++ b/apworld/client/textclient.gd
@@ -1,8 +1,10 @@
1extends CanvasLayer 1extends CanvasLayer
2 2
3var tabs
3var panel 4var panel
4var label 5var label
5var entry 6var entry
7var tracker_label
6var is_open = false 8var is_open = false
7 9
8 10
@@ -10,26 +12,32 @@ func _ready():
10 process_mode = ProcessMode.PROCESS_MODE_ALWAYS 12 process_mode = ProcessMode.PROCESS_MODE_ALWAYS
11 layer = 2 13 layer = 2
12 14
13 panel = Panel.new() 15 tabs = TabContainer.new()
14 panel.set_name("Panel") 16 tabs.name = "Tabs"
15 panel.offset_left = 100 17 tabs.offset_left = 100
16 panel.offset_right = 1820 18 tabs.offset_right = 1820
17 panel.offset_top = 100 19 tabs.offset_top = 100
18 panel.offset_bottom = 980 20 tabs.offset_bottom = 980
19 panel.visible = false 21 tabs.visible = false
20 add_child(panel) 22 tabs.theme = preload("res://assets/themes/baseUI.tres")
23 tabs.add_theme_font_size_override("font_size", 36)
24 add_child(tabs)
25
26 panel = MarginContainer.new()
27 panel.name = "Text Client"
28 panel.add_theme_constant_override("margin_top", 60)
29 panel.add_theme_constant_override("margin_left", 60)
30 panel.add_theme_constant_override("margin_right", 60)
31 panel.add_theme_constant_override("margin_bottom", 60)
32 tabs.add_child(panel)
21 33
22 label = RichTextLabel.new() 34 label = RichTextLabel.new()
23 label.set_name("Label") 35 label.set_name("Label")
24 label.offset_left = 80
25 label.offset_right = 1640
26 label.offset_top = 80
27 label.offset_bottom = 720
28 label.scroll_following = true 36 label.scroll_following = true
29 label.selection_enabled = true 37 label.selection_enabled = true
30 panel.add_child(label) 38 label.size_flags_horizontal = Control.SIZE_EXPAND_FILL
31 39 label.size_flags_vertical = Control.SIZE_EXPAND_FILL
32 label.push_font(load("res://assets/fonts/Lingo2.ttf")) 40 label.push_font(preload("res://assets/fonts/Lingo2.ttf"))
33 label.push_font_size(36) 41 label.push_font_size(36)
34 42
35 var entry_style = StyleBoxFlat.new() 43 var entry_style = StyleBoxFlat.new()
@@ -37,18 +45,30 @@ func _ready():
37 45
38 entry = LineEdit.new() 46 entry = LineEdit.new()
39 entry.set_name("Entry") 47 entry.set_name("Entry")
40 entry.offset_left = 80 48 entry.add_theme_font_override("font", preload("res://assets/fonts/Lingo2.ttf"))
41 entry.offset_right = 1640
42 entry.offset_top = 760
43 entry.offset_bottom = 840
44 entry.add_theme_font_override("font", load("res://assets/fonts/Lingo2.ttf"))
45 entry.add_theme_font_size_override("font_size", 36) 49 entry.add_theme_font_size_override("font_size", 36)
46 entry.add_theme_color_override("font_color", Color(0, 0, 0, 1)) 50 entry.add_theme_color_override("font_color", Color(0, 0, 0, 1))
47 entry.add_theme_color_override("cursor_color", Color(0, 0, 0, 1)) 51 entry.add_theme_color_override("cursor_color", Color(0, 0, 0, 1))
48 entry.add_theme_stylebox_override("focus", entry_style) 52 entry.add_theme_stylebox_override("focus", entry_style)
49 panel.add_child(entry)
50 entry.text_submitted.connect(text_entered) 53 entry.text_submitted.connect(text_entered)
51 54
55 var tc_arranger = VBoxContainer.new()
56 tc_arranger.add_child(label)
57 tc_arranger.add_child(entry)
58 tc_arranger.add_theme_constant_override("separation", 40)
59 panel.add_child(tc_arranger)
60
61 var tracker_margins = MarginContainer.new()
62 tracker_margins.name = "Locations"
63 tracker_margins.add_theme_constant_override("margin_top", 60)
64 tracker_margins.add_theme_constant_override("margin_left", 60)
65 tracker_margins.add_theme_constant_override("margin_right", 60)
66 tracker_margins.add_theme_constant_override("margin_bottom", 60)
67 tabs.add_child(tracker_margins)
68
69 tracker_label = RichTextLabel.new()
70 tracker_margins.add_child(tracker_label)
71
52 72
53func _input(event): 73func _input(event):
54 if global.loaded and event is InputEventKey and event.pressed: 74 if global.loaded and event is InputEventKey and event.pressed:
@@ -57,7 +77,7 @@ func _input(event):
57 is_open = true 77 is_open = true
58 get_tree().paused = true 78 get_tree().paused = true
59 Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) 79 Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
60 panel.visible = true 80 tabs.visible = true
61 entry.grab_focus() 81 entry.grab_focus()
62 get_viewport().set_input_as_handled() 82 get_viewport().set_input_as_handled()
63 else: 83 else:
@@ -72,7 +92,7 @@ func dismiss():
72 if is_open: 92 if is_open:
73 get_tree().paused = false 93 get_tree().paused = false
74 Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) 94 Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
75 panel.visible = false 95 tabs.visible = false
76 is_open = false 96 is_open = false
77 97
78 98
@@ -93,3 +113,23 @@ func text_entered(text):
93 return 113 return
94 114
95 ap.client.say(cmd) 115 ap.client.say(cmd)
116
117
118func update_locations():
119 var ap = global.get_node("Archipelago")
120 var gamedata = global.get_node("Gamedata")
121
122 tracker_label.clear()
123 tracker_label.push_font(preload("res://assets/fonts/Lingo2.ttf"))
124 tracker_label.push_font_size(24)
125
126 var location_names = []
127 for location_id in ap.client._accessible_locations:
128 if not ap.client._checked_locations.has(location_id):
129 var location_name = gamedata.location_name_by_id.get(location_id, "(Unknown)")
130 location_names.append(location_name)
131
132 location_names.sort()
133
134 for location_name in location_names:
135 tracker_label.append_text("[p]%s[/p]" % location_name)