From 7718d3fbf43e58aaac7e12eaafc53a4b82662827 Mon Sep 17 00:00:00 2001 From: szdytom Date: Sat, 2 Aug 2025 09:16:41 +0800 Subject: [PATCH] feat: add biome properties for temperature, humidity, and ocean status Signed-off-by: szdytom --- tilemap/include/biome.h | 5 +++++ tilemap/include/generation.h | 3 +-- tilemap/src/biome.cpp | 27 +++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/tilemap/include/biome.h b/tilemap/include/biome.h index 072835b..340b6c5 100644 --- a/tilemap/include/biome.h +++ b/tilemap/include/biome.h @@ -36,6 +36,11 @@ struct BiomeProperties { // Biome name for debugging std::string_view name; + // Categories + BiomeTemperature temperature; + BiomeHumidity humidity; + bool is_ocean; + // Base terrain ratios (0.0 - 1.0) double water_ratio; double ice_ratio; diff --git a/tilemap/include/generation.h b/tilemap/include/generation.h index e1aa514..86cfa89 100644 --- a/tilemap/include/generation.h +++ b/tilemap/include/generation.h @@ -33,8 +33,7 @@ class TerrainGenerator { private: GenerationConfig config_; - UniformPerlinNoise - base_noise_; // For base terrain generation (uniform distribution) + UniformPerlinNoise base_noise_; // For base terrain UniformPerlinNoise temperature_noise_; // For temperature UniformPerlinNoise humidity_noise_; // For humidity diff --git a/tilemap/src/biome.cpp b/tilemap/src/biome.cpp index decd3cf..638b70c 100644 --- a/tilemap/src/biome.cpp +++ b/tilemap/src/biome.cpp @@ -11,6 +11,9 @@ constexpr BiomeProperties biome_properties[] = { // Snowy Peeks (Cold & Dry) { .name = "Snowy Peeks", + .temperature = BiomeTemperature::Cold, + .humidity = BiomeHumidity::Dry, + .is_ocean = false, .water_ratio = .05, .ice_ratio = .2, .sand_ratio = .05, @@ -19,6 +22,9 @@ constexpr BiomeProperties biome_properties[] = { // Snowy Plains (Cold & Moderate) { .name = "Snowy Plains", + .temperature = BiomeTemperature::Cold, + .humidity = BiomeHumidity::Moderate, + .is_ocean = false, .water_ratio = .05, .ice_ratio = .25, .sand_ratio = .1, @@ -27,6 +33,9 @@ constexpr BiomeProperties biome_properties[] = { // Frozen Ocean (Cold & Wet) { .name = "Frozen Ocean", + .temperature = BiomeTemperature::Cold, + .humidity = BiomeHumidity::Wet, + .is_ocean = true, .water_ratio = .1, .ice_ratio = .7, .sand_ratio = .25, @@ -35,6 +44,9 @@ constexpr BiomeProperties biome_properties[] = { // Plains (Temperate & Dry) { .name = "Plains", + .temperature = BiomeTemperature::Temperate, + .humidity = BiomeHumidity::Dry, + .is_ocean = false, .water_ratio = .05, .ice_ratio = .0, .sand_ratio = .05, @@ -43,6 +55,9 @@ constexpr BiomeProperties biome_properties[] = { // Forest (Temperate & Moderate) { .name = "Forest", + .temperature = BiomeTemperature::Temperate, + .humidity = BiomeHumidity::Moderate, + .is_ocean = false, .water_ratio = .1, .ice_ratio = .0, .sand_ratio = .05, @@ -51,6 +66,9 @@ constexpr BiomeProperties biome_properties[] = { // Ocean (Temperate & Wet) { .name = "Ocean", + .temperature = BiomeTemperature::Temperate, + .humidity = BiomeHumidity::Wet, + .is_ocean = true, .water_ratio = .8, .ice_ratio = .0, .sand_ratio = .15, @@ -59,6 +77,9 @@ constexpr BiomeProperties biome_properties[] = { // Desert (Hot & Dry) { .name = "Desert", + .temperature = BiomeTemperature::Hot, + .humidity = BiomeHumidity::Dry, + .is_ocean = false, .water_ratio = .0, .ice_ratio = .0, .sand_ratio = .8, @@ -67,6 +88,9 @@ constexpr BiomeProperties biome_properties[] = { // Savanna (Hot & Moderate) { .name = "Savanna", + .temperature = BiomeTemperature::Hot, + .humidity = BiomeHumidity::Moderate, + .is_ocean = false, .water_ratio = .2, .ice_ratio = .0, .sand_ratio = .1, @@ -75,6 +99,9 @@ constexpr BiomeProperties biome_properties[] = { // Luke Ocean (Hot & Wet) { .name = "Luke Ocean", + .temperature = BiomeTemperature::Hot, + .humidity = BiomeHumidity::Wet, + .is_ocean = true, .water_ratio = .8, .ice_ratio = .0, .sand_ratio = .05,