mirror of
https://github.com/Kbz-8/42_vox.git
synced 2026-03-04 04:56:37 +00:00
Better biome generation w/ temperature & humidity
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user