mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 09:15:29 +01:00 
			
		
		
		
	Write common mapgen params to map_meta.txt on world initialization
This commit is contained in:
		@@ -380,8 +380,11 @@ void EmergeManager::loadParamsFromSettings(Settings *settings)
 | 
			
		||||
 | 
			
		||||
	delete params.sparams;
 | 
			
		||||
	params.sparams = createMapgenParams(params.mg_name);
 | 
			
		||||
	if (params.sparams)
 | 
			
		||||
 | 
			
		||||
	if (params.sparams) {
 | 
			
		||||
		params.sparams->readParams(g_settings);
 | 
			
		||||
		params.sparams->readParams(settings);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 | 
			
		||||
#include "porting.h"
 | 
			
		||||
#include "filesys.h"
 | 
			
		||||
#include "settings.h"
 | 
			
		||||
#include "main.h"
 | 
			
		||||
#include "log.h"
 | 
			
		||||
#include "strfnd.h"
 | 
			
		||||
#ifndef SERVER
 | 
			
		||||
@@ -265,15 +266,37 @@ std::vector<WorldSpec> getAvailableWorlds()
 | 
			
		||||
 | 
			
		||||
bool initializeWorld(const std::string &path, const std::string &gameid)
 | 
			
		||||
{
 | 
			
		||||
	infostream<<"Initializing world at "<<path<<std::endl;
 | 
			
		||||
	infostream << "Initializing world at " << path << std::endl;
 | 
			
		||||
 | 
			
		||||
	fs::CreateAllDirs(path);
 | 
			
		||||
 | 
			
		||||
	// Create world.mt if does not already exist
 | 
			
		||||
	std::string worldmt_path = path + DIR_DELIM + "world.mt";
 | 
			
		||||
	if(!fs::PathExists(worldmt_path)){
 | 
			
		||||
		infostream<<"Creating world.mt ("<<worldmt_path<<")"<<std::endl;
 | 
			
		||||
		fs::CreateAllDirs(path);
 | 
			
		||||
	std::string worldmt_path = path + DIR_DELIM "world.mt";
 | 
			
		||||
	if (!fs::PathExists(worldmt_path)) {
 | 
			
		||||
		std::ostringstream ss(std::ios_base::binary);
 | 
			
		||||
		ss<<"gameid = "<<gameid<< "\nbackend = sqlite3\n";
 | 
			
		||||
		fs::safeWriteToFile(worldmt_path, ss.str());
 | 
			
		||||
		ss << "gameid = " << gameid << "\nbackend = sqlite3\n";
 | 
			
		||||
		if (!fs::safeWriteToFile(worldmt_path, ss.str()))
 | 
			
		||||
			return false;
 | 
			
		||||
 | 
			
		||||
		infostream << "Wrote world.mt (" << worldmt_path << ")" << std::endl;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Create map_meta.txt if does not already exist
 | 
			
		||||
	std::string mapmeta_path = path + DIR_DELIM "map_meta.txt";
 | 
			
		||||
	if (!fs::PathExists(mapmeta_path)) {
 | 
			
		||||
		std::ostringstream ss(std::ios_base::binary);
 | 
			
		||||
		ss
 | 
			
		||||
			<< "mg_name = "       << g_settings->get("mg_name")
 | 
			
		||||
			<< "\nseed = "        << g_settings->get("fixed_map_seed")
 | 
			
		||||
			<< "\nchunksize = "   << g_settings->get("chunksize")
 | 
			
		||||
			<< "\nwater_level = " << g_settings->get("water_level")
 | 
			
		||||
			<< "\nmg_flags = "    << g_settings->get("mg_flags")
 | 
			
		||||
			<< "\n[end_of_params]\n";
 | 
			
		||||
		if (!fs::safeWriteToFile(mapmeta_path, ss.str()))
 | 
			
		||||
			return false;
 | 
			
		||||
 | 
			
		||||
		infostream << "Wrote map_meta.txt (" << mapmeta_path << ")" << std::endl;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return true;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user