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.gd30
1 files changed, 23 insertions, 7 deletions
diff --git a/apworld/client/gamedata.gd b/apworld/client/gamedata.gd index 334d42a..d7e3136 100644 --- a/apworld/client/gamedata.gd +++ b/apworld/client/gamedata.gd
@@ -15,6 +15,7 @@ var 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 = {} 17var ending_display_name_by_name = {}
18var port_id_by_ap_id = {}
18 19
19var kSYMBOL_ITEMS 20var kSYMBOL_ITEMS
20 21
@@ -72,7 +73,13 @@ func load(data_bytes):
72 73
73 if door.has_ap_id(): 74 if door.has_ap_id():
74 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()
75 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)
76 83
77 for painting in objects.get_paintings(): 84 for painting in objects.get_paintings():
78 var room = objects.get_rooms()[painting.get_room_id()] 85 var room = objects.get_rooms()[painting.get_room_id()]
@@ -93,6 +100,9 @@ func load(data_bytes):
93 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()]
94 map_data[port.get_path()] = port.get_id() 101 map_data[port.get_path()] = port.get_id()
95 102
103 if port.has_ap_id():
104 port_id_by_ap_id[port.get_ap_id()] = port.get_id()
105
96 for progressive in objects.get_progressives(): 106 for progressive in objects.get_progressives():
97 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()
98 108
@@ -166,8 +176,7 @@ func get_door_ap_id(door_id):
166 176
167func get_door_map_name(door_id): 177func get_door_map_name(door_id):
168 var door = objects.get_doors()[door_id] 178 var door = objects.get_doors()[door_id]
169 var room = objects.get_rooms()[door.get_room_id()] 179 var map = objects.get_maps()[door.get_map_id()]
170 var map = objects.get_maps()[room.get_map_id()]
171 return map.get_name() 180 return map.get_name()
172 181
173 182
@@ -216,7 +225,11 @@ func _get_generated_door_location_name(door):
216 if door.get_type() != SCRIPT_proto.DoorType.STANDARD: 225 if door.get_type() != SCRIPT_proto.DoorType.STANDARD:
217 return null 226 return null
218 227
219 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 ):
220 return null 233 return null
221 234
222 if door.get_panels().size() > 4: 235 if door.get_panels().size() > 4:
@@ -227,8 +240,11 @@ func _get_generated_door_location_name(door):
227 var panel = objects.get_panels()[panel_id.get_panel()] 240 var panel = objects.get_panels()[panel_id.get_panel()]
228 var panel_room = objects.get_rooms()[panel.get_room_id()] 241 var panel_room = objects.get_rooms()[panel.get_room_id()]
229 # 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.
230 if not map_areas.has(panel_room.get_panel_display_name()): 243 var panel_display_name = ""
231 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)
232 248
233 if map_areas.size() > 1: 249 if map_areas.size() > 1:
234 return null 250 return null
@@ -264,7 +280,7 @@ func _get_generated_door_location_name(door):
264 280
265 281
266func _get_letter_location_name(letter): 282func _get_letter_location_name(letter):
267 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
268 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]
269 return "%s - %s" % [_get_room_object_map_name(letter), letter_name] 285 return "%s - %s" % [_get_room_object_map_name(letter), letter_name]
270 286