From b524e153ad71e368afbe50da78c4b73c3ac65c5f Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sat, 27 Sep 2025 11:10:07 -0400 Subject: Added accessible locations tab to game --- apworld/client/textclient.gd | 86 ++++++++++++++++++++++++++++++++------------ 1 file changed, 63 insertions(+), 23 deletions(-) (limited to 'apworld/client/textclient.gd') 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 @@ extends CanvasLayer +var tabs var panel var label var entry +var tracker_label var is_open = false @@ -10,26 +12,32 @@ func _ready(): process_mode = ProcessMode.PROCESS_MODE_ALWAYS layer = 2 - panel = Panel.new() - panel.set_name("Panel") - panel.offset_left = 100 - panel.offset_right = 1820 - panel.offset_top = 100 - panel.offset_bottom = 980 - panel.visible = false - add_child(panel) + tabs = TabContainer.new() + tabs.name = "Tabs" + tabs.offset_left = 100 + tabs.offset_right = 1820 + tabs.offset_top = 100 + tabs.offset_bottom = 980 + tabs.visible = false + tabs.theme = preload("res://assets/themes/baseUI.tres") + tabs.add_theme_font_size_override("font_size", 36) + add_child(tabs) + + panel = MarginContainer.new() + panel.name = "Text Client" + panel.add_theme_constant_override("margin_top", 60) + panel.add_theme_constant_override("margin_left", 60) + panel.add_theme_constant_override("margin_right", 60) + panel.add_theme_constant_override("margin_bottom", 60) + tabs.add_child(panel) label = RichTextLabel.new() label.set_name("Label") - label.offset_left = 80 - label.offset_right = 1640 - label.offset_top = 80 - label.offset_bottom = 720 label.scroll_following = true label.selection_enabled = true - panel.add_child(label) - - label.push_font(load("res://assets/fonts/Lingo2.ttf")) + label.size_flags_horizontal = Control.SIZE_EXPAND_FILL + label.size_flags_vertical = Control.SIZE_EXPAND_FILL + label.push_font(preload("res://assets/fonts/Lingo2.ttf")) label.push_font_size(36) var entry_style = StyleBoxFlat.new() @@ -37,18 +45,30 @@ func _ready(): entry = LineEdit.new() entry.set_name("Entry") - entry.offset_left = 80 - entry.offset_right = 1640 - entry.offset_top = 760 - entry.offset_bottom = 840 - entry.add_theme_font_override("font", load("res://assets/fonts/Lingo2.ttf")) + entry.add_theme_font_override("font", preload("res://assets/fonts/Lingo2.ttf")) entry.add_theme_font_size_override("font_size", 36) entry.add_theme_color_override("font_color", Color(0, 0, 0, 1)) entry.add_theme_color_override("cursor_color", Color(0, 0, 0, 1)) entry.add_theme_stylebox_override("focus", entry_style) - panel.add_child(entry) entry.text_submitted.connect(text_entered) + var tc_arranger = VBoxContainer.new() + tc_arranger.add_child(label) + tc_arranger.add_child(entry) + tc_arranger.add_theme_constant_override("separation", 40) + panel.add_child(tc_arranger) + + var tracker_margins = MarginContainer.new() + tracker_margins.name = "Locations" + tracker_margins.add_theme_constant_override("margin_top", 60) + tracker_margins.add_theme_constant_override("margin_left", 60) + tracker_margins.add_theme_constant_override("margin_right", 60) + tracker_margins.add_theme_constant_override("margin_bottom", 60) + tabs.add_child(tracker_margins) + + tracker_label = RichTextLabel.new() + tracker_margins.add_child(tracker_label) + func _input(event): if global.loaded and event is InputEventKey and event.pressed: @@ -57,7 +77,7 @@ func _input(event): is_open = true get_tree().paused = true Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) - panel.visible = true + tabs.visible = true entry.grab_focus() get_viewport().set_input_as_handled() else: @@ -72,7 +92,7 @@ func dismiss(): if is_open: get_tree().paused = false Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) - panel.visible = false + tabs.visible = false is_open = false @@ -93,3 +113,23 @@ func text_entered(text): return ap.client.say(cmd) + + +func update_locations(): + var ap = global.get_node("Archipelago") + var gamedata = global.get_node("Gamedata") + + tracker_label.clear() + tracker_label.push_font(preload("res://assets/fonts/Lingo2.ttf")) + tracker_label.push_font_size(24) + + var location_names = [] + for location_id in ap.client._accessible_locations: + if not ap.client._checked_locations.has(location_id): + var location_name = gamedata.location_name_by_id.get(location_id, "(Unknown)") + location_names.append(location_name) + + location_names.sort() + + for location_name in location_names: + tracker_label.append_text("[p]%s[/p]" % location_name) -- cgit 1.4.1