From 804ad0c230672813efdca5b6816a5de49354f375 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 27 Aug 2025 16:29:50 -0400 Subject: Added control_center --- tools/datapacker/main.cpp | 4 ++++ tools/validator/human_processor.cpp | 5 +++++ tools/validator/structs.h | 2 ++ tools/validator/validator.cpp | 11 ++++++++++- 4 files changed, 21 insertions(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/datapacker/main.cpp b/tools/datapacker/main.cpp index 3ddb11f..d9fcbe2 100644 --- a/tools/datapacker/main.cpp +++ b/tools/datapacker/main.cpp @@ -380,6 +380,10 @@ class DataPacker { door.add_doors( container_.FindOrAddDoor(map_name, di.name(), current_map_name)); } + + for (const std::string& ending_name : h_door.endings()) { + door.add_endings(container_.FindOrAddEnding(ending_name)); + } if (h_door.has_control_center_color()) { door.set_control_center_color(h_door.control_center_color()); diff --git a/tools/validator/human_processor.cpp b/tools/validator/human_processor.cpp index 5a7e78a..f53dc79 100644 --- a/tools/validator/human_processor.cpp +++ b/tools/validator/human_processor.cpp @@ -337,6 +337,11 @@ class HumanProcessor { DoorInfo& other_door_info = info_.doors[complete_door_identifier]; other_door_info.doors_referenced_by.push_back(door_identifier); } + + for (const std::string& ei : h_door.endings()) { + EndingInfo& ending_info = info_.endings[ei]; + ending_info.doors_referenced_by.push_back(door_identifier); + } } void ProcessConnectionsFile(std::filesystem::path path, diff --git a/tools/validator/structs.h b/tools/validator/structs.h index f7d9dc1..958038d 100644 --- a/tools/validator/structs.h +++ b/tools/validator/structs.h @@ -92,6 +92,8 @@ struct LetterInfo { struct EndingInfo { std::vector defined_in; + + std::vector doors_referenced_by; }; struct CollectedInfo { diff --git a/tools/validator/validator.cpp b/tools/validator/validator.cpp index b33f602..f802460 100644 --- a/tools/validator/validator.cpp +++ b/tools/validator/validator.cpp @@ -245,7 +245,16 @@ void ValidateLetter(const LetterIdentifier& letter_identifier, void ValidateEnding(const std::string& ending_name, const EndingInfo& ending_info) { - if (ending_info.defined_in.size() > 1) { + if (ending_info.defined_in.empty()) { + std::cout << "Ending " << ending_name + << " has no definition, but was referenced:" << std::endl; + + for (const DoorIdentifier& door_identifier : + ending_info.doors_referenced_by) { + std::cout << " DOOR " << door_identifier.ShortDebugString() + << std::endl; + } + } else if (ending_info.defined_in.size() > 1) { std::cout << "Ending " << ending_name << " was defined in multiple places:" << std::endl; -- cgit 1.4.1