diff options
Diffstat (limited to 'apworld/client')
| -rw-r--r-- | apworld/client/gamedata.gd | 27 | ||||
| -rw-r--r-- | apworld/client/manager.gd | 5 | ||||
| -rw-r--r-- | apworld/client/pauseMenu.gd | 19 | ||||
| -rw-r--r-- | apworld/client/player.gd | 3 | ||||
| -rw-r--r-- | apworld/client/textclient.gd | 6 |
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 = {} | |||
| 14 | var symbol_item_ids = [] | 14 | var symbol_item_ids = [] |
| 15 | var anti_trap_ids = {} | 15 | var anti_trap_ids = {} |
| 16 | var location_name_by_id = {} | 16 | var location_name_by_id = {} |
| 17 | var map_id_by_location_id = {} | ||
| 17 | var ending_display_name_by_name = {} | 18 | var ending_display_name_by_name = {} |
| 18 | var port_id_by_ap_id = {} | 19 | var port_id_by_ap_id = {} |
| 19 | var map_id_by_rte_ap_id = {} | 20 | var 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 | ||
| 211 | func 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 | |||
| 217 | func 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 | |||
| 197 | func _get_map_object_map_name(obj): | 224 | func _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 = [] | |||
| 14 | var show_compass = false | 14 | var show_compass = false |
| 15 | var show_locations = false | 15 | var show_locations = false |
| 16 | var show_minimap = false | 16 | var show_minimap = false |
| 17 | var prioritize_current_map = false | ||
| 17 | 18 | ||
| 18 | var client | 19 | var client |
| 19 | var keyboard | 20 | var 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" | |||
| 3 | var compass_button | 3 | var compass_button |
| 4 | var locations_button | 4 | var locations_button |
| 5 | var minimap_button | 5 | var minimap_button |
| 6 | var prioritize_current_button | ||
| 6 | 7 | ||
| 7 | 8 | ||
| 8 | func _ready(): | 9 | func _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 | |||
| 104 | func _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 | ||
