summaryrefslogtreecommitdiff
path: root/src/content_cao.cpp
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2012-11-26 09:49:31 +0200
committerPerttu Ahola <celeron55@gmail.com>2012-11-26 09:49:31 +0200
commit4fa4340b95165bb4cdc88ee6d7cf2d0609d6df13 (patch)
tree3c63243a79b56187d28cc89dadb43d5070ccdf2d /src/content_cao.cpp
parent197542c7ec19b41e865be1e84c6c6898de8514d1 (diff)
downloadminetest-4fa4340b95165bb4cdc88ee6d7cf2d0609d6df13.tar.gz
minetest-4fa4340b95165bb4cdc88ee6d7cf2d0609d6df13.tar.bz2
minetest-4fa4340b95165bb4cdc88ee6d7cf2d0609d6df13.zip
Proper versioning of new network-serialized stuff
Diffstat (limited to 'src/content_cao.cpp')
-rw-r--r--src/content_cao.cpp32
1 files changed, 23 insertions, 9 deletions
diff --git a/src/content_cao.cpp b/src/content_cao.cpp
index ce41c8312..c7d21d278 100644
--- a/src/content_cao.cpp
+++ b/src/content_cao.cpp
@@ -647,22 +647,36 @@ public:
{
infostream<<"GenericCAO: Got init data"<<std::endl;
std::istringstream is(data, std::ios::binary);
+ int num_messages = 0;
// version
u8 version = readU8(is);
// check version
- if(version != 1){
+ if(version == 1) // In PROTOCOL_VERSION 14
+ {
+ m_name = deSerializeString(is);
+ m_is_player = readU8(is);
+ m_id = readS16(is);
+ m_position = readV3F1000(is);
+ m_yaw = readF1000(is);
+ m_hp = readS16(is);
+ num_messages = readU8(is);
+ }
+ else if(version == 0) // In PROTOCOL_VERSION 13
+ {
+ m_name = deSerializeString(is);
+ m_is_player = readU8(is);
+ m_position = readV3F1000(is);
+ m_yaw = readF1000(is);
+ m_hp = readS16(is);
+ num_messages = readU8(is);
+ }
+ else
+ {
errorstream<<"GenericCAO: Unsupported init data version"
<<std::endl;
return;
}
- m_name = deSerializeString(is);
- m_is_player = readU8(is);
- m_id = readS16(is);
- m_position = readV3F1000(is);
- m_yaw = readF1000(is);
- m_hp = readS16(is);
-
- int num_messages = readU8(is);
+
for(int i=0; i<num_messages; i++){
std::string message = deSerializeLongString(is);
processMessage(message);