diff options
Diffstat (limited to 'tools/assign_ids')
-rw-r--r-- | tools/assign_ids/main.cpp | 20 |
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) { |