summary refs log tree commit diff stats
path: root/tools
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2025-09-02 14:09:35 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2025-09-02 14:09:35 -0400
commit7f82beb120e222ace6c258fc3982b5988f9ae070 (patch)
tree6a9fdf65badf1ed5e7d26b9a07bf0b0e840ca10e /tools
parent7f5f14ddb5a67e1ccfdc7aa3d68d829473d0b745 (diff)
downloadlingo2-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.cpp23
-rw-r--r--tools/datapacker/main.cpp12
-rw-r--r--tools/util/ids_yaml_format.cpp15
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