summaryrefslogtreecommitdiff
path: root/src/mg_biome.cpp
diff options
context:
space:
mode:
authorkwolekr <kwolekr@minetest.net>2014-12-17 03:20:17 -0500
committerkwolekr <kwolekr@minetest.net>2014-12-27 02:12:21 -0500
commitb67f37f27ea7d89b2098fa9fcc2533fa1091e695 (patch)
treeb97d7c98fc29677dfc57fa8f8af4332ff9d0c87c /src/mg_biome.cpp
parent3ea5ed4ffe600fa11a3deb3de58d5bd5bbb65ee1 (diff)
downloadminetest-b67f37f27ea7d89b2098fa9fcc2533fa1091e695.tar.gz
minetest-b67f37f27ea7d89b2098fa9fcc2533fa1091e695.tar.bz2
minetest-b67f37f27ea7d89b2098fa9fcc2533fa1091e695.zip
Redefine NodeResolver interface and replace with callback mechanism
Diffstat (limited to 'src/mg_biome.cpp')
-rw-r--r--src/mg_biome.cpp40
1 files changed, 25 insertions, 15 deletions
diff --git a/src/mg_biome.cpp b/src/mg_biome.cpp
index a3a6d5128..763bef1bc 100644
--- a/src/mg_biome.cpp
+++ b/src/mg_biome.cpp
@@ -48,12 +48,14 @@ BiomeManager::BiomeManager(IGameDef *gamedef) :
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);
+ 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("air");
+ nri->nodenames.push_back("mapgen_water_source");
+ m_ndef->pendNodeResolve(nri);
add(b);
}
@@ -102,18 +104,26 @@ Biome *BiomeManager::getBiome(float heat, float humidity, s16 y)
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);
+ m_ndef->getIdFromResolveInfo(nri, "air", CONTENT_IGNORE, c_dust);
+ m_ndef->getIdFromResolveInfo(nri, "mapgen_water_source", CONTENT_IGNORE, c_dust_water);
+}
+