aboutsummaryrefslogtreecommitdiff
path: root/src/biome.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/biome.cpp')
-rw-r--r--src/biome.cpp84
1 files changed, 16 insertions, 68 deletions
diff --git a/src/biome.cpp b/src/biome.cpp
index e1dfc47af..94a2435f2 100644
--- a/src/biome.cpp
+++ b/src/biome.cpp
@@ -30,7 +30,7 @@ NoiseParams nparams_biome_def_heat(50, 50, v3f(500.0, 500.0, 500.0), 5349, 3, 0.
NoiseParams nparams_biome_def_humidity(50, 50, v3f(500.0, 500.0, 500.0), 842, 3, 0.55);
-BiomeDefManager::BiomeDefManager() {
+BiomeDefManager::BiomeDefManager(NodeResolver *resolver) {
biome_registration_finished = false;
np_heat = &nparams_biome_def_heat;
np_humidity = &nparams_biome_def_humidity;
@@ -38,30 +38,22 @@ BiomeDefManager::BiomeDefManager() {
// Create default biome to be used in case none exist
Biome *b = new Biome;
- b->id = 0;
- b->name = "Default";
- b->flags = 0;
-
- b->depth_top = 0;
- b->depth_filler = 0;
-
- b->nname_top = "air";
- b->nname_filler = "air";
- b->nname_water = "mapgen_water_source";
- b->nname_dust = "air";
- b->nname_dust_water = "mapgen_water_source";
-
- b->c_top = CONTENT_IGNORE;
- b->c_filler = CONTENT_IGNORE;
- b->c_water = CONTENT_IGNORE;
- b->c_dust = CONTENT_IGNORE;
- b->c_dust_water = CONTENT_IGNORE;
-
+ b->id = 0;
+ b->name = "Default";
+ b->flags = 0;
+ b->depth_top = 0;
+ b->depth_filler = 0;
b->height_min = -MAP_GENERATION_LIMIT;
b->height_max = MAP_GENERATION_LIMIT;
b->heat_point = 0.0;
b->humidity_point = 0.0;
+ resolver->addNode("air", "", CONTENT_AIR, &b->c_top);
+ resolver->addNode("air", "", CONTENT_AIR, &b->c_filler);
+ resolver->addNode("mapgen_water_source", "", CONTENT_AIR, &b->c_water);
+ resolver->addNode("air", "", CONTENT_AIR, &b->c_dust);
+ resolver->addNode("mapgen_water_source", "", CONTENT_AIR, &b->c_dust_water);
+
biomes.push_back(b);
}
@@ -106,62 +98,18 @@ void BiomeDefManager::calcBiomes(BiomeNoiseInput *input, u8 *biomeid_map) {
}
-void BiomeDefManager::resolveNodeNames(INodeDefManager *ndef) {
- Biome *b;
-
- biome_registration_finished = true;
-
- for (size_t i = 0; i < biomes.size(); i++) {
- b = biomes[i];
-
- b->c_top = ndef->getId(b->nname_top);
- if (b->c_top == CONTENT_IGNORE) {
- errorstream << "BiomeDefManager::resolveNodeNames: node '"
- << b->nname_top << "' not defined" << std::endl;
- b->c_top = CONTENT_AIR;
- b->depth_top = 0;
- }
-
- b->c_filler = ndef->getId(b->nname_filler);
- if (b->c_filler == CONTENT_IGNORE) {
- errorstream << "BiomeDefManager::resolveNodeNames: node '"
- << b->nname_filler << "' not defined" << std::endl;
- b->c_filler = CONTENT_AIR;
- b->depth_filler = 0;
- }
-
- b->c_water = ndef->getId(b->nname_water);
- if (b->c_water == CONTENT_IGNORE) {
- errorstream << "BiomeDefManager::resolveNodeNames: node '"
- << b->nname_water << "' not defined" << std::endl;
- b->c_water = CONTENT_AIR;
- }
-
- b->c_dust = ndef->getId(b->nname_dust);
- if (b->c_dust == CONTENT_IGNORE) {
- errorstream << "BiomeDefManager::resolveNodeNames: node '"
- << b->nname_dust << "' not defined" << std::endl;
- }
-
- b->c_dust_water = ndef->getId(b->nname_dust_water);
- if (b->c_dust_water == CONTENT_IGNORE) {
- errorstream << "BiomeDefManager::resolveNodeNames: node '"
- << b->nname_dust_water << "' not defined" << std::endl;
- }
- }
-}
-
-
void BiomeDefManager::addBiome(Biome *b) {
if (biome_registration_finished) {
- errorstream << "BIomeDefManager: biome registration already finished, dropping " << b->name <<std::endl;
+ errorstream << "BIomeDefManager: biome registration already "
+ "finished, dropping " << b->name << std::endl;
delete b;
return;
}
size_t nbiomes = biomes.size();
if (nbiomes >= 0xFF) {
- errorstream << "BiomeDefManager: too many biomes, dropping " << b->name << std::endl;
+ errorstream << "BiomeDefManager: too many biomes, dropping "
+ << b->name << std::endl;
delete b;
return;
}