summary refs log tree commit diff stats
path: root/tools/datapacker
diff options
context:
space:
mode:
Diffstat (limited to 'tools/datapacker')
-rw-r--r--tools/datapacker/main.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/tools/datapacker/main.cpp b/tools/datapacker/main.cpp index 1dcd109..4b26141 100644 --- a/tools/datapacker/main.cpp +++ b/tools/datapacker/main.cpp
@@ -42,6 +42,7 @@ class DataPacker {
42 42
43 ProcessConnectionsFile(datadir_path / "connections.txtpb", std::nullopt); 43 ProcessConnectionsFile(datadir_path / "connections.txtpb", std::nullopt);
44 ProcessMaps(datadir_path); 44 ProcessMaps(datadir_path);
45 ProcessIdsFile(datadir_path / "ids.txtpb");
45 46
46 { 47 {
47 std::ofstream outputfile(outputpath_); 48 std::ofstream outputfile(outputpath_);
@@ -389,6 +390,26 @@ class DataPacker {
389 } 390 }
390 } 391 }
391 392
393 void ProcessIdsFile(std::filesystem::path path) {
394 auto ids = ReadMessageFromFile<IdMappings>(path.string());
395
396 for (const auto& [map_name, map] : ids.maps()) {
397 for (const auto& [door_name, ap_id] : map.doors()) {
398 uint64_t door_id =
399 container_.FindOrAddDoor(map_name, door_name, std::nullopt);
400 container_.all_objects().mutable_doors(door_id)->set_ap_id(ap_id);
401 }
402
403 for (const auto& [room_name, room] : map.rooms()) {
404 for (const auto& [panel_name, ap_id] : room.panels()) {
405 uint64_t panel_id = container_.FindOrAddPanel(
406 map_name, room_name, panel_name, std::nullopt, std::nullopt);
407 container_.all_objects().mutable_panels(panel_id)->set_ap_id(ap_id);
408 }
409 }
410 }
411 }
412
392 std::string mapdir_; 413 std::string mapdir_;
393 std::string outputpath_; 414 std::string outputpath_;
394 415