diff --git a/src/clientserver.h b/src/clientserver.h index 769272a68..3292d1e9e 100644 --- a/src/clientserver.h +++ b/src/clientserver.h @@ -79,9 +79,11 @@ SharedBuffer makePacket_TOCLIENT_TIME_OF_DAY(u16 time, float time_speed); Serialization format changes PROTOCOL_VERSION 16: TOCLIENT_SHOW_FORMSPEC + PROTOCOL_VERSION 17: + Serialization format change: include backface_culling flag in TileDef */ -#define LATEST_PROTOCOL_VERSION 16 +#define LATEST_PROTOCOL_VERSION 17 // Server's supported network protocol range #define SERVER_PROTOCOL_VERSION_MIN 13 diff --git a/src/nodedef.cpp b/src/nodedef.cpp index 9a1145a8e..7f6c8a054 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -107,26 +107,31 @@ void NodeBox::deSerialize(std::istream &is) TileDef */ -void TileDef::serialize(std::ostream &os) const +void TileDef::serialize(std::ostream &os, u16 protocol_version) const { - writeU8(os, 0); // version + if(protocol_version >= 17) + writeU8(os, 1); + else + writeU8(os, 0); os<= 17) + writeU8(os, backface_culling); } void TileDef::deSerialize(std::istream &is) { int version = readU8(is); - if(version != 0) - throw SerializationError("unsupported TileDef version"); name = deSerializeString(is); animation.type = (TileAnimationType)readU8(is); animation.aspect_w = readU16(is); animation.aspect_h = readU16(is); animation.length = readF1000(is); + if(version >= 1) + backface_culling = readU8(is); } /* @@ -235,10 +240,10 @@ void ContentFeatures::serialize(std::ostream &os, u16 protocol_version) writeF1000(os, visual_scale); writeU8(os, 6); for(u32 i=0; i<6; i++) - tiledef[i].serialize(os); + tiledef[i].serialize(os, protocol_version); writeU8(os, CF_SPECIAL_COUNT); for(u32 i=0; i