From f40d8ac221d2e49dcc5d367b9c35c8764457d042 Mon Sep 17 00:00:00 2001 From: Namonay Date: Sun, 1 Jun 2025 21:34:18 +0200 Subject: [PATCH] Added ice & better biome modification --- Application/Biome.cpp | 4 ++-- Application/Biome.h | 3 ++- Application/BiomeCollection.h | 6 ++++++ Application/Block.h | 1 + Application/Chunk.cpp | 1 + Resources/atlas.bmp | Bin 12342 -> 12342 bytes 6 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Application/Biome.cpp b/Application/Biome.cpp index cb3e575..c0a859d 100644 --- a/Application/Biome.cpp +++ b/Application/Biome.cpp @@ -5,7 +5,7 @@ #include "NoiseCollection.h" #include -Biome::Biome(std::uint32_t filler, std::uint32_t water_level, std::map>> blocks): filler(filler), water_level(water_level), c_blockmap(blocks) +Biome::Biome(std::uint32_t filler, std::uint32_t water_level, std::uint32_t water_content, std::map>> blocks): filler(filler), water_level(water_level), water_content(water_content), c_blockmap(blocks) { for (const auto& [height, BlockPlacement] : blocks) { @@ -21,7 +21,7 @@ const std::array Biome::GetBiomeBlocks(const std::u std::memset(data.data(), static_cast(BlockType::Air), data.size() * sizeof(std::uint32_t)); std::fill(data.begin(), data.begin() + ARTIFICIAL_ELEVATION, filler); - std::fill(data.begin() + ARTIFICIAL_ELEVATION, data.begin() + ARTIFICIAL_ELEVATION + water_level, static_cast(BlockType::Water)); + std::fill(data.begin() + ARTIFICIAL_ELEVATION, data.begin() + ARTIFICIAL_ELEVATION + water_level, water_content); auto it = c_blockmap.lower_bound(height - ARTIFICIAL_ELEVATION); if (it == c_blockmap.end()) diff --git a/Application/Biome.h b/Application/Biome.h index 1c5b347..e268d57 100644 --- a/Application/Biome.h +++ b/Application/Biome.h @@ -18,12 +18,13 @@ class Biome { public: - Biome(std::uint32_t filler, std::uint32_t water_level, std::map>> blocks); + Biome(std::uint32_t filler, std::uint32_t water_level, std::uint32_t water_content, std::map>> blocks); ~Biome() = default; const std::array GetBiomeBlocks(const std::uint32_t height, Scop::Vec2i pos); private: const std::uint32_t filler; const std::uint32_t water_level; + const std::uint32_t water_content; const std::map>> c_blockmap; }; diff --git a/Application/BiomeCollection.h b/Application/BiomeCollection.h index 402171a..65d16d8 100644 --- a/Application/BiomeCollection.h +++ b/Application/BiomeCollection.h @@ -18,7 +18,9 @@ class 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}}}, @@ -29,7 +31,10 @@ class BiomeCollection 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}}}, @@ -39,6 +44,7 @@ class BiomeCollection 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}}} } diff --git a/Application/Block.h b/Application/Block.h index bc37607..1b0c07a 100644 --- a/Application/Block.h +++ b/Application/Block.h @@ -16,6 +16,7 @@ enum class BlockType : std::uint32_t Snow, SnowyGrass, Cactus, + Ice, EndEnum }; diff --git a/Application/Chunk.cpp b/Application/Chunk.cpp index 0045a9c..7d8b036 100644 --- a/Application/Chunk.cpp +++ b/Application/Chunk.cpp @@ -18,6 +18,7 @@ constexpr std::array, BlocksCount> BLOCKS_TO_ATLAS = std::array{ Scop::Vec2ui{ 2, 1 }, Scop::Vec2ui{ 2, 1 }, Scop::Vec2ui{ 2, 1 } }, // Snow std::array{ Scop::Vec2ui{ 2, 1 }, Scop::Vec2ui{ 0, 0 }, Scop::Vec2ui{ 3, 1 } }, // SnowyGrass std::array{ Scop::Vec2ui{ 0, 2 }, Scop::Vec2ui{ 0, 2 }, Scop::Vec2ui{ 0, 2 } }, // Cactus + std::array{ Scop::Vec2ui{ 1, 2 }, Scop::Vec2ui{ 1, 2 }, Scop::Vec2ui{ 1, 2 } }, // Cactus }; enum class Side : std::uint8_t diff --git a/Resources/atlas.bmp b/Resources/atlas.bmp index 2ac77af9520ae5147571d34d379034844b6816ee..bba67f41da4e9bb1fe9bd05b05ea68e3ddb85ec7 100644 GIT binary patch delta 912 zcmdm%uq|OjI* zV12J4`q2D`X$+E9i2wL;_zy`T)H0X|SYNgP4t+ouz!V}o63B-5Pml=zq51;iKf!7P zsCmeqLT01t0$HfYCNX)PPz6jQngZN>vy@5DVM E00E@6M*si- delta 191 zcmdm%uq|OjI?v=FHj#