From cf638697c17ec186b5da88ea92fc005371c9eab7 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Mon, 27 Oct 2025 10:12:58 -0400 Subject: Assign stable IDs for shuffleable worldports --- tools/assign_ids/main.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'tools/assign_ids/main.cpp') diff --git a/tools/assign_ids/main.cpp b/tools/assign_ids/main.cpp index 357566a..8010a9a 100644 --- a/tools/assign_ids/main.cpp +++ b/tools/assign_ids/main.cpp @@ -65,6 +65,7 @@ class AssignIds { UpdateNextId(room.panels()); UpdateNextId(room.masteries()); UpdateNextId(room.keyholders()); + UpdateNextId(room.ports()); } } @@ -245,6 +246,37 @@ class AssignIds { .at(h_keyholder.name()); } } + + for (const HumanPort& h_port : h_room.ports()) { + if (h_port.no_shuffle()) { + continue; + } + + auto& maps = *output_.mutable_maps(); + auto& rooms = *maps[current_map_name].mutable_rooms(); + auto& ports = *rooms[h_room.name()].mutable_ports(); + + if (!id_mappings_.maps().contains(current_map_name) || + !id_mappings_.maps() + .at(current_map_name) + .rooms() + .contains(h_room.name()) || + !id_mappings_.maps() + .at(current_map_name) + .rooms() + .at(h_room.name()) + .ports() + .contains(h_port.name())) { + ports[h_port.name()] = next_id_++; + } else { + ports[h_port.name()] = id_mappings_.maps() + .at(current_map_name) + .rooms() + .at(h_room.name()) + .ports() + .at(h_port.name()); + } + } } void ProcessSpecialIds() { -- cgit 1.4.1