From 86a5188548f80eab6bce3cb6686c49f8448683db Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sat, 27 Sep 2025 11:37:51 -0400 Subject: Added locations overlay --- apworld/client/manager.gd | 5 +++++ apworld/client/pauseMenu.gd | 20 ++++++++++++++++++++ apworld/client/textclient.gd | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+) (limited to 'apworld') diff --git a/apworld/client/manager.gd b/apworld/client/manager.gd index 7f4a8a6..2c25269 100644 --- a/apworld/client/manager.gd +++ b/apworld/client/manager.gd @@ -14,6 +14,7 @@ var ap_user = "" var ap_pass = "" var connection_history = [] var show_compass = false +var show_locations = false var client var keyboard @@ -89,6 +90,9 @@ func _init(): if data.size() > 4: show_compass = data[4] + if data.size() > 5: + show_locations = data[5] + func _ready(): client = SCRIPT_client.new() @@ -123,6 +127,7 @@ func saveSettings(): ap_pass, connection_history, show_compass, + show_locations, ] file.store_var(data, true) file.close() diff --git a/apworld/client/pauseMenu.gd b/apworld/client/pauseMenu.gd index 8bc12c6..d1b4bb3 100644 --- a/apworld/client/pauseMenu.gd +++ b/apworld/client/pauseMenu.gd @@ -1,6 +1,7 @@ extends "res://scripts/ui/pauseMenu.gd" var compass_button +var locations_button func _ready(): @@ -19,6 +20,15 @@ func _ready(): compass_button.pressed.connect(_toggle_compass) ap_panel.add_child(compass_button) + locations_button = CheckBox.new() + locations_button.text = "show locations overlay" + locations_button.button_pressed = ap.show_locations + locations_button.position = Vector2(65, 200) + locations_button.theme = preload("res://assets/themes/baseUI.tres") + locations_button.add_theme_font_size_override("font_size", 60) + locations_button.pressed.connect(_toggle_locations) + ap_panel.add_child(locations_button) + super._ready() @@ -32,6 +42,7 @@ func _main_menu(): global.get_node("Archipelago").disconnect_from_ap() global.get_node("Messages").clear() global.get_node("Compass").visible = false + global.get_node("Textclient").reset() autosplitter.reset() _unpause_game() @@ -49,3 +60,12 @@ func _toggle_compass(): var compass = global.get_node("Compass") compass.visible = compass_button.button_pressed + + +func _toggle_locations(): + var ap = global.get_node("Archipelago") + ap.show_locations = locations_button.button_pressed + ap.saveSettings() + + var textclient = global.get_node("Textclient") + textclient.update_locations_visibility() diff --git a/apworld/client/textclient.gd b/apworld/client/textclient.gd index e345489..1b36c29 100644 --- a/apworld/client/textclient.gd +++ b/apworld/client/textclient.gd @@ -7,11 +7,25 @@ var entry var tracker_label var is_open = false +var locations_overlay + func _ready(): process_mode = ProcessMode.PROCESS_MODE_ALWAYS layer = 2 + locations_overlay = RichTextLabel.new() + locations_overlay.name = "LocationsOverlay" + locations_overlay.offset_top = 220 + locations_overlay.offset_bottom = 720 + locations_overlay.offset_left = 20 + locations_overlay.anchor_right = 1.0 + locations_overlay.offset_right = -20 + locations_overlay.scroll_active = false + locations_overlay.mouse_filter = Control.MOUSE_FILTER_IGNORE + add_child(locations_overlay) + update_locations_visibility() + tabs = TabContainer.new() tabs.name = "Tabs" tabs.offset_left = 100 @@ -123,6 +137,13 @@ func update_locations(): tracker_label.push_font(preload("res://assets/fonts/Lingo2.ttf")) tracker_label.push_font_size(24) + locations_overlay.clear() + locations_overlay.push_font(preload("res://assets/fonts/Lingo2.ttf")) + locations_overlay.push_font_size(24) + locations_overlay.push_color(Color(0.9, 0.9, 0.9, 1)) + locations_overlay.push_outline_color(Color(0, 0, 0, 1)) + locations_overlay.push_outline_size(2) + var location_names = [] for location_id in ap.client._accessible_locations: if not ap.client._checked_locations.has(location_id): @@ -131,5 +152,21 @@ func update_locations(): location_names.sort() + var count = 0 for location_name in location_names: tracker_label.append_text("[p]%s[/p]" % location_name) + if count < 18: + locations_overlay.append_text("[p align=right]%s[/p]" % location_name) + count += 1 + + if count > 18: + locations_overlay.append_text("[p align=right][lb]...[rb][/p]") + + +func update_locations_visibility(): + var ap = global.get_node("Archipelago") + locations_overlay.visible = ap.show_locations + + +func reset(): + locations_overlay.clear() -- cgit 1.4.1