From 3b415b3f5f182238da9ed83e0b2b07fb07044e04 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Fri, 6 Feb 2026 13:03:32 -0500 Subject: Annotated RTE rooms for most maps --- tools/assign_ids/main.cpp | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'tools/assign_ids/main.cpp') diff --git a/tools/assign_ids/main.cpp b/tools/assign_ids/main.cpp index 4cf7c3f..4a48b86 100644 --- a/tools/assign_ids/main.cpp +++ b/tools/assign_ids/main.cpp @@ -67,6 +67,10 @@ class AssignIds { UpdateNextId(room.keyholders()); UpdateNextId(room.ports()); } + + if (map.has_rte()) { + UpdateNextId(map.rte()); + } } UpdateNextId(id_mappings_.special()); @@ -93,10 +97,31 @@ class AssignIds { void ProcessMap(std::filesystem::path path) { std::string map_name = path.filename().string(); + ProcessMapMetadata(path / "metadata.txtpb", map_name); ProcessDoorsFile(path / "doors.txtpb", map_name); ProcessRooms(path / "rooms", map_name); } + void ProcessMapMetadata(std::filesystem::path path, + const std::string& current_map_name) { + if (!std::filesystem::exists(path)) { + return; + } + + auto metadata = ReadMessageFromFile(path.string()); + auto& maps = *output_.mutable_maps(); + + if (metadata.has_rte_room()) { + if (!id_mappings_.maps().contains(current_map_name) || + !id_mappings_.maps().at(current_map_name).has_rte()) { + maps[current_map_name].set_rte(next_id_++); + } else { + maps[current_map_name].set_rte( + id_mappings_.maps().at(current_map_name).rte()); + } + } + } + void ProcessDoorsFile(std::filesystem::path path, const std::string& current_map_name) { if (!std::filesystem::exists(path)) { @@ -342,9 +367,13 @@ class AssignIds { private: void UpdateNextId(const google::protobuf::Map& ids) { for (const auto& [_, id] : ids) { - if (id > next_id_) { - next_id_ = id; - } + UpdateNextId(id); + } + } + + void UpdateNextId(uint64_t id) { + if (id > next_id_) { + next_id_ = id; } } -- cgit 1.4.1