Prechádzať zdrojové kódy

Various style cleanups + unused code removal

-> Don't pass pointer to whole IGameDef to NodeMetadata constructors
	and deserializers, but only to IItemDefManager, which is needed
-> Remove the unused content_mapnode_get_new_name() method
-> Fix style for MapBlock::deSerialize and MapBlock::deSerialize_pre22,
	improving accuracy of error messages a bit
-> Fix style at other serialisation methods too
-> Improve accuracy of some comments
est31 8 rokov pred
rodič
commit
452df1c723

+ 0 - 66
src/content_mapnode.cpp

@@ -167,69 +167,3 @@ void content_mapnode_get_name_id_mapping(NameIdMapping *nimap)
 	nimap->set(CONTENT_AIR, "air");
 }
 
-class NewNameGetter
-{
-public:
-	NewNameGetter()
-	{
-		old_to_new["CONTENT_STONE"] = "default:stone";
-		old_to_new["CONTENT_WATER"] = "default:water_flowing";
-		old_to_new["CONTENT_TORCH"] = "default:torch";
-		old_to_new["CONTENT_WATERSOURCE"] = "default:water_source";
-		old_to_new["CONTENT_SIGN_WALL"] = "default:sign_wall";
-		old_to_new["CONTENT_CHEST"] = "default:chest";
-		old_to_new["CONTENT_FURNACE"] = "default:furnace";
-		old_to_new["CONTENT_LOCKABLE_CHEST"] = "default:locked_chest";
-		old_to_new["CONTENT_FENCE"] = "default:wooden_fence";
-		old_to_new["CONTENT_RAIL"] = "default:rail";
-		old_to_new["CONTENT_LADDER"] = "default:ladder";
-		old_to_new["CONTENT_LAVA"] = "default:lava_flowing";
-		old_to_new["CONTENT_LAVASOURCE"] = "default:lava_source";
-		old_to_new["CONTENT_GRASS"] = "default:dirt_with_grass";
-		old_to_new["CONTENT_TREE"] = "default:tree";
-		old_to_new["CONTENT_LEAVES"] = "default:leaves";
-		old_to_new["CONTENT_GRASS_FOOTSTEPS"] = "default:dirt_with_grass_footsteps";
-		old_to_new["CONTENT_MESE"] = "default:mese";
-		old_to_new["CONTENT_MUD"] = "default:dirt";
-		old_to_new["CONTENT_CLOUD"] = "default:cloud";
-		old_to_new["CONTENT_COALSTONE"] = "default:coalstone";
-		old_to_new["CONTENT_WOOD"] = "default:wood";
-		old_to_new["CONTENT_SAND"] = "default:sand";
-		old_to_new["CONTENT_COBBLE"] = "default:cobble";
-		old_to_new["CONTENT_STEEL"] = "default:steel";
-		old_to_new["CONTENT_GLASS"] = "default:glass";
-		old_to_new["CONTENT_MOSSYCOBBLE"] = "default:mossycobble";
-		old_to_new["CONTENT_GRAVEL"] = "default:gravel";
-		old_to_new["CONTENT_SANDSTONE"] = "default:sandstone";
-		old_to_new["CONTENT_CACTUS"] = "default:cactus";
-		old_to_new["CONTENT_BRICK"] = "default:brick";
-		old_to_new["CONTENT_CLAY"] = "default:clay";
-		old_to_new["CONTENT_PAPYRUS"] = "default:papyrus";
-		old_to_new["CONTENT_BOOKSHELF"] = "default:bookshelf";
-		old_to_new["CONTENT_JUNGLETREE"] = "default:jungletree";
-		old_to_new["CONTENT_JUNGLEGRASS"] = "default:junglegrass";
-		old_to_new["CONTENT_NC"] = "default:nyancat";
-		old_to_new["CONTENT_NC_RB"] = "default:nyancat_rainbow";
-		old_to_new["CONTENT_APPLE"] = "default:apple";
-		old_to_new["CONTENT_SAPLING"] = "default:sapling";
-		// Just in case
-		old_to_new["CONTENT_IGNORE"] = "ignore";
-		old_to_new["CONTENT_AIR"] = "air";
-	}
-	std::string get(const std::string &old)
-	{
-		StringMap::const_iterator it = old_to_new.find(old);
-		if (it == old_to_new.end())
-			return "";
-		return it->second;
-	}
-private:
-	StringMap old_to_new;
-};
-
-NewNameGetter newnamegetter;
-
-std::string content_mapnode_get_new_name(const std::string &oldname)
-{
-	return newnamegetter.get(oldname);
-}

+ 0 - 4
src/content_mapnode.h

@@ -34,8 +34,4 @@ MapNode mapnode_translate_to_internal(MapNode n_from, u8 version);
 class NameIdMapping;
 void content_mapnode_get_name_id_mapping(NameIdMapping *nimap);
 
-// Convert "CONTENT_STONE"-style names to dynamic ids
-std::string content_mapnode_get_new_name(const std::string &oldname);
-class INodeDefManager;
-
 #endif

+ 4 - 4
src/content_nodemeta.cpp

@@ -79,7 +79,7 @@ static bool content_nodemeta_deserialize_legacy_body(
 			inv->getList("0")->setName("main");
 		}
 		assert(inv->getList("main") && !inv->getList("0"));
-		
+
 		meta->setString("formspec","size[8,9]"
 				"list[current_name;main;0,0;8,4;]"
 				"list[current_player;main;0,5;8,4;]");
@@ -96,7 +96,7 @@ static bool content_nodemeta_deserialize_legacy_body(
 			inv->getList("0")->setName("main");
 		}
 		assert(inv->getList("main") && !inv->getList("0"));
-		
+
 		meta->setString("formspec","size[8,9]"
 				"list[current_name;main;0,0;8,4;]"
 				"list[current_player;main;0,5;8,4;]");
@@ -145,7 +145,7 @@ static bool content_nodemeta_deserialize_legacy_meta(
 
 void content_nodemeta_deserialize_legacy(std::istream &is,
 		NodeMetadataList *meta, NodeTimerList *timers,
-		IGameDef *gamedef)
+		IItemDefManager *item_def_mgr)
 {
 	meta->clear();
 	timers->clear();
@@ -181,7 +181,7 @@ void content_nodemeta_deserialize_legacy(std::istream &is,
 			continue;
 		}
 
-		NodeMetadata *data = new NodeMetadata(gamedef);
+		NodeMetadata *data = new NodeMetadata(item_def_mgr);
 		bool need_timer = content_nodemeta_deserialize_legacy_meta(is, data);
 		meta->set(p, data);
 

+ 2 - 2
src/content_nodemeta.h

@@ -24,7 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 class NodeMetadataList;
 class NodeTimerList;
-class IGameDef;
+class IItemDefManager;
 
 /*
 	Legacy nodemeta definitions
@@ -32,7 +32,7 @@ class IGameDef;
 
 void content_nodemeta_deserialize_legacy(std::istream &is,
 		NodeMetadataList *meta, NodeTimerList *timers,
-		IGameDef *gamedef);
+		IItemDefManager *item_def_mgr);
 
 void content_nodemeta_serialize_legacy(std::ostream &os, NodeMetadataList *meta);
 

+ 50 - 72
src/mapblock.cpp

@@ -696,19 +696,17 @@ void MapBlock::deSerialize(std::istream &is, u8 version, bool disk)
 	TRACESTREAM(<<"MapBlock::deSerialize "<<PP(getPos())
 			<<": Node metadata"<<std::endl);
 	// Ignore errors
-	try{
+	try {
 		std::ostringstream oss(std::ios_base::binary);
 		decompressZlib(is, oss);
 		std::istringstream iss(oss.str(), std::ios_base::binary);
-		if(version >= 23)
-			m_node_metadata.deSerialize(iss, m_gamedef);
+		if (version >= 23)
+			m_node_metadata.deSerialize(iss, m_gamedef->idef());
 		else
 			content_nodemeta_deserialize_legacy(iss,
-					&m_node_metadata, &m_node_timers,
-					m_gamedef);
-	}
-	catch(SerializationError &e)
-	{
+				&m_node_metadata, &m_node_timers,
+				m_gamedef->idef());
+	} catch(SerializationError &e) {
 		errorstream<<"WARNING: MapBlock::deSerialize(): Ignoring an error"
 				<<" while deserializing node metadata at ("
 				<<PP(getPos())<<": "<<e.what()<<std::endl;
@@ -794,23 +792,20 @@ void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk)
 	SharedBuffer<u8> databuf_nodelist(nodecount * ser_length);
 
 	// These have no compression
-	if(version <= 3 || version == 5 || version == 6)
-	{
+	if (version <= 3 || version == 5 || version == 6) {
 		char tmp;
 		is.read(&tmp, 1);
-		if(is.gcount() != 1)
-			throw SerializationError
-					("MapBlock::deSerialize: no enough input data");
+		if (is.gcount() != 1)
+			throw SerializationError(std::string(__FUNCTION_NAME)
+				+ ": no enough input data");
 		is_underground = tmp;
-		is.read((char*)*databuf_nodelist, nodecount * ser_length);
-		if((u32)is.gcount() != nodecount * ser_length)
-			throw SerializationError
-					("MapBlock::deSerialize: no enough input data");
-	}
-	else if(version <= 10)
-	{
+		is.read((char *)*databuf_nodelist, nodecount * ser_length);
+		if ((u32)is.gcount() != nodecount * ser_length)
+			throw SerializationError(std::string(__FUNCTION_NAME)
+				+ ": no enough input data");
+	} else if (version <= 10) {
 		u8 t8;
-		is.read((char*)&t8, 1);
+		is.read((char *)&t8, 1);
 		is_underground = t8;
 
 		{
@@ -818,11 +813,10 @@ void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk)
 			std::ostringstream os(std::ios_base::binary);
 			decompress(is, os, version);
 			std::string s = os.str();
-			if(s.size() != nodecount)
-				throw SerializationError
-						("MapBlock::deSerialize: invalid format");
-			for(u32 i=0; i<s.size(); i++)
-			{
+			if (s.size() != nodecount)
+				throw SerializationError(std::string(__FUNCTION_NAME)
+					+ ": no enough input data");
+			for (u32 i = 0; i < s.size(); i++) {
 				databuf_nodelist[i*ser_length] = s[i];
 			}
 		}
@@ -831,33 +825,27 @@ void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk)
 			std::ostringstream os(std::ios_base::binary);
 			decompress(is, os, version);
 			std::string s = os.str();
-			if(s.size() != nodecount)
-				throw SerializationError
-						("MapBlock::deSerialize: invalid format");
-			for(u32 i=0; i<s.size(); i++)
-			{
+			if (s.size() != nodecount)
+				throw SerializationError(std::string(__FUNCTION_NAME)
+					+ ": no enough input data");
+			for (u32 i = 0; i < s.size(); i++) {
 				databuf_nodelist[i*ser_length + 1] = s[i];
 			}
 		}
 
-		if(version >= 10)
-		{
+		if (version >= 10) {
 			// Uncompress and set param2 data
 			std::ostringstream os(std::ios_base::binary);
 			decompress(is, os, version);
 			std::string s = os.str();
-			if(s.size() != nodecount)
-				throw SerializationError
-						("MapBlock::deSerialize: invalid format");
-			for(u32 i=0; i<s.size(); i++)
-			{
+			if (s.size() != nodecount)
+				throw SerializationError(std::string(__FUNCTION_NAME)
+					+ ": no enough input data");
+			for (u32 i = 0; i < s.size(); i++) {
 				databuf_nodelist[i*ser_length + 2] = s[i];
 			}
 		}
-	}
-	// All other versions (newest)
-	else
-	{
+	} else { // All other versions (10 to 21)
 		u8 flags;
 		is.read((char*)&flags, 1);
 		is_underground = (flags & 0x01) ? true : false;
@@ -870,14 +858,12 @@ void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk)
 		std::ostringstream os(std::ios_base::binary);
 		decompress(is, os, version);
 		std::string s = os.str();
-		if(s.size() != nodecount*3)
-			throw SerializationError
-					("MapBlock::deSerialize: decompress resulted in size"
-					" other than nodecount*3");
+		if (s.size() != nodecount * 3)
+			throw SerializationError(std::string(__FUNCTION_NAME)
+				+ ": decompress resulted in size other than nodecount*3");
 
 		// deserialize nodes from buffer
-		for(u32 i=0; i<nodecount; i++)
-		{
+		for (u32 i = 0; i < nodecount; i++) {
 			databuf_nodelist[i*ser_length] = s[i];
 			databuf_nodelist[i*ser_length + 1] = s[i+nodecount];
 			databuf_nodelist[i*ser_length + 2] = s[i+nodecount*2];
@@ -886,31 +872,25 @@ void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk)
 		/*
 			NodeMetadata
 		*/
-		if(version >= 14)
-		{
+		if (version >= 14) {
 			// Ignore errors
-			try{
-				if(version <= 15)
-				{
+			try {
+				if (version <= 15) {
 					std::string data = deSerializeString(is);
 					std::istringstream iss(data, std::ios_base::binary);
 					content_nodemeta_deserialize_legacy(iss,
-							&m_node_metadata, &m_node_timers,
-							m_gamedef);
-				}
-				else
-				{
+						&m_node_metadata, &m_node_timers,
+						m_gamedef->idef());
+				} else {
 					//std::string data = deSerializeLongString(is);
 					std::ostringstream oss(std::ios_base::binary);
 					decompressZlib(is, oss);
 					std::istringstream iss(oss.str(), std::ios_base::binary);
 					content_nodemeta_deserialize_legacy(iss,
-							&m_node_metadata, &m_node_timers,
-							m_gamedef);
+						&m_node_metadata, &m_node_timers,
+						m_gamedef->idef());
 				}
-			}
-			catch(SerializationError &e)
-			{
+			} catch(SerializationError &e) {
 				errorstream<<"WARNING: MapBlock::deSerialize(): Ignoring an error"
 						<<" while deserializing node metadata"<<std::endl;
 			}
@@ -918,17 +898,15 @@ void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk)
 	}
 
 	// Deserialize node data
-	for(u32 i=0; i<nodecount; i++)
-	{
-		data[i].deSerialize(&databuf_nodelist[i*ser_length], version);
+	for (u32 i = 0; i < nodecount; i++) {
+		data[i].deSerialize(&databuf_nodelist[i * ser_length], version);
 	}
 
-	if(disk)
-	{
+	if (disk) {
 		/*
 			Versions up from 9 have block objects. (DEPRECATED)
 		*/
-		if(version >= 9){
+		if (version >= 9) {
 			u16 count = readU16(is);
 			// Not supported and length not known if count is not 0
 			if(count != 0){
@@ -941,11 +919,11 @@ void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk)
 		/*
 			Versions up from 15 have static objects.
 		*/
-		if(version >= 15)
+		if (version >= 15)
 			m_static_objects.deSerialize(is);
 
 		// Timestamp
-		if(version >= 17){
+		if (version >= 17) {
 			setTimestamp(readU32(is));
 			m_disk_timestamp = m_timestamp;
 		} else {
@@ -955,7 +933,7 @@ void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk)
 		// Dynamically re-set ids based on node names
 		NameIdMapping nimap;
 		// If supported, read node definition id mapping
-		if(version >= 21){
+		if (version >= 21) {
 			nimap.deSerialize(is);
 		// Else set the legacy mapping
 		} else {

+ 0 - 1
src/mapgen.cpp

@@ -29,7 +29,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "content_sao.h"
 #include "nodedef.h"
 #include "emerge.h"
-#include "content_mapnode.h" // For content_mapnode_get_new_name
 #include "voxelalgorithms.h"
 #include "porting.h"
 #include "profiler.h"

+ 0 - 1
src/mapgen_v6.cpp

@@ -26,7 +26,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 //#include "serverobject.h"
 #include "content_sao.h"
 #include "nodedef.h"
-#include "content_mapnode.h" // For content_mapnode_get_new_name
 #include "voxelalgorithms.h"
 //#include "profiler.h" // For TimeTaker
 #include "settings.h" // For g_settings

+ 13 - 14
src/nodemetadata.cpp

@@ -30,9 +30,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 	NodeMetadata
 */
 
-NodeMetadata::NodeMetadata(IGameDef *gamedef):
+NodeMetadata::NodeMetadata(IItemDefManager *item_def_mgr):
 	m_stringvars(),
-	m_inventory(new Inventory(gamedef->idef()))
+	m_inventory(new Inventory(item_def_mgr))
 {
 }
 
@@ -101,34 +101,34 @@ void NodeMetadataList::serialize(std::ostream &os) const
 		v3s16 p = i->first;
 		NodeMetadata *data = i->second;
 
-		u16 p16 = p.Z*MAP_BLOCKSIZE*MAP_BLOCKSIZE + p.Y*MAP_BLOCKSIZE + p.X;
+		u16 p16 = p.Z * MAP_BLOCKSIZE * MAP_BLOCKSIZE + p.Y * MAP_BLOCKSIZE + p.X;
 		writeU16(os, p16);
 
 		data->serialize(os);
 	}
 }
 
-void NodeMetadataList::deSerialize(std::istream &is, IGameDef *gamedef)
+void NodeMetadataList::deSerialize(std::istream &is, IItemDefManager *item_def_mgr)
 {
 	clear();
 
 	u8 version = readU8(is);
 
-	if(version == 0){
+	if (version == 0) {
 		// Nothing
 		return;
 	}
 
-	if(version != 1){
-		infostream<<__FUNCTION_NAME<<": version "<<version<<" not supported"
-				<<std::endl;
-		throw SerializationError("NodeMetadataList::deSerialize");
+	if (version != 1) {
+		std::string err_str = std::string(__FUNCTION_NAME)
+			+ ": version " + itos(version) + " not supported";
+		infostream << err_str << std::endl;
+		throw SerializationError(err_str);
 	}
 
 	u16 count = readU16(is);
 
-	for(u16 i=0; i<count; i++)
-	{
+	for (u16 i=0; i < count; i++) {
 		u16 p16 = readU16(is);
 
 		v3s16 p;
@@ -138,8 +138,7 @@ void NodeMetadataList::deSerialize(std::istream &is, IGameDef *gamedef)
 		p16 &= MAP_BLOCKSIZE - 1;
 		p.X = p16;
 
-		if(m_data.find(p) != m_data.end())
-		{
+		if (m_data.find(p) != m_data.end()) {
 			infostream<<"WARNING: NodeMetadataList::deSerialize(): "
 					<<"already set data at position"
 					<<"("<<p.X<<","<<p.Y<<","<<p.Z<<"): Ignoring."
@@ -147,7 +146,7 @@ void NodeMetadataList::deSerialize(std::istream &is, IGameDef *gamedef)
 			continue;
 		}
 
-		NodeMetadata *data = new NodeMetadata(gamedef);
+		NodeMetadata *data = new NodeMetadata(item_def_mgr);
 		data->deSerialize(is);
 		m_data[p] = data;
 	}

+ 3 - 3
src/nodemetadata.h

@@ -35,12 +35,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 */
 
 class Inventory;
-class IGameDef;
+class IItemDefManager;
 
 class NodeMetadata
 {
 public:
-	NodeMetadata(IGameDef *gamedef);
+	NodeMetadata(IItemDefManager *item_def_mgr);
 	~NodeMetadata();
 
 	void serialize(std::ostream &os) const;
@@ -80,7 +80,7 @@ public:
 	~NodeMetadataList();
 
 	void serialize(std::ostream &os) const;
-	void deSerialize(std::istream &is, IGameDef *gamedef);
+	void deSerialize(std::istream &is, IItemDefManager *item_def_mgr);
 
 	// Add all keys in this list to the vector keys
 	std::vector<v3s16> getAllKeys();

+ 1 - 1
src/rollback_interface.cpp

@@ -155,7 +155,7 @@ bool RollbackAction::applyRevert(Map *map, InventoryManager *imgr, IGameDef *gam
 				} else {
 					NodeMetadata *meta = map->getNodeMetadata(p);
 					if (!meta) {
-						meta = new NodeMetadata(gamedef);
+						meta = new NodeMetadata(gamedef->idef());
 						if (!map->setNodeMetadata(p, meta)) {
 							delete meta;
 							infostream << "RollbackAction::applyRevert(): "

+ 2 - 1
src/script/lua_api/l_nodemeta.cpp

@@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "common/c_content.h"
 #include "environment.h"
 #include "map.h"
+#include "gamedef.h"
 #include "nodemetadata.h"
 
 
@@ -43,7 +44,7 @@ NodeMetadata* NodeMetaRef::getmeta(NodeMetaRef *ref, bool auto_create)
 {
 	NodeMetadata *meta = ref->m_env->getMap().getNodeMetadata(ref->m_p);
 	if(meta == NULL && auto_create)	{
-		meta = new NodeMetadata(ref->m_env->getGameDef());
+		meta = new NodeMetadata(ref->m_env->getGameDef()->idef());
 		if(!ref->m_env->getMap().setNodeMetadata(ref->m_p, meta)) {
 			delete meta;
 			return NULL;