From a3cf5edda4a306c86eee62b24481b23c4a14e5c5 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 19 Jun 2020 23:43:30 +0200 Subject: [PATCH] Read biome maps when iterating regions --- src/MinedMap.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/MinedMap.cpp b/src/MinedMap.cpp index f85e8e0..8331be6 100644 --- a/src/MinedMap.cpp +++ b/src/MinedMap.cpp @@ -225,17 +225,37 @@ static void makeMap(const std::string ®iondir, const std::string &outputdir, std::string outname = formatTileName(x, z, "png"); std::string input = regiondir + "/" + inname; std::string output = outputdir + "/map/0/" + outname, output_light = outputdir + "/light/0/" + outname; + std::string biomenames[3][3]; int64_t intime = getModTime(input); if (intime == INT64_MIN) return; + for (size_t i = 0; i < 3; i++) { + for (size_t j = 0; j < 3; j++) { + biomenames[i][j] = outputdir + "/biome/" + formatTileName(x + i - 1, z + j - 1, "png"); + intime = std::max(intime, getModTime(biomenames[i][j])); + } + } + if (!checkRegion(intime, output)) return; std::printf("Generating %s from %s...\n", output.c_str(), input.c_str()); try { + std::unique_ptr biomemaps[3][3]; + for (size_t i = 0; i < 3; i++) { + for (size_t j = 0; j < 3; j++) { + biomemaps[i][j].reset(new uint8_t[DIM*DIM]); + std::memset(biomemaps[i][j].get(), 0, DIM*DIM); + + try { + PNG::read(biomenames[i][j].c_str(), biomemaps[i][j].get(), DIM, DIM, PNG::GRAY); + } catch (const std::exception& ex) {} + } + } + std::unique_ptr image(new Resource::Color[DIM*DIM]); std::memset(image.get(), 0, 4*DIM*DIM);