From d79984b099c3f762b95d3b4257bef113d3a8d6ee Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sun, 7 Sep 2025 15:42:00 -0400 Subject: Added door groups --- tools/validator/human_processor.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'tools/validator/human_processor.cpp') diff --git a/tools/validator/human_processor.cpp b/tools/validator/human_processor.cpp index 5720ba9..561225e 100644 --- a/tools/validator/human_processor.cpp +++ b/tools/validator/human_processor.cpp @@ -43,6 +43,7 @@ class HumanProcessor { ProcessConnectionsFile(datadir_path / "connections.txtpb", std::nullopt); ProcessMaps(datadir_path); ProcessProgressivesFile(datadir_path / "progressives.txtpb"); + ProcessDoorGroupsFile(datadir_path / "door_groups.txtpb"); ProcessIdsFile(datadir_path / "ids.yaml"); } @@ -510,6 +511,33 @@ class HumanProcessor { } } + void ProcessDoorGroupsFile(std::filesystem::path path) { + if (!std::filesystem::exists(path)) { + return; + } + + auto h_groups = ReadMessageFromFile(path.string()); + + for (const HumanDoorGroup& h_group : h_groups.door_groups()) { + ProcessDoorGroup(h_group); + } + } + + void ProcessDoorGroup(const HumanDoorGroup& h_group) { + DoorGroupInfo& group_info = info_.door_groups[h_group.name()]; + group_info.definitions.push_back(h_group); + + for (const DoorIdentifier& di : h_group.doors()) { + if (!di.has_map()) { + group_info.malformed_doors.push_back(di); + continue; + } + + DoorInfo& door_info = info_.doors[di]; + door_info.door_groups_referenced_by.push_back(h_group.name()); + } + } + void ProcessIdsFile(std::filesystem::path path) { auto ids = ReadIdsFromYaml(path.string()); @@ -573,6 +601,11 @@ class HumanProcessor { ProgressiveInfo& prog_info = info_.progressives[prog_name]; prog_info.has_id = true; } + + for (const auto& [group_name, ap_id] : ids.door_groups()) { + DoorGroupInfo& group_info = info_.door_groups[group_name]; + group_info.has_id = true; + } } std::string mapdir_; -- cgit 1.4.1