#ifndef BIOMECOLLECTION_H #define BIOMECOLLECTION_H #include #include #include #include "Biome.h" #include "Block.h" #include "Chunk.h" #include "Maths/Vec2.h" class BiomeCollection { public: inline BiomeCollection() { m_collection.emplace("grassland", std::make_unique( static_cast(BlockType::Stone), 20, static_cast(BlockType::Water), std::map>>{ {17, std::pair>{BlockPlacementType::Simple, std::vector{BlockType::Dirt}}}, {23, std::pair>{BlockPlacementType::Simple, std::vector{BlockType::Sand}}}, {125, std::pair>{BlockPlacementType::Simple, std::vector{BlockType::Grass}}}, {132, std::pair>{BlockPlacementType::PseudoRandom, std::vector{BlockType::SnowyGrass, BlockType::Grass}}}, {140, std::pair>{BlockPlacementType::PseudoRandom, std::vector{BlockType::Snow, BlockType::SnowyGrass}}}, {255, std::pair>{BlockPlacementType::Simple, std::vector{BlockType::Snow}}} } )); m_collection.emplace("tundra", std::make_unique( static_cast(BlockType::Stone), 20, static_cast(BlockType::Water), std::map>>{ {17, std::pair>{BlockPlacementType::Simple, std::vector{BlockType::Dirt}}}, {20, std::pair>{BlockPlacementType::Simple, std::vector{BlockType::Ice}}}, {23, std::pair>{BlockPlacementType::Simple, std::vector{BlockType::Snow}}}, {120, std::pair>{BlockPlacementType::Simple, std::vector{BlockType::SnowyGrass}}}, {140, std::pair>{BlockPlacementType::PseudoRandom, std::vector{BlockType::Snow, BlockType::SnowyGrass}}}, {255, std::pair>{BlockPlacementType::Simple, std::vector{BlockType::Snow}}} } )); m_collection.emplace("desert", std::make_unique( static_cast(BlockType::Stone), 20, static_cast(BlockType::Water), std::map>>{ {255, std::pair>{BlockPlacementType::Simple, std::vector{BlockType::Sand}}} } )); }; const std::array GetBiomeBlocks(std::string biome, std::uint32_t height, Scop::Vec2i pos) const; ~BiomeCollection() = default; private: std::unordered_map> m_collection; }; #endif