From 4f17362aeb80e5339c58a5d3b0fbaeb88d9e701c Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Mon, 13 Feb 2012 21:47:03 +0000 Subject: Rewritten most of the code for multithreading; still not 100%, but getting there. If this commit proves to be too problematic, we can always undo it. git-svn-id: http://mc-server.googlecode.com/svn/trunk@251 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/packets/cPacket_MapChunk.cpp | 3 ++- source/packets/cPacket_MapChunk.h | 16 ++++++++++++++-- source/packets/cPacket_Metadata.cpp | 14 ++++++++++++++ source/packets/cPacket_Metadata.h | 1 + 4 files changed, 31 insertions(+), 3 deletions(-) (limited to 'source/packets') diff --git a/source/packets/cPacket_MapChunk.cpp b/source/packets/cPacket_MapChunk.cpp index a9448f050..522842d32 100644 --- a/source/packets/cPacket_MapChunk.cpp +++ b/source/packets/cPacket_MapChunk.cpp @@ -19,8 +19,9 @@ cPacket_MapChunk::~cPacket_MapChunk() -cPacket_MapChunk::cPacket_MapChunk(cChunk* a_Chunk) +cPacket_MapChunk::cPacket_MapChunk(cChunk * a_Chunk) { + assert(a_Chunk->IsValid()); m_PacketID = E_MAP_CHUNK; m_PosX = a_Chunk->GetPosX() * 16; // It has to be block coordinates diff --git a/source/packets/cPacket_MapChunk.h b/source/packets/cPacket_MapChunk.h index b4994f12b..2cefd8b59 100644 --- a/source/packets/cPacket_MapChunk.h +++ b/source/packets/cPacket_MapChunk.h @@ -8,7 +8,13 @@ class cChunk; -class cPacket_MapChunk : public cPacket + + + + + +class cPacket_MapChunk : + public cPacket { public: cPacket_MapChunk() @@ -21,7 +27,7 @@ public: , m_CompressedSize( 0 ) , m_CompressedData( 0 ) { m_PacketID = E_MAP_CHUNK; m_CompressedData = 0; } - cPacket_MapChunk(cChunk* a_Chunk); + cPacket_MapChunk( const cPacket_MapChunk & a_Copy ); ~cPacket_MapChunk(); virtual cPacket* Clone() const { return new cPacket_MapChunk(*this); } @@ -38,6 +44,12 @@ public: static const unsigned int c_Size = 1 + 4 + 2 + 4 + 1 + 1 + 1 + 4; char * m_CompressedData; + +protected: + friend class cChunk; + + cPacket_MapChunk(cChunk * a_Chunk); // Called only from within cChunk, therefore it CAN receive a direct pointer + }; diff --git a/source/packets/cPacket_Metadata.cpp b/source/packets/cPacket_Metadata.cpp index 9d2d61704..595801b54 100644 --- a/source/packets/cPacket_Metadata.cpp +++ b/source/packets/cPacket_Metadata.cpp @@ -35,6 +35,20 @@ cPacket_Metadata::cPacket_Metadata() +cPacket_Metadata::cPacket_Metadata(const cPacket_Metadata & a_Other) + : m_EMetaData( a_Other.m_EMetaData ) + , m_UniqueID( a_Other.m_UniqueID ) + , m_Type( a_Other.m_Type ) + , m_MetaData( NULL ) +{ + m_PacketID = E_METADATA; + FormPacket(); +} + + + + + cPacket_Metadata::~cPacket_Metadata() { delete [] m_MetaData; diff --git a/source/packets/cPacket_Metadata.h b/source/packets/cPacket_Metadata.h index 4900bad0a..24818e379 100644 --- a/source/packets/cPacket_Metadata.h +++ b/source/packets/cPacket_Metadata.h @@ -13,6 +13,7 @@ class cPacket_Metadata : public cPacket public: cPacket_Metadata(int s, int id); cPacket_Metadata(); + cPacket_Metadata(const cPacket_Metadata & a_Other); ~cPacket_Metadata(); virtual void Serialize(AString & a_Data) const override; -- cgit v1.2.3