示例#1
0
void EmergeManager::initMapgens(MapgenParams *mgparams) {
	Mapgen *mg;

	if (mapgen.size())
		return;

	// Resolve names of nodes for things that were registered
	// (at this point, the registration period is over)
	biomedef->resolveNodeNames(ndef);

	for (size_t i = 0; i != ores.size(); i++)
		ores[i]->resolveNodeNames(ndef);

	for (size_t i = 0; i != decorations.size(); i++)
		decorations[i]->resolveNodeNames(ndef);

	// Apply mapgen parameter overrides from Lua
	if (luaoverride_params) {
		if (luaoverride_params_modified & MGPARAMS_SET_MGNAME) {
			MapgenParams *mgp = setMapgenType(mgparams, luaoverride_params->mg_name);
			if (!mgp) {
				errorstream << "EmergeManager: Failed to set new mapgen name"
							<< std::endl;
			} else {
				mgparams = mgp;
			}
		}

		if (luaoverride_params_modified & MGPARAMS_SET_SEED)
			mgparams->seed = luaoverride_params->seed;

		if (luaoverride_params_modified & MGPARAMS_SET_WATER_LEVEL)
			mgparams->water_level = luaoverride_params->water_level;

		if (luaoverride_params_modified & MGPARAMS_SET_FLAGS) {
			mgparams->flags &= ~luaoverride_flagmask;
			mgparams->flags |= luaoverride_params->flags;
		}

		delete luaoverride_params;
		luaoverride_params = NULL;
	}

	// Create the mapgens
	this->params = mgparams;
	for (size_t i = 0; i != emergethread.size(); i++) {
		mg = createMapgen(params->mg_name, i, params);
		if (!mg) {
			infostream << "EmergeManager: Falling back to Mapgen V6" << std::endl;

			params = setMapgenType(params, "v6");
			mg = createMapgen(params->mg_name, i, params);
			if (!mg) {
				errorstream << "EmergeManager: CRITICAL ERROR: Failed to fall"
					"back to Mapgen V6, not generating map" << std::endl;
			}
		}
		mapgen.push_back(mg);
	}
}
示例#2
0
void EmergeManager::initMapgens(MapgenParams *mgparams) {
	Mapgen *mg;
	
	if (mapgen.size())
		return;
	
	// Resolve names of nodes for things that were registered
	// (at this point, the registration period is over)
	biomedef->resolveNodeNames(ndef);
	
	for (size_t i = 0; i != ores.size(); i++)
		ores[i]->resolveNodeNames(ndef);
		
	for (size_t i = 0; i != decorations.size(); i++)
		decorations[i]->resolveNodeNames(ndef);
	
	// Apply mapgen parameter overrides from Lua
	if (luaoverride_params) {
		if (luaoverride_params_modified & MGPARAMS_SET_MGNAME)
			mgparams->mg_name = luaoverride_params->mg_name;
		
		if (luaoverride_params_modified & MGPARAMS_SET_SEED)
			mgparams->seed = luaoverride_params->seed;
		
		if (luaoverride_params_modified & MGPARAMS_SET_WATER_LEVEL)
			mgparams->water_level = luaoverride_params->water_level;
		
		if (luaoverride_params_modified & MGPARAMS_SET_FLAGS) {
			mgparams->flags &= ~luaoverride_flagmask;
			mgparams->flags |= luaoverride_params->flags;
		}
		
		delete luaoverride_params;
		luaoverride_params = NULL;
	}
	
	// Create the mapgens
	this->params = mgparams;
	for (size_t i = 0; i != emergethread.size(); i++) {
		mg = createMapgen(params->mg_name, 0, params);
		if (!mg) {
			infostream << "EmergeManager: falling back to mapgen v6" << std::endl;
			delete params;
			params = createMapgenParams("v6");
			mg = createMapgen("v6", 0, params);
		}
		mapgen.push_back(mg);
	}
}
示例#3
0
void EmergeManager::initMapgens() {
	if (mapgen.size())
		return;

	// Resolve names of nodes for things that were registered
	// (at this point, the registration period is over)
	biomedef->resolveNodeNames(ndef);

	for (size_t i = 0; i != ores.size(); i++)
		ores[i]->resolveNodeNames(ndef);

	for (size_t i = 0; i != decorations.size(); i++)
		decorations[i]->resolveNodeNames(ndef);

	if (!params.sparams) {
		params.sparams = createMapgenParams(params.mg_name);
		if (!params.sparams) {
			params.mg_name = DEFAULT_MAPGEN;
			params.sparams = createMapgenParams(params.mg_name);
			assert(params.sparams);
		}
		params.sparams->readParams(g_settings);
	}

	// Create the mapgens
	for (size_t i = 0; i != emergethread.size(); i++) {
		Mapgen *mg = createMapgen(params.mg_name, i, &params);
		assert(mg);
		mapgen.push_back(mg);
	}
}
示例#4
0
void EmergeManager::initMapgens(MapgenParams *mgparams) {
	Mapgen *mg;
	
	if (mapgen.size())
		return;
	
	this->params = mgparams;
	for (unsigned int i = 0; i != emergethread.size(); i++) {
		mg = createMapgen(params->mg_name, 0, params);
		if (!mg) {
			infostream << "EmergeManager: falling back to mapgen v6" << std::endl;
			delete params;
			params = createMapgenParams("v6");
			mg = createMapgen("v6", 0, params);
		}
		mapgen.push_back(mg);
	}
}
示例#5
0
void EmergeManager::initMapgens() {
	if (mapgen.size())
		return;

	if (!params.sparams) {
		params.sparams = createMapgenParams(params.mg_name);
		if (!params.sparams) {
			params.mg_name = DEFAULT_MAPGEN;
			params.sparams = createMapgenParams(params.mg_name);
			assert(params.sparams);
		}
		params.sparams->readParams(g_settings);
	}

	// Create the mapgens
	for (size_t i = 0; i != emergethread.size(); i++) {
		Mapgen *mg = createMapgen(params.mg_name, i, &params);
		assert(mg);
		mapgen.push_back(mg);
	}
}