From a752ab325cf46d35a90606a354775799977dccb0 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Thu, 4 Sep 2025 15:46:25 -0400 Subject: [Data] Strip unnecessary AP IDs This was causing issues in the client, specifically for The Ancient. --- tools/assign_ids/main.cpp | 77 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 61 insertions(+), 16 deletions(-) (limited to 'tools/assign_ids') diff --git a/tools/assign_ids/main.cpp b/tools/assign_ids/main.cpp index 6eb41e3..e3add66 100644 --- a/tools/assign_ids/main.cpp +++ b/tools/assign_ids/main.cpp @@ -40,6 +40,7 @@ class AssignIds { ReadIds(ids_path); ProcessMaps(datadir_path); + ProcessSpecialIds(); ProcessProgressivesFile(datadir_path / "progressives.txtpb"); WriteIds(ids_path); @@ -72,7 +73,7 @@ class AssignIds { } void WriteIds(std::filesystem::path path) { - WriteIdsAsYaml(id_mappings_, path.string()); + WriteIdsAsYaml(output_, path.string()); } void ProcessMaps(std::filesystem::path path) { @@ -109,14 +110,18 @@ class AssignIds { return; } + auto& maps = *output_.mutable_maps(); + auto& doors = *maps[current_map_name].mutable_doors(); + if (!id_mappings_.maps().contains(current_map_name) || !id_mappings_.maps() .at(current_map_name) .doors() .contains(h_door.name())) { - auto& maps = *id_mappings_.mutable_maps(); - auto& doors = *maps[current_map_name].mutable_doors(); doors[h_door.name()] = next_id_++; + } else { + doors[h_door.name()] = + id_mappings_.maps().at(current_map_name).doors().at(h_door.name()); } } @@ -131,6 +136,10 @@ class AssignIds { void ProcessRoom(const HumanRoom& h_room, const std::string& current_map_name) { for (const HumanPanel& h_panel : h_room.panels()) { + auto& maps = *output_.mutable_maps(); + auto& rooms = *maps[current_map_name].mutable_rooms(); + auto& panels = *rooms[h_room.name()].mutable_panels(); + if (!id_mappings_.maps().contains(current_map_name) || !id_mappings_.maps() .at(current_map_name) @@ -142,23 +151,33 @@ class AssignIds { .at(h_room.name()) .panels() .contains(h_panel.name())) { - auto& maps = *id_mappings_.mutable_maps(); - auto& rooms = *maps[current_map_name].mutable_rooms(); - auto& panels = *rooms[h_room.name()].mutable_panels(); panels[h_panel.name()] = next_id_++; + } else { + panels[h_panel.name()] = id_mappings_.maps() + .at(current_map_name) + .rooms() + .at(h_room.name()) + .panels() + .at(h_panel.name()); } } for (const HumanLetter& h_letter : h_room.letters()) { std::string lettername = GetLetterName(h_letter.key(), h_letter.level2()); + auto& letters = *output_.mutable_letters(); if (!id_mappings_.letters().contains(lettername)) { - auto& letters = *id_mappings_.mutable_letters(); letters[lettername] = next_id_++; + } else { + letters[lettername] = id_mappings_.letters().at(lettername); } } for (const HumanMastery& h_mastery : h_room.masteries()) { + auto& maps = *output_.mutable_maps(); + auto& rooms = *maps[current_map_name].mutable_rooms(); + auto& masteries = *rooms[h_room.name()].mutable_masteries(); + if (!id_mappings_.maps().contains(current_map_name) || !id_mappings_.maps() .at(current_map_name) @@ -170,17 +189,24 @@ class AssignIds { .at(h_room.name()) .masteries() .contains(h_mastery.name())) { - auto& maps = *id_mappings_.mutable_maps(); - auto& rooms = *maps[current_map_name].mutable_rooms(); - auto& masteries = *rooms[h_room.name()].mutable_masteries(); masteries[h_mastery.name()] = next_id_++; + } else { + masteries[h_mastery.name()] = id_mappings_.maps() + .at(current_map_name) + .rooms() + .at(h_room.name()) + .masteries() + .at(h_mastery.name()); } } for (const HumanEnding& h_ending : h_room.endings()) { + auto& endings = *output_.mutable_endings(); + if (!id_mappings_.endings().contains(h_ending.name())) { - auto& endings = *id_mappings_.mutable_endings(); endings[h_ending.name()] = next_id_++; + } else { + endings[h_ending.name()] = id_mappings_.endings().at(h_ending.name()); } } @@ -189,6 +215,10 @@ class AssignIds { continue; } + auto& maps = *output_.mutable_maps(); + auto& rooms = *maps[current_map_name].mutable_rooms(); + auto& keyholders = *rooms[h_room.name()].mutable_keyholders(); + if (!id_mappings_.maps().contains(current_map_name) || !id_mappings_.maps() .at(current_map_name) @@ -200,25 +230,39 @@ class AssignIds { .at(h_room.name()) .keyholders() .contains(h_keyholder.name())) { - auto& maps = *id_mappings_.mutable_maps(); - auto& rooms = *maps[current_map_name].mutable_rooms(); - auto& keyholders = *rooms[h_room.name()].mutable_keyholders(); keyholders[h_keyholder.name()] = next_id_++; + } else { + keyholders[h_keyholder.name()] = id_mappings_.maps() + .at(current_map_name) + .rooms() + .at(h_room.name()) + .keyholders() + .at(h_keyholder.name()); } } } + void ProcessSpecialIds() { + auto& specials = *output_.mutable_special(); + + for (const auto& [special_name, ap_id] : id_mappings_.special()) { + specials[special_name] = ap_id; + } + } + void ProcessProgressivesFile(std::filesystem::path path) { if (!std::filesystem::exists(path)) { return; } auto h_progs = ReadMessageFromFile(path.string()); - auto& progs = *id_mappings_.mutable_progressives(); + auto& progs = *output_.mutable_progressives(); for (const HumanProgressive& h_prog : h_progs.progressives()) { - if (!progs.contains(h_prog.name())) { + if (!id_mappings_.progressives().contains(h_prog.name())) { progs[h_prog.name()] = next_id_++; + } else { + progs[h_prog.name()] = id_mappings_.progressives().at(h_prog.name()); } } } @@ -237,6 +281,7 @@ class AssignIds { uint64_t next_id_ = 1; IdMappings id_mappings_; + IdMappings output_; }; } // namespace -- cgit 1.4.1