Better biome generation w/ temperature & humidity

This commit is contained in:
Namonay
2025-06-01 20:56:41 +02:00
parent 6bd1dd3a1b
commit 2e1bb94f82
4 changed files with 65 additions and 63 deletions

View File

@@ -6,6 +6,7 @@
#include <unordered_map>
#include <string>
#include "Biome.h"
#include "Block.h"
#include "Chunk.h"
#include "Maths/Vec2.h"
@@ -15,13 +16,33 @@ class BiomeCollection
inline BiomeCollection()
{
m_collection.emplace("grassland", std::make_unique<Biome>(
static_cast<std::uint32_t>(BlockType::Stone),
0,
{
{20, {BlockPlacementType::Simple, {BlockType::Sand}}},
{255, {BlockPlacementType::Simple, {BlockType::Snow}}}
}
));
static_cast<std::uint32_t>(BlockType::Stone),
20,
std::map<std::uint32_t, std::pair<BlockPlacementType, std::vector<BlockType>>>{
{23, std::pair<BlockPlacementType, std::vector<BlockType>>{BlockPlacementType::Simple, std::vector<BlockType>{BlockType::Sand}}},
{125, std::pair<BlockPlacementType, std::vector<BlockType>>{BlockPlacementType::Simple, std::vector<BlockType>{BlockType::Grass}}},
{132, std::pair<BlockPlacementType, std::vector<BlockType>>{BlockPlacementType::PseudoRandom, std::vector<BlockType>{BlockType::SnowyGrass, BlockType::Grass}}},
{140, std::pair<BlockPlacementType, std::vector<BlockType>>{BlockPlacementType::PseudoRandom, std::vector<BlockType>{BlockType::Snow, BlockType::SnowyGrass}}},
{255, std::pair<BlockPlacementType, std::vector<BlockType>>{BlockPlacementType::Simple, std::vector<BlockType>{BlockType::Snow}}}
}
));
m_collection.emplace("tundra", std::make_unique<Biome>(
static_cast<std::uint32_t>(BlockType::Stone),
20,
std::map<std::uint32_t, std::pair<BlockPlacementType, std::vector<BlockType>>>{
{23, std::pair<BlockPlacementType, std::vector<BlockType>>{BlockPlacementType::Simple, std::vector<BlockType>{BlockType::Snow}}},
{120, std::pair<BlockPlacementType, std::vector<BlockType>>{BlockPlacementType::Simple, std::vector<BlockType>{BlockType::SnowyGrass}}},
{140, std::pair<BlockPlacementType, std::vector<BlockType>>{BlockPlacementType::PseudoRandom, std::vector<BlockType>{BlockType::Snow, BlockType::SnowyGrass}}},
{255, std::pair<BlockPlacementType, std::vector<BlockType>>{BlockPlacementType::Simple, std::vector<BlockType>{BlockType::Snow}}}
}
));
m_collection.emplace("desert", std::make_unique<Biome>(
static_cast<std::uint32_t>(BlockType::Stone),
20,
std::map<std::uint32_t, std::pair<BlockPlacementType, std::vector<BlockType>>>{
{255, std::pair<BlockPlacementType, std::vector<BlockType>>{BlockPlacementType::Simple, std::vector<BlockType>{BlockType::Sand}}}
}
));
};
const std::array<std::uint32_t, CHUNK_SIZE.y> GetBiomeBlocks(std::string biome, std::uint32_t height, Scop::Vec2i pos) const;
~BiomeCollection() = default;