diff options
author | Star Rauchenberger <fefferburbia@gmail.com> | 2025-08-20 15:03:18 -0400 |
---|---|---|
committer | Star Rauchenberger <fefferburbia@gmail.com> | 2025-08-20 15:03:18 -0400 |
commit | d77c73397b684faa55f0e95484ac89ca68bde1ad (patch) | |
tree | 84fd35d342b69a9765d8f94473b56998d26e323d /tools/datapacker/main.cpp | |
parent | 53ad8e2f3e5fcf9cf9d5d4628498557e0f5500e8 (diff) | |
download | lingo2-archipelago-d77c73397b684faa55f0e95484ac89ca68bde1ad.tar.gz lingo2-archipelago-d77c73397b684faa55f0e95484ac89ca68bde1ad.tar.bz2 lingo2-archipelago-d77c73397b684faa55f0e95484ac89ca68bde1ad.zip |
Added "endings" object type
Diffstat (limited to 'tools/datapacker/main.cpp')
-rw-r--r-- | tools/datapacker/main.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
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 { | |||
115 | room.add_keyholders( | 115 | room.add_keyholders( |
116 | ProcessKeyholder(h_keyholder, current_map_name, room.name())); | 116 | ProcessKeyholder(h_keyholder, current_map_name, room.name())); |
117 | } | 117 | } |
118 | |||
119 | for (const HumanEnding& h_ending : h_room.endings()) { | ||
120 | room.add_endings(ProcessEnding(h_ending, current_map_name, room.name())); | ||
121 | } | ||
118 | } | 122 | } |
119 | 123 | ||
120 | uint64_t ProcessPanel(const HumanPanel& h_panel, | 124 | uint64_t ProcessPanel(const HumanPanel& h_panel, |
@@ -266,6 +270,19 @@ class DataPacker { | |||
266 | return keyholder_id; | 270 | return keyholder_id; |
267 | } | 271 | } |
268 | 272 | ||
273 | uint64_t ProcessEnding(const HumanEnding& h_ending, | ||
274 | const std::string& current_map_name, | ||
275 | const std::string& current_room_name) { | ||
276 | uint64_t ending_id = container_.FindOrAddEnding(h_ending.name()); | ||
277 | Ending& ending = *container_.all_objects().mutable_endings(ending_id); | ||
278 | |||
279 | ending.set_room_id(container_.FindOrAddRoom( | ||
280 | current_map_name, current_room_name, std::nullopt)); | ||
281 | ending.set_path(h_ending.path()); | ||
282 | |||
283 | return ending_id; | ||
284 | } | ||
285 | |||
269 | void ProcessDoorsFile(std::filesystem::path path, | 286 | void ProcessDoorsFile(std::filesystem::path path, |
270 | const std::string& current_map_name) { | 287 | const std::string& current_map_name) { |
271 | if (!std::filesystem::exists(path)) { | 288 | if (!std::filesystem::exists(path)) { |
@@ -526,6 +543,11 @@ class DataPacker { | |||
526 | uint64_t letter_id = container_.FindLetterByName(letter_name); | 543 | uint64_t letter_id = container_.FindLetterByName(letter_name); |
527 | container_.all_objects().mutable_letters(letter_id)->set_ap_id(ap_id); | 544 | container_.all_objects().mutable_letters(letter_id)->set_ap_id(ap_id); |
528 | } | 545 | } |
546 | |||
547 | for (const auto& [ending_name, ap_id] : ids.endings()) { | ||
548 | uint64_t ending_id = container_.FindOrAddEnding(ending_name); | ||
549 | container_.all_objects().mutable_endings(ending_id)->set_ap_id(ap_id); | ||
550 | } | ||
529 | } | 551 | } |
530 | 552 | ||
531 | std::string mapdir_; | 553 | std::string mapdir_; |