From 0b77588e87b0eeedd624eb0d6c2559aad10104ad Mon Sep 17 00:00:00 2001 From: PilzAdam Date: Fri, 2 Aug 2013 00:29:27 +0200 Subject: Allow multiple 'wherein' nodes in oredef --- src/mapgen.cpp | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'src/mapgen.cpp') diff --git a/src/mapgen.cpp b/src/mapgen.cpp index d285129fb..f446d05b7 100644 --- a/src/mapgen.cpp +++ b/src/mapgen.cpp @@ -91,18 +91,17 @@ void Ore::resolveNodeNames(INodeDefManager *ndef) { if (ore == CONTENT_IGNORE) { errorstream << "Ore::resolveNodeNames: ore node '" << ore_name << "' not defined"; - ore = CONTENT_AIR; - wherein = CONTENT_AIR; + ore = CONTENT_AIR; + wherein.push_back(CONTENT_AIR); + return; } } - if (wherein == CONTENT_IGNORE) { - wherein = ndef->getId(wherein_name); - if (wherein == CONTENT_IGNORE) { - errorstream << "Ore::resolveNodeNames: wherein node '" - << wherein_name << "' not defined"; - ore = CONTENT_AIR; - wherein = CONTENT_AIR; + for (size_t i=0; i != wherein_names.size(); i++) { + std::string name = wherein_names[i]; + content_t c = ndef->getId(name); + if (c != CONTENT_IGNORE) { + wherein.push_back(c); } } } @@ -161,8 +160,9 @@ void OreScatter::generate(ManualMapVoxelManipulator *vm, int seed, continue; u32 i = vm->m_area.index(x0 + x1, y0 + y1, z0 + z1); - if (vm->m_data[i].getContent() == wherein) - vm->m_data[i] = n_ore; + for (size_t ii = 0; ii < wherein.size(); ii++) + if (vm->m_data[i].getContent() == wherein[ii]) + vm->m_data[i] = n_ore; } } } @@ -199,8 +199,9 @@ void OreSheet::generate(ManualMapVoxelManipulator *vm, int seed, if (!vm->m_area.contains(i)) continue; - if (vm->m_data[i].getContent() == wherein) - vm->m_data[i] = n_ore; + for (size_t ii = 0; ii < wherein.size(); ii++) + if (vm->m_data[i].getContent() == wherein[ii]) + vm->m_data[i] = n_ore; } } } -- cgit v1.2.3