#include "mg_biome.h"
#include "gamedef.h"
#include "nodedef.h"
-#include "map.h" //for ManualMapVoxelManipulator
+#include "map.h" //for MMVManip
#include "log.h"
#include "util/numeric.h"
#include "main.h"
// 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->height_min = -MAP_GENERATION_LIMIT;
- b->height_max = MAP_GENERATION_LIMIT;
- b->heat_point = 0.0;
- b->humidity_point = 0.0;
-
- m_resolver->addNode("air", "", CONTENT_AIR, &b->c_top);
- m_resolver->addNode("air", "", CONTENT_AIR, &b->c_filler);
- m_resolver->addNode("mapgen_stone", "", CONTENT_AIR, &b->c_stone);
- m_resolver->addNode("mapgen_water_source", "", CONTENT_AIR, &b->c_water);
- m_resolver->addNode("air", "", CONTENT_AIR, &b->c_dust);
- m_resolver->addNode("mapgen_water_source", "", CONTENT_AIR, &b->c_dust_water);
+ b->id = 0;
+ b->name = "Default";
+ b->flags = 0;
+ b->depth_top = 0;
+ b->depth_filler = 0;
+ b->depth_water_top = 0;
+ b->y_min = -MAP_GENERATION_LIMIT;
+ b->y_max = MAP_GENERATION_LIMIT;
+ b->heat_point = 0.0;
+ b->humidity_point = 0.0;
+
+ NodeResolveInfo *nri = new NodeResolveInfo(b);
+ nri->nodenames.push_back("air");
+ nri->nodenames.push_back("air");
+ nri->nodenames.push_back("mapgen_stone");
+ nri->nodenames.push_back("mapgen_water_source");
+ nri->nodenames.push_back("mapgen_water_source");
+ nri->nodenames.push_back("air");
+ m_ndef->pendNodeResolve(nri);
add(b);
}
for (size_t i = 1; i < m_elements.size(); i++) {
b = (Biome *)m_elements[i];
- if (!b || y > b->height_max || y < b->height_min)
+ if (!b || y > b->y_max || y < b->y_min)
continue;
float d_heat = heat - b->heat_point;
void BiomeManager::clear()
{
+
for (size_t i = 1; i < m_elements.size(); i++) {
Biome *b = (Biome *)m_elements[i];
- if (!b)
- continue;
-
- m_resolver->cancelNode(&b->c_top);
- m_resolver->cancelNode(&b->c_filler);
- m_resolver->cancelNode(&b->c_stone);
- m_resolver->cancelNode(&b->c_water);
- m_resolver->cancelNode(&b->c_dust);
- m_resolver->cancelNode(&b->c_dust_water);
+ delete b;
}
+
m_elements.resize(1);
}
+
+///////////////////////////////////////////////////////////////////////////////
+
+
+void Biome::resolveNodeNames(NodeResolveInfo *nri)
+{
+ m_ndef->getIdFromResolveInfo(nri, "mapgen_dirt_with_grass", CONTENT_AIR, c_top);
+ m_ndef->getIdFromResolveInfo(nri, "mapgen_dirt", CONTENT_AIR, c_filler);
+ m_ndef->getIdFromResolveInfo(nri, "mapgen_stone", CONTENT_AIR, c_stone);
+ m_ndef->getIdFromResolveInfo(nri, "mapgen_water_source", CONTENT_AIR, c_water_top);
+ m_ndef->getIdFromResolveInfo(nri, "mapgen_water_source", CONTENT_AIR, c_water);
+ m_ndef->getIdFromResolveInfo(nri, "air", CONTENT_IGNORE, c_dust);
+}
+