feat: add biome properties for temperature, humidity, and ocean status

Signed-off-by: szdytom <szdytom@qq.com>
This commit is contained in:
方而静 2025-08-02 09:16:41 +08:00
parent ad68a23629
commit 7718d3fbf4
Signed by: szTom
GPG Key ID: 072D999D60C6473C
3 changed files with 33 additions and 2 deletions

View File

@ -36,6 +36,11 @@ struct BiomeProperties {
// Biome name for debugging // Biome name for debugging
std::string_view name; std::string_view name;
// Categories
BiomeTemperature temperature;
BiomeHumidity humidity;
bool is_ocean;
// Base terrain ratios (0.0 - 1.0) // Base terrain ratios (0.0 - 1.0)
double water_ratio; double water_ratio;
double ice_ratio; double ice_ratio;

View File

@ -33,8 +33,7 @@ class TerrainGenerator {
private: private:
GenerationConfig config_; GenerationConfig config_;
UniformPerlinNoise UniformPerlinNoise base_noise_; // For base terrain
base_noise_; // For base terrain generation (uniform distribution)
UniformPerlinNoise temperature_noise_; // For temperature UniformPerlinNoise temperature_noise_; // For temperature
UniformPerlinNoise humidity_noise_; // For humidity UniformPerlinNoise humidity_noise_; // For humidity

View File

@ -11,6 +11,9 @@ constexpr BiomeProperties biome_properties[] = {
// Snowy Peeks (Cold & Dry) // Snowy Peeks (Cold & Dry)
{ {
.name = "Snowy Peeks", .name = "Snowy Peeks",
.temperature = BiomeTemperature::Cold,
.humidity = BiomeHumidity::Dry,
.is_ocean = false,
.water_ratio = .05, .water_ratio = .05,
.ice_ratio = .2, .ice_ratio = .2,
.sand_ratio = .05, .sand_ratio = .05,
@ -19,6 +22,9 @@ constexpr BiomeProperties biome_properties[] = {
// Snowy Plains (Cold & Moderate) // Snowy Plains (Cold & Moderate)
{ {
.name = "Snowy Plains", .name = "Snowy Plains",
.temperature = BiomeTemperature::Cold,
.humidity = BiomeHumidity::Moderate,
.is_ocean = false,
.water_ratio = .05, .water_ratio = .05,
.ice_ratio = .25, .ice_ratio = .25,
.sand_ratio = .1, .sand_ratio = .1,
@ -27,6 +33,9 @@ constexpr BiomeProperties biome_properties[] = {
// Frozen Ocean (Cold & Wet) // Frozen Ocean (Cold & Wet)
{ {
.name = "Frozen Ocean", .name = "Frozen Ocean",
.temperature = BiomeTemperature::Cold,
.humidity = BiomeHumidity::Wet,
.is_ocean = true,
.water_ratio = .1, .water_ratio = .1,
.ice_ratio = .7, .ice_ratio = .7,
.sand_ratio = .25, .sand_ratio = .25,
@ -35,6 +44,9 @@ constexpr BiomeProperties biome_properties[] = {
// Plains (Temperate & Dry) // Plains (Temperate & Dry)
{ {
.name = "Plains", .name = "Plains",
.temperature = BiomeTemperature::Temperate,
.humidity = BiomeHumidity::Dry,
.is_ocean = false,
.water_ratio = .05, .water_ratio = .05,
.ice_ratio = .0, .ice_ratio = .0,
.sand_ratio = .05, .sand_ratio = .05,
@ -43,6 +55,9 @@ constexpr BiomeProperties biome_properties[] = {
// Forest (Temperate & Moderate) // Forest (Temperate & Moderate)
{ {
.name = "Forest", .name = "Forest",
.temperature = BiomeTemperature::Temperate,
.humidity = BiomeHumidity::Moderate,
.is_ocean = false,
.water_ratio = .1, .water_ratio = .1,
.ice_ratio = .0, .ice_ratio = .0,
.sand_ratio = .05, .sand_ratio = .05,
@ -51,6 +66,9 @@ constexpr BiomeProperties biome_properties[] = {
// Ocean (Temperate & Wet) // Ocean (Temperate & Wet)
{ {
.name = "Ocean", .name = "Ocean",
.temperature = BiomeTemperature::Temperate,
.humidity = BiomeHumidity::Wet,
.is_ocean = true,
.water_ratio = .8, .water_ratio = .8,
.ice_ratio = .0, .ice_ratio = .0,
.sand_ratio = .15, .sand_ratio = .15,
@ -59,6 +77,9 @@ constexpr BiomeProperties biome_properties[] = {
// Desert (Hot & Dry) // Desert (Hot & Dry)
{ {
.name = "Desert", .name = "Desert",
.temperature = BiomeTemperature::Hot,
.humidity = BiomeHumidity::Dry,
.is_ocean = false,
.water_ratio = .0, .water_ratio = .0,
.ice_ratio = .0, .ice_ratio = .0,
.sand_ratio = .8, .sand_ratio = .8,
@ -67,6 +88,9 @@ constexpr BiomeProperties biome_properties[] = {
// Savanna (Hot & Moderate) // Savanna (Hot & Moderate)
{ {
.name = "Savanna", .name = "Savanna",
.temperature = BiomeTemperature::Hot,
.humidity = BiomeHumidity::Moderate,
.is_ocean = false,
.water_ratio = .2, .water_ratio = .2,
.ice_ratio = .0, .ice_ratio = .0,
.sand_ratio = .1, .sand_ratio = .1,
@ -75,6 +99,9 @@ constexpr BiomeProperties biome_properties[] = {
// Luke Ocean (Hot & Wet) // Luke Ocean (Hot & Wet)
{ {
.name = "Luke Ocean", .name = "Luke Ocean",
.temperature = BiomeTemperature::Hot,
.humidity = BiomeHumidity::Wet,
.is_ocean = true,
.water_ratio = .8, .water_ratio = .8,
.ice_ratio = .0, .ice_ratio = .0,
.sand_ratio = .05, .sand_ratio = .05,