about summary refs log tree commit diff stats
path: root/tools/assign_ids/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/assign_ids/main.cpp')
-rw-r--r--tools/assign_ids/main.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/tools/assign_ids/main.cpp b/tools/assign_ids/main.cpp index e3add66..d212767 100644 --- a/tools/assign_ids/main.cpp +++ b/tools/assign_ids/main.cpp
@@ -42,6 +42,7 @@ class AssignIds {
42 ProcessMaps(datadir_path); 42 ProcessMaps(datadir_path);
43 ProcessSpecialIds(); 43 ProcessSpecialIds();
44 ProcessProgressivesFile(datadir_path / "progressives.txtpb"); 44 ProcessProgressivesFile(datadir_path / "progressives.txtpb");
45 ProcessDoorGroupsFile(datadir_path / "door_groups.txtpb");
45 46
46 WriteIds(ids_path); 47 WriteIds(ids_path);
47 48
@@ -61,6 +62,7 @@ class AssignIds {
61 for (const auto& [_, room] : map.rooms()) { 62 for (const auto& [_, room] : map.rooms()) {
62 UpdateNextId(room.panels()); 63 UpdateNextId(room.panels());
63 UpdateNextId(room.masteries()); 64 UpdateNextId(room.masteries());
65 UpdateNextId(room.keyholders());
64 } 66 }
65 } 67 }
66 68
@@ -68,6 +70,7 @@ class AssignIds {
68 UpdateNextId(id_mappings_.letters()); 70 UpdateNextId(id_mappings_.letters());
69 UpdateNextId(id_mappings_.endings()); 71 UpdateNextId(id_mappings_.endings());
70 UpdateNextId(id_mappings_.progressives()); 72 UpdateNextId(id_mappings_.progressives());
73 UpdateNextId(id_mappings_.door_groups());
71 74
72 next_id_++; 75 next_id_++;
73 } 76 }
@@ -267,6 +270,23 @@ class AssignIds {
267 } 270 }
268 } 271 }
269 272
273 void ProcessDoorGroupsFile(std::filesystem::path path) {
274 if (!std::filesystem::exists(path)) {
275 return;
276 }
277
278 auto h_groups = ReadMessageFromFile<HumanDoorGroups>(path.string());
279 auto& groups = *output_.mutable_door_groups();
280
281 for (const HumanDoorGroup& h_group : h_groups.door_groups()) {
282 if (!id_mappings_.door_groups().contains(h_group.name())) {
283 groups[h_group.name()] = next_id_++;
284 } else {
285 groups[h_group.name()] = id_mappings_.door_groups().at(h_group.name());
286 }
287 }
288 }
289
270 private: 290 private:
271 void UpdateNextId(const google::protobuf::Map<std::string, uint64_t>& ids) { 291 void UpdateNextId(const google::protobuf::Map<std::string, uint64_t>& ids) {
272 for (const auto& [_, id] : ids) { 292 for (const auto& [_, id] : ids) {