diff options
Diffstat (limited to 'apworld/client/gamedata.gd')
| -rw-r--r-- | apworld/client/gamedata.gd | 35 |
1 files changed, 27 insertions, 8 deletions
| diff --git a/apworld/client/gamedata.gd b/apworld/client/gamedata.gd index 1424721..d7e3136 100644 --- a/apworld/client/gamedata.gd +++ b/apworld/client/gamedata.gd | |||
| @@ -14,6 +14,8 @@ 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 ending_display_name_by_name = {} | ||
| 18 | var port_id_by_ap_id = {} | ||
| 17 | 19 | ||
| 18 | var kSYMBOL_ITEMS | 20 | var 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 | ||
| 164 | func get_door_map_name(door_id): | 177 | func 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 | ||
| @@ -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 | ||
| 263 | func _get_letter_location_name(letter): | 282 | func _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 | ||
