diff options
Diffstat (limited to 'apworld/client/gamedata.gd')
| -rw-r--r-- | apworld/client/gamedata.gd | 30 |
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 = [] | |||
| 15 | var anti_trap_ids = {} | 15 | var anti_trap_ids = {} |
| 16 | var location_name_by_id = {} | 16 | var location_name_by_id = {} |
| 17 | var ending_display_name_by_name = {} | 17 | var ending_display_name_by_name = {} |
| 18 | var port_id_by_ap_id = {} | ||
| 18 | 19 | ||
| 19 | var kSYMBOL_ITEMS | 20 | var 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 | ||
| 167 | func get_door_map_name(door_id): | 177 | func 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 | ||
| 266 | func _get_letter_location_name(letter): | 282 | func _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 | ||
