From 1157a68696ba5766a8d134bac5904de8ede6680f Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Mon, 22 Sep 2025 12:07:02 -0400 Subject: [Client] Handle worldport shuffle --- client/Archipelago/gamedata.gd | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'client/Archipelago/gamedata.gd') diff --git a/client/Archipelago/gamedata.gd b/client/Archipelago/gamedata.gd index 41d966a..9eeec3b 100644 --- a/client/Archipelago/gamedata.gd +++ b/client/Archipelago/gamedata.gd @@ -6,6 +6,7 @@ var objects var door_id_by_map_node_path = {} var painting_id_by_map_node_path = {} var panel_id_by_map_node_path = {} +var port_id_by_map_node_path = {} var door_id_by_ap_id = {} var map_id_by_name = {} var progressive_id_by_ap_id = {} @@ -79,6 +80,16 @@ func load(data_bytes): var _map_data = painting_id_by_map_node_path[map.get_name()] + for port in objects.get_ports(): + var room = objects.get_rooms()[port.get_room_id()] + var map = objects.get_maps()[room.get_map_id()] + + if not map.get_name() in port_id_by_map_node_path: + port_id_by_map_node_path[map.get_name()] = {} + + var map_data = port_id_by_map_node_path[map.get_name()] + map_data[port.get_path()] = port.get_id() + for progressive in objects.get_progressives(): progressive_id_by_ap_id[progressive.get_ap_id()] = progressive.get_id() @@ -121,6 +132,14 @@ func get_panel_for_map_node_path(map_name, node_path): return map_data.get(node_path, null) +func get_port_for_map_node_path(map_name, node_path): + if not port_id_by_map_node_path.has(map_name): + return null + + var map_data = port_id_by_map_node_path[map_name] + return map_data.get(node_path, null) + + func get_door_ap_id(door_id): var door = objects.get_doors()[door_id] if door.has_ap_id(): -- cgit 1.4.1