summary refs log tree commit diff stats
path: root/tools/datapacker/main.cpp
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2025-08-20 15:03:18 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2025-08-20 15:03:18 -0400
commitd77c73397b684faa55f0e95484ac89ca68bde1ad (patch)
tree84fd35d342b69a9765d8f94473b56998d26e323d /tools/datapacker/main.cpp
parent53ad8e2f3e5fcf9cf9d5d4628498557e0f5500e8 (diff)
downloadlingo2-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.cpp22
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_;