diff --git a/src/MinedMap.cpp b/src/MinedMap.cpp index 8331be6..bb2c46e 100644 --- a/src/MinedMap.cpp +++ b/src/MinedMap.cpp @@ -65,7 +65,9 @@ static void addChunkBiome(uint8_t biomemap[DIM*DIM], size_t X, size_t Z, const W } } -static void addChunk(Resource::Color image[DIM*DIM], uint8_t lightmap[2*DIM*DIM], size_t X, size_t Z, const World::ChunkData *data) { +static void addChunk(Resource::Color image[DIM*DIM], uint8_t lightmap[2*DIM*DIM], size_t X, size_t Z, + const World::ChunkData *data, const std::unique_ptr biomemaps[3][3] +) { World::Chunk chunk(data); World::Chunk::Heightmap layer = chunk.getTopLayer(true); @@ -73,9 +75,9 @@ static void addChunk(Resource::Color image[DIM*DIM], uint8_t lightmap[2*DIM*DIM] for (size_t z = 0; z < World::Chunk::SIZE; z++) { size_t i = (Z*World::Chunk::SIZE+z)*DIM + X*World::Chunk::SIZE+x; const World::Chunk::Height &height = layer.v[x][z]; - const World::Block block = chunk.getBlock(x, height, z); + World::Block block = chunk.getBlock(x, height, z); - image[i] = block.getColor(); + image[i] = block.getColor(biomemaps[1][1].get()[i]); lightmap[2*i+1] = (1 - block.blockLight/15.f)*192; } } @@ -262,7 +264,9 @@ static void makeMap(const std::string ®iondir, const std::string &outputdir, std::unique_ptr lightmap(new uint8_t[2*DIM*DIM]); std::memset(lightmap.get(), 0, 2*DIM*DIM); - World::Region::visitChunks(input.c_str(), [&] (size_t X, size_t Z, const World::ChunkData *chunk) { addChunk(image.get(), lightmap.get(), X, Z, chunk); }); + World::Region::visitChunks(input.c_str(), [&] (size_t X, size_t Z, const World::ChunkData *chunk) { + addChunk(image.get(), lightmap.get(), X, Z, chunk, biomemaps); + }); writeImage(output, reinterpret_cast(image.get()), PNG::RGB_ALPHA, intime); writeImage(output_light, lightmap.get(), PNG::GRAY_ALPHA, intime); diff --git a/src/World/Block.hpp b/src/World/Block.hpp index 8f219c2..3143d15 100644 --- a/src/World/Block.hpp +++ b/src/World/Block.hpp @@ -38,10 +38,9 @@ struct Block { const Resource::BlockType *type; unsigned depth; uint8_t blockLight; - uint8_t biome; - Resource::Color getColor() const { + Resource::Color getColor(uint8_t biome) const { if (!type || !(type->flags & BLOCK_OPAQUE)) return Resource::Color {}; diff --git a/src/World/Chunk.cpp b/src/World/Chunk.cpp index 7adb04c..161dc70 100644 --- a/src/World/Chunk.cpp +++ b/src/World/Chunk.cpp @@ -85,7 +85,6 @@ Block Chunk::getBlock(size_t x, Chunk::Height height, size_t z) const { Block block = {}; block.depth = height.depth; - block.biome = getBiome(x, height.y, z); size_t Y = height.y / SIZE; size_t y = height.y % SIZE;