1
0

Rewritten all packets to use buffers instead of direct sockets, for future cSocketThreads compatibility.

Moved data sending from cPacket into cSocket

git-svn-id: http://mc-server.googlecode.com/svn/trunk@240 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
madmaxoft@gmail.com
2012-02-07 20:49:52 +00:00
parent 16feb0924e
commit b7d524423c
109 changed files with 1896 additions and 1305 deletions

View File

@@ -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))
HANDLE_PACKET_READ(ReadByte , m_ItemCount, TotalBytes);
HANDLE_PACKET_READ(ReadShort, m_ItemUses, TotalBytes);
if (cItem::IsEnchantable((ENUM_ITEM_ID) m_ItemID))
{
HANDLE_PACKET_READ(ReadShort, m_EnchantNums, TotalBytes);
if ( m_EnchantNums > -1 )
{
if( !ReadShort(m_EnchantNums) ) return false;
if( m_EnchantNums > -1 )
{
//TODO Not implemented yet!
}
// TODO: Enchantment not implemented yet!
}
}
else
{
m_ItemCount = 0;
m_ItemUses = 0;
}
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);
}
}
}
}