From 7f82beb120e222ace6c258fc3982b5988f9ae070 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Tue, 2 Sep 2025 14:09:35 -0400 Subject: Added keyholder sanity --- tools/assign_ids/main.cpp | 23 +++++++++++++++++++++++ tools/datapacker/main.cpp | 12 ++++++++++++ tools/util/ids_yaml_format.cpp | 15 +++++++++++++++ 3 files changed, 50 insertions(+) (limited to 'tools') diff --git a/tools/assign_ids/main.cpp b/tools/assign_ids/main.cpp index 3a2f347..6eb41e3 100644 --- a/tools/assign_ids/main.cpp +++ b/tools/assign_ids/main.cpp @@ -183,6 +183,29 @@ class AssignIds { endings[h_ending.name()] = next_id_++; } } + + for (const HumanKeyholder& h_keyholder : h_room.keyholders()) { + if (!h_keyholder.has_key()) { + continue; + } + + if (!id_mappings_.maps().contains(current_map_name) || + !id_mappings_.maps() + .at(current_map_name) + .rooms() + .contains(h_room.name()) || + !id_mappings_.maps() + .at(current_map_name) + .rooms() + .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_++; + } + } } void ProcessProgressivesFile(std::filesystem::path path) { diff --git a/tools/datapacker/main.cpp b/tools/datapacker/main.cpp index 5ed82cc..d7e0b69 100644 --- a/tools/datapacker/main.cpp +++ b/tools/datapacker/main.cpp @@ -293,6 +293,10 @@ class DataPacker { keyholder.set_path(h_keyholder.path()); + if (h_keyholder.has_key()) { + keyholder.set_key(h_keyholder.key()); + } + return keyholder_id; } @@ -592,6 +596,14 @@ class DataPacker { .mutable_masteries(mastery_id) ->set_ap_id(ap_id); } + + for (const auto& [keyholder_name, ap_id] : room.keyholders()) { + uint64_t keyholder_id = container_.FindOrAddKeyholder( + map_name, room_name, keyholder_name, std::nullopt, std::nullopt); + container_.all_objects() + .mutable_keyholders(keyholder_id) + ->set_ap_id(ap_id); + } } } diff --git a/tools/util/ids_yaml_format.cpp b/tools/util/ids_yaml_format.cpp index ae62073..67c21d6 100644 --- a/tools/util/ids_yaml_format.cpp +++ b/tools/util/ids_yaml_format.cpp @@ -56,6 +56,14 @@ IdMappings ReadIdsFromYaml(const std::string& filename) { mastery_it.second.as(); } } + + if (room_it.second["keyholders"]) { + for (const auto& keyholder_it : room_it.second["keyholders"]) { + (*room_ids.mutable_keyholders())[keyholder_it.first + .as()] = + keyholder_it.second.as(); + } + } } } @@ -124,6 +132,13 @@ void WriteIdsAsYaml(const IdMappings& ids, const std::string& filename) { mastery_id; }); + OperateOnSortedMap(room_ids.keyholders(), + [&room_node](const std::string& keyholder_name, + uint64_t keyholder_id) { + room_node["keyholders"][keyholder_name] = + keyholder_id; + }); + map_node["rooms"][room_name] = std::move(room_node); }); -- cgit 1.4.1