diff options
Diffstat (limited to 'apworld/client/textclient.gd')
-rw-r--r-- | apworld/client/textclient.gd | 86 |
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 @@ | |||
1 | extends CanvasLayer | 1 | extends CanvasLayer |
2 | 2 | ||
3 | var tabs | ||
3 | var panel | 4 | var panel |
4 | var label | 5 | var label |
5 | var entry | 6 | var entry |
7 | var tracker_label | ||
6 | var is_open = false | 8 | var 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 | ||
53 | func _input(event): | 73 | func _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 | |||
118 | func 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) | ||