about summary refs log tree commit diff stats
path: root/apworld/client/gamedata.gd
diff options
context:
space:
mode:
Diffstat (limited to 'apworld/client/gamedata.gd')
-rw-r--r--apworld/client/gamedata.gd37
1 files changed, 28 insertions, 9 deletions
diff --git a/apworld/client/gamedata.gd b/apworld/client/gamedata.gd index 8e909dd..d7e3136 100644 --- a/apworld/client/gamedata.gd +++ b/apworld/client/gamedata.gd
@@ -14,6 +14,8 @@ 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 ending_display_name_by_name = {}
18var port_id_by_ap_id = {}
17 19
18var kSYMBOL_ITEMS 20var kSYMBOL_ITEMS
19 21
@@ -71,7 +73,13 @@ func load(data_bytes):
71 73
72 if door.has_ap_id(): 74 if door.has_ap_id():
73 door_id_by_ap_id[door.get_ap_id()] = door.get_id() 75 door_id_by_ap_id[door.get_ap_id()] = door.get_id()
74 location_name_by_id[door.get_ap_id()] = _get_door_location_name(door) 76
77 if (
78 door.get_type() == SCRIPT_proto.DoorType.STANDARD
79 or door.get_type() == SCRIPT_proto.DoorType.LOCATION_ONLY
80 or door.get_type() == SCRIPT_proto.DoorType.GRAVESTONE
81 ):
82 location_name_by_id[door.get_ap_id()] = _get_door_location_name(door)
75 83
76 for painting in objects.get_paintings(): 84 for painting in objects.get_paintings():
77 var room = objects.get_rooms()[painting.get_room_id()] 85 var room = objects.get_rooms()[painting.get_room_id()]
@@ -92,6 +100,9 @@ func load(data_bytes):
92 var map_data = port_id_by_map_node_path[map.get_name()] 100 var map_data = port_id_by_map_node_path[map.get_name()]
93 map_data[port.get_path()] = port.get_id() 101 map_data[port.get_path()] = port.get_id()
94 102
103 if port.has_ap_id():
104 port_id_by_ap_id[port.get_ap_id()] = port.get_id()
105
95 for progressive in objects.get_progressives(): 106 for progressive in objects.get_progressives():
96 progressive_id_by_ap_id[progressive.get_ap_id()] = progressive.get_id() 107 progressive_id_by_ap_id[progressive.get_ap_id()] = progressive.get_id()
97 108
@@ -103,7 +114,9 @@ func load(data_bytes):
103 location_name_by_id[mastery.get_ap_id()] = _get_mastery_location_name(mastery) 114 location_name_by_id[mastery.get_ap_id()] = _get_mastery_location_name(mastery)
104 115
105 for ending in objects.get_endings(): 116 for ending in objects.get_endings():
106 location_name_by_id[ending.get_ap_id()] = _get_ending_location_name(ending) 117 var location_name = _get_ending_location_name(ending)
118 location_name_by_id[ending.get_ap_id()] = location_name
119 ending_display_name_by_name[ending.get_name()] = location_name
107 120
108 for keyholder in objects.get_keyholders(): 121 for keyholder in objects.get_keyholders():
109 if keyholder.has_key(): 122 if keyholder.has_key():
@@ -163,8 +176,7 @@ func get_door_ap_id(door_id):
163 176
164func get_door_map_name(door_id): 177func get_door_map_name(door_id):
165 var door = objects.get_doors()[door_id] 178 var door = objects.get_doors()[door_id]
166 var room = objects.get_rooms()[door.get_room_id()] 179 var map = objects.get_maps()[door.get_map_id()]
167 var map = objects.get_maps()[room.get_map_id()]
168 return map.get_name() 180 return map.get_name()
169 181
170 182
@@ -175,7 +187,7 @@ func get_door_receivers(door_id):
175 187
176func get_worldport_display_name(port_id): 188func get_worldport_display_name(port_id):
177 var port = objects.get_ports()[port_id] 189 var port = objects.get_ports()[port_id]
178 return "%s - %s" % [_get_room_object_map_name(port), port.get_name()] 190 return "%s - %s" % [_get_room_object_map_name(port), port.get_display_name()]
179 191
180 192
181func _get_map_object_map_name(obj): 193func _get_map_object_map_name(obj):
@@ -213,7 +225,11 @@ func _get_generated_door_location_name(door):
213 if door.get_type() != SCRIPT_proto.DoorType.STANDARD: 225 if door.get_type() != SCRIPT_proto.DoorType.STANDARD:
214 return null 226 return null
215 227
216 if door.get_keyholders().size() > 0 or door.get_endings().size() > 0 or door.has_complete_at(): 228 if (
229 door.get_keyholders().size() > 0
230 or (door.has_white_ending() and door.get_white_ending())
231 or door.has_complete_at()
232 ):
217 return null 233 return null
218 234
219 if door.get_panels().size() > 4: 235 if door.get_panels().size() > 4:
@@ -224,8 +240,11 @@ func _get_generated_door_location_name(door):
224 var panel = objects.get_panels()[panel_id.get_panel()] 240 var panel = objects.get_panels()[panel_id.get_panel()]
225 var panel_room = objects.get_rooms()[panel.get_room_id()] 241 var panel_room = objects.get_rooms()[panel.get_room_id()]
226 # It's okay if panel_display_name is not present because then it's coalesced with other unnamed areas. 242 # It's okay if panel_display_name is not present because then it's coalesced with other unnamed areas.
227 if not map_areas.has(panel_room.get_panel_display_name()): 243 var panel_display_name = ""
228 map_areas.append(panel_room.get_panel_display_name()) 244 if panel_room.has_panel_display_name():
245 panel_display_name = panel_room.get_panel_display_name()
246 if not map_areas.has(panel_display_name):
247 map_areas.append(panel_display_name)
229 248
230 if map_areas.size() > 1: 249 if map_areas.size() > 1:
231 return null 250 return null
@@ -261,7 +280,7 @@ func _get_generated_door_location_name(door):
261 280
262 281
263func _get_letter_location_name(letter): 282func _get_letter_location_name(letter):
264 var letter_level = 2 if letter.get_level2() else 1 283 var letter_level = 2 if (letter.has_level2() and letter.get_level2()) else 1
265 var letter_name = "%s%d" % [letter.get_key().to_upper(), letter_level] 284 var letter_name = "%s%d" % [letter.get_key().to_upper(), letter_level]
266 return "%s - %s" % [_get_room_object_map_name(letter), letter_name] 285 return "%s - %s" % [_get_room_object_map_name(letter), letter_name]
267 286