about summary refs log tree commit diff stats
path: root/apworld/client
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2026-02-23 12:46:37 -0500
committerStar Rauchenberger <fefferburbia@gmail.com>2026-02-23 12:46:37 -0500
commit0049d2995ca09324a9c973460c0a4acf97eba907 (patch)
tree1f684326f01c4fdfdb9a555f31d51821b9b3323e /apworld/client
parente38516f2436cb7c403da86d6d588b75644c8cdcf (diff)
downloadlingo2-archipelago-0049d2995ca09324a9c973460c0a4acf97eba907.tar.gz
lingo2-archipelago-0049d2995ca09324a9c973460c0a4acf97eba907.tar.bz2
lingo2-archipelago-0049d2995ca09324a9c973460c0a4acf97eba907.zip
Add settings to prioritize locations on current map
Diffstat (limited to 'apworld/client')
-rw-r--r--apworld/client/gamedata.gd27
-rw-r--r--apworld/client/manager.gd5
-rw-r--r--apworld/client/pauseMenu.gd19
-rw-r--r--apworld/client/player.gd3
-rw-r--r--apworld/client/textclient.gd6
5 files changed, 60 insertions, 0 deletions
diff --git a/apworld/client/gamedata.gd b/apworld/client/gamedata.gd index 373f981..a2e023c 100644 --- a/apworld/client/gamedata.gd +++ b/apworld/client/gamedata.gd
@@ -14,6 +14,7 @@ var letter_id_by_ap_id = {}
14var symbol_item_ids = [] 14var symbol_item_ids = []
15var anti_trap_ids = {} 15var anti_trap_ids = {}
16var location_name_by_id = {} 16var location_name_by_id = {}
17var map_id_by_location_id = {}
17var ending_display_name_by_name = {} 18var ending_display_name_by_name = {}
18var port_id_by_ap_id = {} 19var port_id_by_ap_id = {}
19var map_id_by_rte_ap_id = {} 20var map_id_by_rte_ap_id = {}
@@ -84,6 +85,7 @@ func load(data_bytes):
84 or door.get_type() == SCRIPT_proto.DoorType.GRAVESTONE 85 or door.get_type() == SCRIPT_proto.DoorType.GRAVESTONE
85 ): 86 ):
86 location_name_by_id[door.get_ap_id()] = _get_door_location_name(door) 87 location_name_by_id[door.get_ap_id()] = _get_door_location_name(door)
88 map_id_by_location_id[door.get_ap_id()] = map.get_id()
87 89
88 for painting in objects.get_paintings(): 90 for painting in objects.get_paintings():
89 var room = objects.get_rooms()[painting.get_room_id()] 91 var room = objects.get_rooms()[painting.get_room_id()]
@@ -114,18 +116,30 @@ func load(data_bytes):
114 letter_id_by_ap_id[letter.get_ap_id()] = letter.get_id() 116 letter_id_by_ap_id[letter.get_ap_id()] = letter.get_id()
115 location_name_by_id[letter.get_ap_id()] = _get_letter_location_name(letter) 117 location_name_by_id[letter.get_ap_id()] = _get_letter_location_name(letter)
116 118
119 var room = objects.get_rooms()[letter.get_room_id()]
120 map_id_by_location_id[letter.get_ap_id()] = room.get_map_id()
121
117 for mastery in objects.get_masteries(): 122 for mastery in objects.get_masteries():
118 location_name_by_id[mastery.get_ap_id()] = _get_mastery_location_name(mastery) 123 location_name_by_id[mastery.get_ap_id()] = _get_mastery_location_name(mastery)
119 124
125 var room = objects.get_rooms()[mastery.get_room_id()]
126 map_id_by_location_id[mastery.get_ap_id()] = room.get_map_id()
127
120 for ending in objects.get_endings(): 128 for ending in objects.get_endings():
121 var location_name = _get_ending_location_name(ending) 129 var location_name = _get_ending_location_name(ending)
122 location_name_by_id[ending.get_ap_id()] = location_name 130 location_name_by_id[ending.get_ap_id()] = location_name
123 ending_display_name_by_name[ending.get_name()] = location_name 131 ending_display_name_by_name[ending.get_name()] = location_name
124 132
133 var room = objects.get_rooms()[ending.get_room_id()]
134 map_id_by_location_id[ending.get_ap_id()] = room.get_map_id()
135
125 for keyholder in objects.get_keyholders(): 136 for keyholder in objects.get_keyholders():
126 if keyholder.has_key(): 137 if keyholder.has_key():
127 location_name_by_id[keyholder.get_ap_id()] = _get_keyholder_location_name(keyholder) 138 location_name_by_id[keyholder.get_ap_id()] = _get_keyholder_location_name(keyholder)
128 139
140 var room = objects.get_rooms()[keyholder.get_room_id()]
141 map_id_by_location_id[keyholder.get_ap_id()] = room.get_map_id()
142
129 for panel in objects.get_panels(): 143 for panel in objects.get_panels():
130 var room = objects.get_rooms()[panel.get_room_id()] 144 var room = objects.get_rooms()[panel.get_room_id()]
131 var map = objects.get_maps()[room.get_map_id()] 145 var map = objects.get_maps()[room.get_map_id()]
@@ -194,6 +208,19 @@ func get_worldport_display_name(port_id):
194 return "%s - %s" % [_get_room_object_map_name(port), port.get_display_name()] 208 return "%s - %s" % [_get_room_object_map_name(port), port.get_display_name()]
195 209
196 210
211func get_map_name_for_location(location_id):
212 var map_id = map_id_by_location_id[location_id]
213 var map = objects.get_maps()[map_id]
214 return map.get_name()
215
216
217func get_map_name_for_port(port_id):
218 var port = objects.get_ports()[port_id]
219 var room = objects.get_rooms()[port.get_room_id()]
220 var map = objects.get_maps()[room.get_map_id()]
221 return map.get_name()
222
223
197func _get_map_object_map_name(obj): 224func _get_map_object_map_name(obj):
198 return objects.get_maps()[obj.get_map_id()].get_display_name() 225 return objects.get_maps()[obj.get_map_id()].get_display_name()
199 226
diff --git a/apworld/client/manager.gd b/apworld/client/manager.gd index f10a0b7..9b790c0 100644 --- a/apworld/client/manager.gd +++ b/apworld/client/manager.gd
@@ -14,6 +14,7 @@ var connection_history = []
14var show_compass = false 14var show_compass = false
15var show_locations = false 15var show_locations = false
16var show_minimap = false 16var show_minimap = false
17var prioritize_current_map = false
17 18
18var client 19var client
19var keyboard 20var keyboard
@@ -130,6 +131,9 @@ func _init():
130 if data.size() > 6: 131 if data.size() > 6:
131 show_minimap = data[6] 132 show_minimap = data[6]
132 133
134 if data.size() > 7:
135 prioritize_current_map = data[7]
136
133 # We need to create a mapping from material paths to the original colors of 137 # We need to create a mapping from material paths to the original colors of
134 # those materials. We force reload the materials, overwriting any custom 138 # those materials. We force reload the materials, overwriting any custom
135 # textures, and create the mapping. We then reload the textures in case the 139 # textures, and create the mapping. We then reload the textures in case the
@@ -185,6 +189,7 @@ func saveSettings():
185 show_compass, 189 show_compass,
186 show_locations, 190 show_locations,
187 show_minimap, 191 show_minimap,
192 prioritize_current_map,
188 ] 193 ]
189 file.store_var(data, true) 194 file.store_var(data, true)
190 file.close() 195 file.close()
diff --git a/apworld/client/pauseMenu.gd b/apworld/client/pauseMenu.gd index 72b45e8..50a1e99 100644 --- a/apworld/client/pauseMenu.gd +++ b/apworld/client/pauseMenu.gd
@@ -3,6 +3,7 @@ extends "res://scripts/ui/pauseMenu.gd"
3var compass_button 3var compass_button
4var locations_button 4var locations_button
5var minimap_button 5var minimap_button
6var prioritize_current_button
6 7
7 8
8func _ready(): 9func _ready():
@@ -39,6 +40,15 @@ func _ready():
39 minimap_button.pressed.connect(_toggle_minimap) 40 minimap_button.pressed.connect(_toggle_minimap)
40 ap_panel.add_child(minimap_button) 41 ap_panel.add_child(minimap_button)
41 42
43 prioritize_current_button = CheckBox.new()
44 prioritize_current_button.text = "prioritize locations on current map"
45 prioritize_current_button.button_pressed = ap.prioritize_current_map
46 prioritize_current_button.position = Vector2(65, 400)
47 prioritize_current_button.theme = preload("res://assets/themes/baseUI.tres")
48 prioritize_current_button.add_theme_font_size_override("font_size", 60)
49 prioritize_current_button.pressed.connect(_toggle_prioritize_current)
50 ap_panel.add_child(prioritize_current_button)
51
42 super._ready() 52 super._ready()
43 53
44 54
@@ -89,3 +99,12 @@ func _toggle_minimap():
89 var minimap = get_tree().get_root().get_node("scene/Minimap") 99 var minimap = get_tree().get_root().get_node("scene/Minimap")
90 if minimap != null: 100 if minimap != null:
91 minimap.visible = ap.show_minimap 101 minimap.visible = ap.show_minimap
102
103
104func _toggle_prioritize_current():
105 var ap = global.get_node("Archipelago")
106 ap.prioritize_current_map = prioritize_current_button.button_pressed
107 ap.saveSettings()
108
109 var textclient = global.get_node("Textclient")
110 textclient.update_locations()
diff --git a/apworld/client/player.gd b/apworld/client/player.gd index dabc15d..dc05fc9 100644 --- a/apworld/client/player.gd +++ b/apworld/client/player.gd
@@ -196,6 +196,9 @@ func _ready():
196 minimap.visible = ap.show_minimap 196 minimap.visible = ap.show_minimap
197 get_parent().add_child.call_deferred(minimap) 197 get_parent().add_child.call_deferred(minimap)
198 198
199 var textclient = global.get_node("Textclient")
200 textclient.update_locations()
201
199 if ap.music_mapping.has(global.map): 202 if ap.music_mapping.has(global.map):
200 var song_setter = get_node_or_null("/root/scene/songSetter") 203 var song_setter = get_node_or_null("/root/scene/songSetter")
201 if song_setter: 204 if song_setter:
diff --git a/apworld/client/textclient.gd b/apworld/client/textclient.gd index ce28a3a..571f3d6 100644 --- a/apworld/client/textclient.gd +++ b/apworld/client/textclient.gd
@@ -205,6 +205,7 @@ func update_locations(reset_locations = true):
205 for location_id in ap.client._accessible_locations: 205 for location_id in ap.client._accessible_locations:
206 if not ap.client._checked_locations.has(location_id): 206 if not ap.client._checked_locations.has(location_id):
207 var location_name = gamedata.location_name_by_id.get(location_id, "(Unknown)") 207 var location_name = gamedata.location_name_by_id.get(location_id, "(Unknown)")
208 var map_name = gamedata.get_map_name_for_location(location_id)
208 ( 209 (
209 locations 210 locations
210 . append( 211 . append(
@@ -214,6 +215,7 @@ func update_locations(reset_locations = true):
214 "id": location_id, 215 "id": location_id,
215 "ignored": ap._ignored_locations.has(location_id), 216 "ignored": ap._ignored_locations.has(location_id),
216 "hint": ap.client._hinted_locations.has(location_id), 217 "hint": ap.client._hinted_locations.has(location_id),
218 "current": ap.prioritize_current_map and map_name == global.map,
217 } 219 }
218 ) 220 )
219 ) 221 )
@@ -221,6 +223,7 @@ func update_locations(reset_locations = true):
221 for port_id in ap.client._accessible_worldports: 223 for port_id in ap.client._accessible_worldports:
222 if not ap.client._checked_worldports.has(port_id): 224 if not ap.client._checked_worldports.has(port_id):
223 var port_name = gamedata.get_worldport_display_name(port_id) 225 var port_name = gamedata.get_worldport_display_name(port_id)
226 var map_name = gamedata.get_map_name_for_port(port_id)
224 ( 227 (
225 locations 228 locations
226 . append( 229 . append(
@@ -230,6 +233,7 @@ func update_locations(reset_locations = true):
230 "id": port_id, 233 "id": port_id,
231 "ignored": false, 234 "ignored": false,
232 "hint": false, 235 "hint": false,
236 "current": ap.prioritize_current_map and map_name == global.map,
233 } 237 }
234 ) 238 )
235 ) 239 )
@@ -362,6 +366,8 @@ func _cmp_tracker_objects(a, b) -> bool:
362 return !a["ignored"] 366 return !a["ignored"]
363 elif a["hint"] != b["hint"]: 367 elif a["hint"] != b["hint"]:
364 return a["hint"] 368 return a["hint"]
369 elif a["current"] != b["current"]:
370 return a["current"]
365 else: 371 else:
366 return a["name"] < b["name"] 372 return a["name"] < b["name"]
367 373