From d77c73397b684faa55f0e95484ac89ca68bde1ad Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 20 Aug 2025 15:03:18 -0400 Subject: Added "endings" object type --- tools/datapacker/main.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'tools/datapacker/main.cpp') diff --git a/tools/datapacker/main.cpp b/tools/datapacker/main.cpp index 0beb304..c5a90e9 100644 --- a/tools/datapacker/main.cpp +++ b/tools/datapacker/main.cpp @@ -115,6 +115,10 @@ class DataPacker { room.add_keyholders( ProcessKeyholder(h_keyholder, current_map_name, room.name())); } + + for (const HumanEnding& h_ending : h_room.endings()) { + room.add_endings(ProcessEnding(h_ending, current_map_name, room.name())); + } } uint64_t ProcessPanel(const HumanPanel& h_panel, @@ -266,6 +270,19 @@ class DataPacker { return keyholder_id; } + uint64_t ProcessEnding(const HumanEnding& h_ending, + const std::string& current_map_name, + const std::string& current_room_name) { + uint64_t ending_id = container_.FindOrAddEnding(h_ending.name()); + Ending& ending = *container_.all_objects().mutable_endings(ending_id); + + ending.set_room_id(container_.FindOrAddRoom( + current_map_name, current_room_name, std::nullopt)); + ending.set_path(h_ending.path()); + + return ending_id; + } + void ProcessDoorsFile(std::filesystem::path path, const std::string& current_map_name) { if (!std::filesystem::exists(path)) { @@ -526,6 +543,11 @@ class DataPacker { uint64_t letter_id = container_.FindLetterByName(letter_name); container_.all_objects().mutable_letters(letter_id)->set_ap_id(ap_id); } + + for (const auto& [ending_name, ap_id] : ids.endings()) { + uint64_t ending_id = container_.FindOrAddEnding(ending_name); + container_.all_objects().mutable_endings(ending_id)->set_ap_id(ap_id); + } } std::string mapdir_; -- cgit 1.4.1