diff options
| author | Star Rauchenberger <fefferburbia@gmail.com> | 2025-09-02 14:09:35 -0400 |
|---|---|---|
| committer | Star Rauchenberger <fefferburbia@gmail.com> | 2025-09-02 14:09:35 -0400 |
| commit | 7f82beb120e222ace6c258fc3982b5988f9ae070 (patch) | |
| tree | 6a9fdf65badf1ed5e7d26b9a07bf0b0e840ca10e /tools | |
| parent | 7f5f14ddb5a67e1ccfdc7aa3d68d829473d0b745 (diff) | |
| download | lingo2-archipelago-7f82beb120e222ace6c258fc3982b5988f9ae070.tar.gz lingo2-archipelago-7f82beb120e222ace6c258fc3982b5988f9ae070.tar.bz2 lingo2-archipelago-7f82beb120e222ace6c258fc3982b5988f9ae070.zip | |
Added keyholder sanity
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/assign_ids/main.cpp | 23 | ||||
| -rw-r--r-- | tools/datapacker/main.cpp | 12 | ||||
| -rw-r--r-- | tools/util/ids_yaml_format.cpp | 15 |
3 files changed, 50 insertions, 0 deletions
| 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 { | |||
| 183 | endings[h_ending.name()] = next_id_++; | 183 | endings[h_ending.name()] = next_id_++; |
| 184 | } | 184 | } |
| 185 | } | 185 | } |
| 186 | |||
| 187 | for (const HumanKeyholder& h_keyholder : h_room.keyholders()) { | ||
| 188 | if (!h_keyholder.has_key()) { | ||
| 189 | continue; | ||
| 190 | } | ||
| 191 | |||
| 192 | if (!id_mappings_.maps().contains(current_map_name) || | ||
| 193 | !id_mappings_.maps() | ||
| 194 | .at(current_map_name) | ||
| 195 | .rooms() | ||
| 196 | .contains(h_room.name()) || | ||
| 197 | !id_mappings_.maps() | ||
| 198 | .at(current_map_name) | ||
| 199 | .rooms() | ||
| 200 | .at(h_room.name()) | ||
| 201 | .keyholders() | ||
| 202 | .contains(h_keyholder.name())) { | ||
| 203 | auto& maps = *id_mappings_.mutable_maps(); | ||
| 204 | auto& rooms = *maps[current_map_name].mutable_rooms(); | ||
| 205 | auto& keyholders = *rooms[h_room.name()].mutable_keyholders(); | ||
| 206 | keyholders[h_keyholder.name()] = next_id_++; | ||
| 207 | } | ||
| 208 | } | ||
| 186 | } | 209 | } |
| 187 | 210 | ||
| 188 | void ProcessProgressivesFile(std::filesystem::path path) { | 211 | 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 { | |||
| 293 | 293 | ||
| 294 | keyholder.set_path(h_keyholder.path()); | 294 | keyholder.set_path(h_keyholder.path()); |
| 295 | 295 | ||
| 296 | if (h_keyholder.has_key()) { | ||
| 297 | keyholder.set_key(h_keyholder.key()); | ||
| 298 | } | ||
| 299 | |||
| 296 | return keyholder_id; | 300 | return keyholder_id; |
| 297 | } | 301 | } |
| 298 | 302 | ||
| @@ -592,6 +596,14 @@ class DataPacker { | |||
| 592 | .mutable_masteries(mastery_id) | 596 | .mutable_masteries(mastery_id) |
| 593 | ->set_ap_id(ap_id); | 597 | ->set_ap_id(ap_id); |
| 594 | } | 598 | } |
| 599 | |||
| 600 | for (const auto& [keyholder_name, ap_id] : room.keyholders()) { | ||
| 601 | uint64_t keyholder_id = container_.FindOrAddKeyholder( | ||
| 602 | map_name, room_name, keyholder_name, std::nullopt, std::nullopt); | ||
| 603 | container_.all_objects() | ||
| 604 | .mutable_keyholders(keyholder_id) | ||
| 605 | ->set_ap_id(ap_id); | ||
| 606 | } | ||
| 595 | } | 607 | } |
| 596 | } | 608 | } |
| 597 | 609 | ||
| 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) { | |||
| 56 | mastery_it.second.as<uint64_t>(); | 56 | mastery_it.second.as<uint64_t>(); |
| 57 | } | 57 | } |
| 58 | } | 58 | } |
| 59 | |||
| 60 | if (room_it.second["keyholders"]) { | ||
| 61 | for (const auto& keyholder_it : room_it.second["keyholders"]) { | ||
| 62 | (*room_ids.mutable_keyholders())[keyholder_it.first | ||
| 63 | .as<std::string>()] = | ||
| 64 | keyholder_it.second.as<uint64_t>(); | ||
| 65 | } | ||
| 66 | } | ||
| 59 | } | 67 | } |
| 60 | } | 68 | } |
| 61 | 69 | ||
| @@ -124,6 +132,13 @@ void WriteIdsAsYaml(const IdMappings& ids, const std::string& filename) { | |||
| 124 | mastery_id; | 132 | mastery_id; |
| 125 | }); | 133 | }); |
| 126 | 134 | ||
| 135 | OperateOnSortedMap(room_ids.keyholders(), | ||
| 136 | [&room_node](const std::string& keyholder_name, | ||
| 137 | uint64_t keyholder_id) { | ||
| 138 | room_node["keyholders"][keyholder_name] = | ||
| 139 | keyholder_id; | ||
| 140 | }); | ||
| 141 | |||
| 127 | map_node["rooms"][room_name] = std::move(room_node); | 142 | map_node["rooms"][room_name] = std::move(room_node); |
| 128 | }); | 143 | }); |
| 129 | 144 | ||
