about summary refs log tree commit diff stats
path: root/tools/datapacker/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/datapacker/main.cpp')
-rw-r--r--tools/datapacker/main.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/tools/datapacker/main.cpp b/tools/datapacker/main.cpp index 595647d..c72462d 100644 --- a/tools/datapacker/main.cpp +++ b/tools/datapacker/main.cpp
@@ -44,6 +44,7 @@ class DataPacker {
44 ProcessConnectionsFile(datadir_path / "connections.txtpb", std::nullopt); 44 ProcessConnectionsFile(datadir_path / "connections.txtpb", std::nullopt);
45 ProcessMaps(datadir_path); 45 ProcessMaps(datadir_path);
46 ProcessProgressivesFile(datadir_path / "progressives.txtpb"); 46 ProcessProgressivesFile(datadir_path / "progressives.txtpb");
47 ProcessDoorGroupsFile(datadir_path / "door_groups.txtpb");
47 ProcessIdsFile(datadir_path / "ids.yaml"); 48 ProcessIdsFile(datadir_path / "ids.yaml");
48 49
49 { 50 {
@@ -577,6 +578,31 @@ class DataPacker {
577 } 578 }
578 } 579 }
579 580
581 void ProcessDoorGroupsFile(std::filesystem::path path) {
582 if (!std::filesystem::exists(path)) {
583 return;
584 }
585
586 auto h_groups = ReadMessageFromFile<HumanDoorGroups>(path.string());
587
588 for (const HumanDoorGroup& h_group : h_groups.door_groups()) {
589 ProcessDoorGroup(h_group);
590 }
591 }
592
593 void ProcessDoorGroup(const HumanDoorGroup& h_group) {
594 uint64_t group_id = container_.FindOrAddDoorGroup(h_group.name());
595 DoorGroup& group = *container_.all_objects().mutable_door_groups(group_id);
596
597 group.set_type(h_group.type());
598
599 for (const DoorIdentifier& di : h_group.doors()) {
600 uint64_t door_id =
601 container_.FindOrAddDoor(di.map(), di.name(), std::nullopt);
602 group.add_doors(door_id);
603 }
604 }
605
580 void ProcessIdsFile(std::filesystem::path path) { 606 void ProcessIdsFile(std::filesystem::path path) {
581 auto ids = ReadIdsFromYaml(path.string()); 607 auto ids = ReadIdsFromYaml(path.string());
582 608
@@ -631,6 +657,11 @@ class DataPacker {
631 uint64_t prog_id = container_.FindOrAddProgressive(prog_name); 657 uint64_t prog_id = container_.FindOrAddProgressive(prog_name);
632 container_.all_objects().mutable_progressives(prog_id)->set_ap_id(ap_id); 658 container_.all_objects().mutable_progressives(prog_id)->set_ap_id(ap_id);
633 } 659 }
660
661 for (const auto& [group_name, ap_id] : ids.door_groups()) {
662 uint64_t group_id = container_.FindOrAddDoorGroup(group_name);
663 container_.all_objects().mutable_door_groups(group_id)->set_ap_id(ap_id);
664 }
634 } 665 }
635 666
636 std::string mapdir_; 667 std::string mapdir_;