summary refs log tree commit diff stats
path: root/generator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'generator.cpp')
-rw-r--r--generator.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/generator.cpp b/generator.cpp index 6b6c1be..8334904 100644 --- a/generator.cpp +++ b/generator.cpp
@@ -654,6 +654,30 @@ void Generator::GenerateCrossTower(
654 SavePanel(west_other_name3, sets[3][3], sets[3][3]); 654 SavePanel(west_other_name3, sets[3][3], sets[3][3]);
655} 655}
656 656
657void Generator::GeneratePaintingPuzzle(std::string panel_name, std::string painting_name) {
658 std::string node_name;
659 std::string answer;
660 int resource_id = 0;
661
662 for (;;) {
663 std::tie(node_name, answer, resource_id) = paintings_->GetPainting(rng_);
664 if (!used_paintings_.count(node_name)) {
665 break;
666 }
667 }
668
669 used_paintings_.insert(node_name);
670
671 SavePanel(panel_name, "painting", answer, {});
672
673 std::string resource_path = std::string("res://nodes/paintings/") + node_name + ".tscn";
674 if (resource_id == 0) {
675 resources_.emplace_back(resource_path, "PackedScene");
676 }
677
678 replace_nodes_[painting_name] = {resource_path, resource_id};
679}
680
657void Generator::SavePanel(std::string name, std::string question, std::string answer, GenerateOptions options) { 681void Generator::SavePanel(std::string name, std::string question, std::string answer, GenerateOptions options) {
658 if (options.save_for_later) { 682 if (options.save_for_later) {
659 reusable_.push_back(answer); 683 reusable_.push_back(answer);