summaryrefslogtreecommitdiffstats
path: root/source/packets/cPacket_ItemData.cpp
diff options
context:
space:
mode:
authormadmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2012-02-07 21:49:52 +0100
committermadmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2012-02-07 21:49:52 +0100
commitb7d524423c23470cd11e720eeb48368c072838cb (patch)
treef1478e6d8e9dc68332f493595e1f9265c964e68c /source/packets/cPacket_ItemData.cpp
parentcSocketThreads initial commit. Not yet tested and not yet integrated (diff)
downloadcuberite-b7d524423c23470cd11e720eeb48368c072838cb.tar
cuberite-b7d524423c23470cd11e720eeb48368c072838cb.tar.gz
cuberite-b7d524423c23470cd11e720eeb48368c072838cb.tar.bz2
cuberite-b7d524423c23470cd11e720eeb48368c072838cb.tar.lz
cuberite-b7d524423c23470cd11e720eeb48368c072838cb.tar.xz
cuberite-b7d524423c23470cd11e720eeb48368c072838cb.tar.zst
cuberite-b7d524423c23470cd11e720eeb48368c072838cb.zip
Diffstat (limited to 'source/packets/cPacket_ItemData.cpp')
-rw-r--r--source/packets/cPacket_ItemData.cpp79
1 files changed, 47 insertions, 32 deletions
diff --git a/source/packets/cPacket_ItemData.cpp b/source/packets/cPacket_ItemData.cpp
index 851323ee4..db025a838 100644
--- a/source/packets/cPacket_ItemData.cpp
+++ b/source/packets/cPacket_ItemData.cpp
@@ -7,36 +7,37 @@
-bool cPacket_ItemData::Parse(cSocket & a_Socket)
+int cPacket_ItemData::Parse(const char * a_Data, int a_Size)
{
- m_Socket = a_Socket;
+ int TotalBytes = 0;
+ HANDLE_PACKET_READ(ReadShort, m_ItemID, TotalBytes);
- if( !ReadShort(m_ItemID) ) return false;
-
- if( m_ItemID > -1 )
+ if (m_ItemID <= -1)
{
- if( !ReadByte(m_ItemCount) ) return false;
- if( !ReadShort(m_ItemUses) ) return false;
+ m_ItemCount = 0;
+ m_ItemUses = 0;
+ return TotalBytes;
+ }
- if(cItem::IsEnchantable((ENUM_ITEM_ID) m_ItemID))
- {
- if( !ReadShort(m_EnchantNums) ) return false;
- if( m_EnchantNums > -1 )
- {
- //TODO Not implemented yet!
- }
- }
+ HANDLE_PACKET_READ(ReadByte , m_ItemCount, TotalBytes);
+ HANDLE_PACKET_READ(ReadShort, m_ItemUses, TotalBytes);
- }
- else
+ if (cItem::IsEnchantable((ENUM_ITEM_ID) m_ItemID))
{
- m_ItemCount = 0;
- m_ItemUses = 0;
+ HANDLE_PACKET_READ(ReadShort, m_EnchantNums, TotalBytes);
+
+ if ( m_EnchantNums > -1 )
+ {
+ // TODO: Enchantment not implemented yet!
+ }
}
-
- return true;
+ return TotalBytes;
}
+
+
+
+
int cPacket_ItemData::GetSize(short a_ItemID)
{
if(a_ItemID <= -1)
@@ -47,20 +48,34 @@ int cPacket_ItemData::GetSize(short a_ItemID)
}
-void cPacket_ItemData::AppendItem(char* a_Message, unsigned int &a_Iterator, cItem *a_Item)
+
+
+
+void cPacket_ItemData::AppendItem(AString & a_Data, const cItem * a_Item)
{
- return AppendItem(a_Message, a_Iterator, (short) a_Item->m_ItemID, a_Item->m_ItemCount, a_Item->m_ItemHealth);
+ return AppendItem(a_Data, a_Item->m_ItemID, a_Item->m_ItemCount, a_Item->m_ItemHealth);
}
-void cPacket_ItemData::AppendItem(char* a_Message, unsigned int &a_Iterator, short a_ItemID, char a_Quantity, short a_Damage)
+
+
+
+
+void cPacket_ItemData::AppendItem(AString & a_Data, short a_ItemID, char a_Quantity, short a_Damage)
{
-
- AppendShort ( (short) a_ItemID, a_Message, a_Iterator );
- if(a_ItemID > -1)
+ AppendShort(a_Data, (short) a_ItemID);
+ if (a_ItemID > -1)
{
- AppendByte ( a_Quantity, a_Message, a_Iterator );
- AppendShort ( a_Damage, a_Message, a_Iterator );
- if(cItem::IsEnchantable((ENUM_ITEM_ID) a_ItemID))
- AppendShort ( (short) -1, a_Message, a_Iterator );
+ AppendByte (a_Data, a_Quantity);
+ AppendShort(a_Data, a_Damage);
+
+ if (cItem::IsEnchantable((ENUM_ITEM_ID) a_ItemID))
+ {
+ // TODO: Implement enchantments
+ AppendShort(a_Data, (short) -1);
+ }
}
-} \ No newline at end of file
+}
+
+
+
+