Another handful of packets rewritten.
Also changed cItem::m_ItemID into m_ItemType of type short. Easier handling. m_ItemID kept for compatibility reasons (Lua-interface etc.) git-svn-id: http://mc-server.googlecode.com/svn/trunk@756 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
parent
f6ae6002c3
commit
eb3ed1aec1
@ -1,6 +1,6 @@
|
||||
/*
|
||||
** Lua binding: AllToLua
|
||||
** Generated automatically by tolua++-1.0.92 on 08/18/12 12:40:25.
|
||||
** Generated automatically by tolua++-1.0.92 on 08/19/12 13:48:32.
|
||||
*/
|
||||
|
||||
#ifndef __cplusplus
|
||||
@ -2890,7 +2890,7 @@ static int tolua_AllToLua_ItemCategory_IsPickaxe00(lua_State* tolua_S)
|
||||
else
|
||||
#endif
|
||||
{
|
||||
ENUM_ITEM_ID a_ItemID = ((ENUM_ITEM_ID) (int) tolua_tonumber(tolua_S,1,0));
|
||||
short a_ItemID = ((short) tolua_tonumber(tolua_S,1,0));
|
||||
{
|
||||
bool tolua_ret = (bool) ItemCategory::IsPickaxe(a_ItemID);
|
||||
tolua_pushboolean(tolua_S,(bool)tolua_ret);
|
||||
@ -2919,7 +2919,7 @@ static int tolua_AllToLua_ItemCategory_IsAxe00(lua_State* tolua_S)
|
||||
else
|
||||
#endif
|
||||
{
|
||||
ENUM_ITEM_ID a_ItemID = ((ENUM_ITEM_ID) (int) tolua_tonumber(tolua_S,1,0));
|
||||
short a_ItemID = ((short) tolua_tonumber(tolua_S,1,0));
|
||||
{
|
||||
bool tolua_ret = (bool) ItemCategory::IsAxe(a_ItemID);
|
||||
tolua_pushboolean(tolua_S,(bool)tolua_ret);
|
||||
@ -2948,7 +2948,7 @@ static int tolua_AllToLua_ItemCategory_IsSword00(lua_State* tolua_S)
|
||||
else
|
||||
#endif
|
||||
{
|
||||
ENUM_ITEM_ID a_ItemID = ((ENUM_ITEM_ID) (int) tolua_tonumber(tolua_S,1,0));
|
||||
short a_ItemID = ((short) tolua_tonumber(tolua_S,1,0));
|
||||
{
|
||||
bool tolua_ret = (bool) ItemCategory::IsSword(a_ItemID);
|
||||
tolua_pushboolean(tolua_S,(bool)tolua_ret);
|
||||
@ -2977,7 +2977,7 @@ static int tolua_AllToLua_ItemCategory_IsHoe00(lua_State* tolua_S)
|
||||
else
|
||||
#endif
|
||||
{
|
||||
ENUM_ITEM_ID a_ItemID = ((ENUM_ITEM_ID) (int) tolua_tonumber(tolua_S,1,0));
|
||||
short a_ItemID = ((short) tolua_tonumber(tolua_S,1,0));
|
||||
{
|
||||
bool tolua_ret = (bool) ItemCategory::IsHoe(a_ItemID);
|
||||
tolua_pushboolean(tolua_S,(bool)tolua_ret);
|
||||
@ -3006,7 +3006,7 @@ static int tolua_AllToLua_ItemCategory_IsShovel00(lua_State* tolua_S)
|
||||
else
|
||||
#endif
|
||||
{
|
||||
ENUM_ITEM_ID a_ItemID = ((ENUM_ITEM_ID) (int) tolua_tonumber(tolua_S,1,0));
|
||||
short a_ItemID = ((short) tolua_tonumber(tolua_S,1,0));
|
||||
{
|
||||
bool tolua_ret = (bool) ItemCategory::IsShovel(a_ItemID);
|
||||
tolua_pushboolean(tolua_S,(bool)tolua_ret);
|
||||
@ -3035,7 +3035,7 @@ static int tolua_AllToLua_ItemCategory_IsTool00(lua_State* tolua_S)
|
||||
else
|
||||
#endif
|
||||
{
|
||||
ENUM_ITEM_ID a_ItemID = ((ENUM_ITEM_ID) (int) tolua_tonumber(tolua_S,1,0));
|
||||
short a_ItemID = ((short) tolua_tonumber(tolua_S,1,0));
|
||||
{
|
||||
bool tolua_ret = (bool) ItemCategory::IsTool(a_ItemID);
|
||||
tolua_pushboolean(tolua_S,(bool)tolua_ret);
|
||||
@ -3064,7 +3064,7 @@ static int tolua_AllToLua_ItemCategory_IsHelmet00(lua_State* tolua_S)
|
||||
else
|
||||
#endif
|
||||
{
|
||||
ENUM_ITEM_ID a_ItemType = ((ENUM_ITEM_ID) (int) tolua_tonumber(tolua_S,1,0));
|
||||
short a_ItemType = ((short) tolua_tonumber(tolua_S,1,0));
|
||||
{
|
||||
bool tolua_ret = (bool) ItemCategory::IsHelmet(a_ItemType);
|
||||
tolua_pushboolean(tolua_S,(bool)tolua_ret);
|
||||
@ -3093,7 +3093,7 @@ static int tolua_AllToLua_ItemCategory_IsChestPlate00(lua_State* tolua_S)
|
||||
else
|
||||
#endif
|
||||
{
|
||||
ENUM_ITEM_ID a_ItemType = ((ENUM_ITEM_ID) (int) tolua_tonumber(tolua_S,1,0));
|
||||
short a_ItemType = ((short) tolua_tonumber(tolua_S,1,0));
|
||||
{
|
||||
bool tolua_ret = (bool) ItemCategory::IsChestPlate(a_ItemType);
|
||||
tolua_pushboolean(tolua_S,(bool)tolua_ret);
|
||||
@ -3122,7 +3122,7 @@ static int tolua_AllToLua_ItemCategory_IsLeggings00(lua_State* tolua_S)
|
||||
else
|
||||
#endif
|
||||
{
|
||||
ENUM_ITEM_ID a_ItemType = ((ENUM_ITEM_ID) (int) tolua_tonumber(tolua_S,1,0));
|
||||
short a_ItemType = ((short) tolua_tonumber(tolua_S,1,0));
|
||||
{
|
||||
bool tolua_ret = (bool) ItemCategory::IsLeggings(a_ItemType);
|
||||
tolua_pushboolean(tolua_S,(bool)tolua_ret);
|
||||
@ -3151,7 +3151,7 @@ static int tolua_AllToLua_ItemCategory_IsBoots00(lua_State* tolua_S)
|
||||
else
|
||||
#endif
|
||||
{
|
||||
ENUM_ITEM_ID a_ItemType = ((ENUM_ITEM_ID) (int) tolua_tonumber(tolua_S,1,0));
|
||||
short a_ItemType = ((short) tolua_tonumber(tolua_S,1,0));
|
||||
{
|
||||
bool tolua_ret = (bool) ItemCategory::IsBoots(a_ItemType);
|
||||
tolua_pushboolean(tolua_S,(bool)tolua_ret);
|
||||
@ -12661,11 +12661,11 @@ static int tolua_AllToLua_cItem_new00(lua_State* tolua_S)
|
||||
else
|
||||
#endif
|
||||
{
|
||||
ENUM_ITEM_ID a_ItemID = ((ENUM_ITEM_ID) (int) tolua_tonumber(tolua_S,2,E_ITEM_EMPTY));
|
||||
short a_ItemType = ((short) tolua_tonumber(tolua_S,2,E_ITEM_EMPTY));
|
||||
char a_ItemCount = ((char) tolua_tonumber(tolua_S,3,0));
|
||||
short a_ItemHealth = ((short) tolua_tonumber(tolua_S,4,0));
|
||||
{
|
||||
cItem* tolua_ret = (cItem*) Mtolua_new((cItem)(a_ItemID,a_ItemCount,a_ItemHealth));
|
||||
cItem* tolua_ret = (cItem*) Mtolua_new((cItem)(a_ItemType,a_ItemCount,a_ItemHealth));
|
||||
tolua_pushusertype(tolua_S,(void*)tolua_ret,"cItem");
|
||||
}
|
||||
}
|
||||
@ -12695,11 +12695,11 @@ static int tolua_AllToLua_cItem_new00_local(lua_State* tolua_S)
|
||||
else
|
||||
#endif
|
||||
{
|
||||
ENUM_ITEM_ID a_ItemID = ((ENUM_ITEM_ID) (int) tolua_tonumber(tolua_S,2,E_ITEM_EMPTY));
|
||||
short a_ItemType = ((short) tolua_tonumber(tolua_S,2,E_ITEM_EMPTY));
|
||||
char a_ItemCount = ((char) tolua_tonumber(tolua_S,3,0));
|
||||
short a_ItemHealth = ((short) tolua_tonumber(tolua_S,4,0));
|
||||
{
|
||||
cItem* tolua_ret = (cItem*) Mtolua_new((cItem)(a_ItemID,a_ItemCount,a_ItemHealth));
|
||||
cItem* tolua_ret = (cItem*) Mtolua_new((cItem)(a_ItemType,a_ItemCount,a_ItemHealth));
|
||||
tolua_pushusertype(tolua_S,(void*)tolua_ret,"cItem");
|
||||
tolua_register_gc(tolua_S,lua_gettop(tolua_S));
|
||||
}
|
||||
@ -13059,7 +13059,7 @@ static int tolua_set_cItem_m_ItemID(lua_State* tolua_S)
|
||||
if (!tolua_isnumber(tolua_S,2,0,&tolua_err))
|
||||
tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);
|
||||
#endif
|
||||
self->m_ItemID = ((ENUM_ITEM_ID) (int) tolua_tonumber(tolua_S,2,0))
|
||||
self->m_ItemID = ((short) tolua_tonumber(tolua_S,2,0))
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
@ -21282,6 +21282,7 @@ TOLUA_API int tolua_AllToLua_open (lua_State* tolua_S)
|
||||
tolua_constant(tolua_S,"E_PLAYERMOVELOOK",E_PLAYERMOVELOOK);
|
||||
tolua_constant(tolua_S,"E_BLOCK_DIG",E_BLOCK_DIG);
|
||||
tolua_constant(tolua_S,"E_BLOCK_PLACE",E_BLOCK_PLACE);
|
||||
tolua_constant(tolua_S,"E_SLOT_SELECTED",E_SLOT_SELECTED);
|
||||
tolua_constant(tolua_S,"E_ITEM_SWITCH",E_ITEM_SWITCH);
|
||||
tolua_constant(tolua_S,"E_ADD_TO_INV",E_ADD_TO_INV);
|
||||
tolua_constant(tolua_S,"E_ANIMATION",E_ANIMATION);
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
** Lua binding: AllToLua
|
||||
** Generated automatically by tolua++-1.0.92 on 08/18/12 12:40:25.
|
||||
** Generated automatically by tolua++-1.0.92 on 08/19/12 13:48:33.
|
||||
*/
|
||||
|
||||
/* Exported function */
|
||||
|
@ -222,7 +222,7 @@ inline float GetSpecialSignf( float a_Val )
|
||||
//tolua_begin
|
||||
namespace ItemCategory
|
||||
{
|
||||
inline bool IsPickaxe(ENUM_ITEM_ID a_ItemID)
|
||||
inline bool IsPickaxe(short a_ItemID)
|
||||
{
|
||||
return (a_ItemID == E_ITEM_WOODEN_PICKAXE)
|
||||
|| (a_ItemID == E_ITEM_STONE_PICKAXE)
|
||||
@ -233,7 +233,7 @@ namespace ItemCategory
|
||||
|
||||
|
||||
|
||||
inline bool IsAxe(ENUM_ITEM_ID a_ItemID)
|
||||
inline bool IsAxe(short a_ItemID)
|
||||
{
|
||||
return (a_ItemID == E_ITEM_WOODEN_AXE)
|
||||
|| (a_ItemID == E_ITEM_STONE_AXE)
|
||||
@ -244,7 +244,7 @@ namespace ItemCategory
|
||||
|
||||
|
||||
|
||||
inline bool IsSword(ENUM_ITEM_ID a_ItemID)
|
||||
inline bool IsSword(short a_ItemID)
|
||||
{
|
||||
return (a_ItemID == E_ITEM_WOODEN_SWORD)
|
||||
|| (a_ItemID == E_ITEM_STONE_SWORD)
|
||||
@ -255,7 +255,7 @@ namespace ItemCategory
|
||||
|
||||
|
||||
|
||||
inline bool IsHoe(ENUM_ITEM_ID a_ItemID)
|
||||
inline bool IsHoe(short a_ItemID)
|
||||
{
|
||||
return (a_ItemID == E_ITEM_WOODEN_HOE)
|
||||
|| (a_ItemID == E_ITEM_STONE_HOE)
|
||||
@ -266,7 +266,7 @@ namespace ItemCategory
|
||||
|
||||
|
||||
|
||||
inline bool IsShovel(ENUM_ITEM_ID a_ItemID)
|
||||
inline bool IsShovel(short a_ItemID)
|
||||
{
|
||||
return (a_ItemID == E_ITEM_WOODEN_SHOVEL)
|
||||
|| (a_ItemID == E_ITEM_STONE_SHOVEL)
|
||||
@ -277,7 +277,7 @@ namespace ItemCategory
|
||||
|
||||
|
||||
|
||||
inline bool IsTool(ENUM_ITEM_ID a_ItemID)
|
||||
inline bool IsTool(short a_ItemID)
|
||||
{
|
||||
return IsPickaxe( a_ItemID )
|
||||
|| IsAxe ( a_ItemID )
|
||||
@ -288,7 +288,7 @@ namespace ItemCategory
|
||||
|
||||
|
||||
|
||||
inline bool IsHelmet(ENUM_ITEM_ID a_ItemType)
|
||||
inline bool IsHelmet(short a_ItemType)
|
||||
{
|
||||
return (
|
||||
(a_ItemType == E_ITEM_LEATHER_CAP) ||
|
||||
@ -301,7 +301,7 @@ namespace ItemCategory
|
||||
|
||||
|
||||
|
||||
inline bool IsChestPlate(ENUM_ITEM_ID a_ItemType)
|
||||
inline bool IsChestPlate(short a_ItemType)
|
||||
{
|
||||
return (
|
||||
(a_ItemType == E_ITEM_LEATHER_TUNIC) ||
|
||||
@ -314,7 +314,7 @@ namespace ItemCategory
|
||||
|
||||
|
||||
|
||||
inline bool IsLeggings(ENUM_ITEM_ID a_ItemType)
|
||||
inline bool IsLeggings(short a_ItemType)
|
||||
{
|
||||
return (
|
||||
(a_ItemType == E_ITEM_LEATHER_PANTS) ||
|
||||
@ -327,7 +327,7 @@ namespace ItemCategory
|
||||
|
||||
|
||||
|
||||
inline bool IsBoots(ENUM_ITEM_ID a_ItemType)
|
||||
inline bool IsBoots(short a_ItemType)
|
||||
{
|
||||
return (
|
||||
(a_ItemType == E_ITEM_LEATHER_BOOTS) ||
|
||||
|
@ -23,8 +23,9 @@ enum ENUM_PACKET_ID
|
||||
E_PLAYERMOVELOOK = 0x0d,
|
||||
E_BLOCK_DIG = 0x0e,
|
||||
E_BLOCK_PLACE = 0x0f,
|
||||
E_ITEM_SWITCH = 0x10,
|
||||
E_ADD_TO_INV = 0x11, // TODO: Sure this is not Use Bed??
|
||||
E_SLOT_SELECTED = 0x10,
|
||||
E_ITEM_SWITCH = 0x10, // OBSOLETE, use E_SLOT_SELECTED instead
|
||||
E_ADD_TO_INV = 0x11, // TODO: Sure this is not Use Bed??
|
||||
E_ANIMATION = 0x12,
|
||||
E_PACKET_13 = 0x13,
|
||||
E_NAMED_ENTITY_SPAWN = 0x14,
|
||||
|
@ -1755,6 +1755,38 @@ void cChunk::Broadcast( const cPacket * a_Packet, cClientHandle* a_Exclude)
|
||||
|
||||
|
||||
|
||||
void cChunk::BroadcastPlayerAnimation(const cPlayer & a_Player, char a_Animation, const cClientHandle * a_Exclude)
|
||||
{
|
||||
for (cClientHandleList::const_iterator itr = m_LoadedByClient.begin(); itr != m_LoadedByClient.end(); ++itr )
|
||||
{
|
||||
if (*itr == a_Exclude)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
(*itr)->SendPlayerAnimation(a_Player, a_Animation);
|
||||
} // for itr - LoadedByClient[]
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cChunk::BroadcastEntityEquipment(const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item, const cClientHandle * a_Exclude)
|
||||
{
|
||||
for (cClientHandleList::const_iterator itr = m_LoadedByClient.begin(); itr != m_LoadedByClient.end(); ++itr )
|
||||
{
|
||||
if (*itr == a_Exclude)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
(*itr)->SendEntityEquipment(a_Entity, a_SlotNum, a_Item);
|
||||
} // for itr - LoadedByClient[]
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cChunk::PositionToWorldPosition(int a_ChunkX, int a_ChunkY, int a_ChunkZ, int & a_X, int & a_Y, int & a_Z)
|
||||
{
|
||||
a_Y = a_ChunkY;
|
||||
|
@ -174,6 +174,9 @@ public:
|
||||
// Broadcasts to all clients that have loaded this chunk
|
||||
void Broadcast( const cPacket & a_Packet, cClientHandle * a_Exclude = NULL) {Broadcast(&a_Packet, a_Exclude); }
|
||||
void Broadcast( const cPacket * a_Packet, cClientHandle * a_Exclude = NULL);
|
||||
|
||||
void BroadcastPlayerAnimation(const cPlayer & a_Player, char a_Animation, const cClientHandle * a_Exclude = NULL);
|
||||
void BroadcastEntityEquipment(const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item, const cClientHandle * a_Exclude = NULL);
|
||||
|
||||
void PositionToWorldPosition(int a_ChunkX, int a_ChunkY, int a_ChunkZ, int & a_X, int & a_Y, int & a_Z);
|
||||
Vector3i PositionToWorldPosition( const Vector3i & a_InChunkPos ) { return PositionToWorldPosition( a_InChunkPos.x, a_InChunkPos.y, a_InChunkPos.z ); }
|
||||
|
@ -262,6 +262,38 @@ void cChunkMap::BroadcastToChunkOfBlock(int a_X, int a_Y, int a_Z, const cPacket
|
||||
|
||||
|
||||
|
||||
void cChunkMap::BroadcastPlayerAnimation(const cPlayer & a_Player, char a_Animation, const cClientHandle * a_Exclude)
|
||||
{
|
||||
cCSLock Lock(m_CSLayers);
|
||||
cChunkPtr Chunk = GetChunkNoGen(a_Player.GetChunkX(), a_Player.GetChunkY(), a_Player.GetChunkZ());
|
||||
if (Chunk == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// It's perfectly legal to broadcast packets even to invalid chunks!
|
||||
Chunk->BroadcastPlayerAnimation(a_Player, a_Animation, a_Exclude);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cChunkMap::BroadcastEntityEquipment(const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item, const cClientHandle * a_Exclude)
|
||||
{
|
||||
cCSLock Lock(m_CSLayers);
|
||||
cChunkPtr Chunk = GetChunkNoGen(a_Entity.GetChunkX(), a_Entity.GetChunkY(), a_Entity.GetChunkZ());
|
||||
if (Chunk == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// It's perfectly legal to broadcast packets even to invalid chunks!
|
||||
Chunk->BroadcastEntityEquipment(a_Entity, a_SlotNum, a_Item, a_Exclude);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cChunkMap::UseBlockEntity(cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ)
|
||||
{
|
||||
// a_Player rclked block entity at the coords specified, handle it
|
||||
|
@ -47,6 +47,12 @@ public:
|
||||
/// Broadcasts a_Packet to all clients in the chunk where block [x, y, z] is, except to client a_Exclude
|
||||
void BroadcastToChunkOfBlock(int a_X, int a_Y, int a_Z, const cPacket * a_Packet, cClientHandle * a_Exclude = NULL);
|
||||
|
||||
/// Broadcasts an a_Player's animation to all clients in the chunk where a_Player is
|
||||
void BroadcastPlayerAnimation(const cPlayer & a_Player, char a_Animation, const cClientHandle * a_Exclude = NULL);
|
||||
|
||||
/// Broadcasts an entity equipment change to all clients in the chunk where a_Entity is
|
||||
void BroadcastEntityEquipment(const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item, const cClientHandle * a_Exclude = NULL);
|
||||
|
||||
/// a_Player rclked block entity at the coords specified, handle it
|
||||
void UseBlockEntity(cPlayer * a_Player, int a_X, int a_Y, int a_Z);
|
||||
|
||||
|
@ -45,7 +45,6 @@
|
||||
#include "packets/cPacket_RelativeEntityMoveLook.h"
|
||||
#include "packets/cPacket_Chat.h"
|
||||
#include "packets/cPacket_Login.h"
|
||||
#include "packets/cPacket_WindowClick.h"
|
||||
#include "packets/cPacket_TimeUpdate.h"
|
||||
#include "packets/cPacket_BlockDig.h"
|
||||
#include "packets/cPacket_Handshake.h"
|
||||
@ -59,7 +58,10 @@
|
||||
#include "packets/cPacket_CreativeInventoryAction.h"
|
||||
#include "packets/cPacket_NewInvalidState.h"
|
||||
#include "packets/cPacket_UseEntity.h"
|
||||
#include "packets/cPacket_WindowClick.h"
|
||||
#include "packets/cPacket_WindowClose.h"
|
||||
#include "packets/cPacket_WindowOpen.h"
|
||||
#include "packets/cPacket_WholeInventory.h"
|
||||
#include "packets/cPacket_13.h"
|
||||
#include "packets/cPacket_UpdateSign.h"
|
||||
#include "packets/cPacket_Ping.h"
|
||||
@ -640,11 +642,36 @@ void cClientHandle::HandlePacket(cPacket * a_Packet)
|
||||
HandleChat(ch->m_Message);
|
||||
break;
|
||||
}
|
||||
case E_PLAYERLOOK: HandlePlayerLook (reinterpret_cast<cPacket_PlayerLook *> (a_Packet)); break;
|
||||
case E_PLAYERMOVELOOK: HandlePlayerMoveLook (reinterpret_cast<cPacket_PlayerMoveLook *> (a_Packet)); break;
|
||||
case E_ANIMATION: HandleAnimation (reinterpret_cast<cPacket_ArmAnim *> (a_Packet)); break;
|
||||
case E_ITEM_SWITCH: HandleItemSwitch (reinterpret_cast<cPacket_ItemSwitch *> (a_Packet)); break;
|
||||
case E_WINDOW_CLOSE: HandleWindowClose (reinterpret_cast<cPacket_WindowClose *> (a_Packet)); break;
|
||||
case E_PLAYERLOOK:
|
||||
{
|
||||
cPacket_PlayerLook * pl = reinterpret_cast<cPacket_PlayerLook *>(a_Packet);
|
||||
HandlePlayerLook(pl->m_Rotation, pl->m_Pitch, pl->m_IsOnGround);
|
||||
break;
|
||||
}
|
||||
case E_PLAYERMOVELOOK:
|
||||
{
|
||||
cPacket_PlayerMoveLook * pml = reinterpret_cast<cPacket_PlayerMoveLook *>(a_Packet);
|
||||
HandlePlayerMoveLook(pml->m_PosX, pml->m_PosY, pml->m_PosZ, pml->m_Stance, pml->m_Rotation, pml->m_Pitch, pml->m_IsOnGround);
|
||||
break;
|
||||
}
|
||||
case E_ANIMATION:
|
||||
{
|
||||
cPacket_ArmAnim * aa = reinterpret_cast<cPacket_ArmAnim *>(a_Packet);
|
||||
HandleAnimation(aa->m_Animation);
|
||||
break;
|
||||
}
|
||||
case E_SLOT_SELECTED:
|
||||
{
|
||||
cPacket_ItemSwitch * isw = reinterpret_cast<cPacket_ItemSwitch *>(a_Packet);
|
||||
HandleSlotSelected(isw->m_SlotNum);
|
||||
break;
|
||||
}
|
||||
case E_WINDOW_CLOSE:
|
||||
{
|
||||
cPacket_WindowClose * wc = reinterpret_cast<cPacket_WindowClose *>(a_Packet);
|
||||
HandleWindowClose(wc->m_WindowID);
|
||||
break;
|
||||
}
|
||||
case E_WINDOW_CLICK:
|
||||
{
|
||||
cPacket_WindowClick * wc = reinterpret_cast<cPacket_WindowClick *>(a_Packet);
|
||||
@ -910,7 +937,7 @@ void cClientHandle::HandleBlockPlace(int a_BlockX, int a_BlockY, int a_BlockZ, c
|
||||
|
||||
cItem & Equipped = m_Player->GetInventory().GetEquippedItem();
|
||||
|
||||
if ((Equipped.m_ItemID != a_HeldItem.m_ItemType)) // Not valid
|
||||
if ((Equipped.m_ItemType != a_HeldItem.m_ItemType)) // Not valid
|
||||
{
|
||||
LOGWARN("Player %s tried to place a block that was not equipped (exp %d, got %d)",
|
||||
m_Username.c_str(), Equipped.m_ItemType, a_HeldItem.m_ItemType
|
||||
@ -1045,11 +1072,11 @@ void cClientHandle::HandleChat(const AString & a_Message)
|
||||
|
||||
|
||||
|
||||
void cClientHandle::HandlePlayerLook(cPacket_PlayerLook * a_Packet)
|
||||
void cClientHandle::HandlePlayerLook(float a_Rotation, float a_Pitch, bool a_IsOnGround)
|
||||
{
|
||||
m_Player->SetRotation (a_Packet->m_Rotation);
|
||||
m_Player->SetPitch (a_Packet->m_Pitch);
|
||||
m_Player->SetTouchGround(a_Packet->m_bFlying);
|
||||
m_Player->SetRotation (a_Rotation);
|
||||
m_Player->SetPitch (a_Pitch);
|
||||
m_Player->SetTouchGround(a_IsOnGround);
|
||||
m_Player->WrapRotation();
|
||||
}
|
||||
|
||||
@ -1057,13 +1084,13 @@ void cClientHandle::HandlePlayerLook(cPacket_PlayerLook * a_Packet)
|
||||
|
||||
|
||||
|
||||
void cClientHandle::HandlePlayerMoveLook(cPacket_PlayerMoveLook * a_Packet)
|
||||
void cClientHandle::HandlePlayerMoveLook(double a_PosX, double a_PosY, double a_PosZ, double a_Stance, float a_Rotation, float a_Pitch, bool a_IsOnGround)
|
||||
{
|
||||
m_Player->MoveTo(Vector3d(a_Packet->m_PosX, a_Packet->m_PosY, a_Packet->m_PosZ));
|
||||
m_Player->SetStance (a_Packet->m_Stance);
|
||||
m_Player->SetTouchGround(a_Packet->m_bFlying);
|
||||
m_Player->SetRotation (a_Packet->m_Rotation);
|
||||
m_Player->SetPitch (a_Packet->m_Pitch);
|
||||
m_Player->MoveTo(Vector3d(a_PosX, a_PosY, a_PosZ));
|
||||
m_Player->SetStance (a_Stance);
|
||||
m_Player->SetTouchGround(a_IsOnGround);
|
||||
m_Player->SetRotation (a_Rotation);
|
||||
m_Player->SetPitch (a_Pitch);
|
||||
m_Player->WrapRotation();
|
||||
}
|
||||
|
||||
@ -1071,41 +1098,35 @@ void cClientHandle::HandlePlayerMoveLook(cPacket_PlayerMoveLook * a_Packet)
|
||||
|
||||
|
||||
|
||||
void cClientHandle::HandleAnimation(cPacket_ArmAnim * a_Packet)
|
||||
void cClientHandle::HandleAnimation(char a_Animation)
|
||||
{
|
||||
a_Packet->m_EntityID = m_Player->GetUniqueID();
|
||||
cRoot::Get()->GetServer()->Broadcast(*a_Packet, this);
|
||||
m_Player->GetWorld()->BroadcastPlayerAnimation(*m_Player, a_Animation, this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cClientHandle::HandleItemSwitch(cPacket_ItemSwitch * a_Packet)
|
||||
void cClientHandle::HandleSlotSelected(short a_SlotNum)
|
||||
{
|
||||
m_Player->GetInventory().SetEquippedSlot(a_Packet->m_SlotNum);
|
||||
|
||||
cPacket_EntityEquipment Equipment;
|
||||
Equipment.m_ItemID = (short)m_Player->GetInventory().GetEquippedItem().m_ItemID;
|
||||
Equipment.m_Slot = 0;
|
||||
Equipment.m_UniqueID = m_Player->GetUniqueID();
|
||||
cRoot::Get()->GetServer()->Broadcast(Equipment, this);
|
||||
m_Player->GetInventory().SetEquippedSlot(a_SlotNum);
|
||||
m_Player->GetWorld()->BroadcastEntityEquipment(*m_Player, 0, m_Player->GetInventory().GetEquippedItem(), this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cClientHandle::HandleWindowClose(cPacket_WindowClose * a_Packet)
|
||||
void cClientHandle::HandleWindowClose(char a_WindowID)
|
||||
{
|
||||
m_Player->CloseWindow(a_Packet->m_Close);
|
||||
m_Player->CloseWindow(a_WindowID);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cClientHandle::HandleWindowClick(int a_WindowID, short a_SlotNum, bool a_IsRightClick, bool a_IsShiftPressed, const cItem & a_HeldItem)
|
||||
void cClientHandle::HandleWindowClick(char a_WindowID, short a_SlotNum, bool a_IsRightClick, bool a_IsShiftPressed, const cItem & a_HeldItem)
|
||||
{
|
||||
if (a_WindowID == 0)
|
||||
{
|
||||
@ -1451,6 +1472,77 @@ void cClientHandle::SendChat(const AString & a_Message)
|
||||
|
||||
|
||||
|
||||
void cClientHandle::SendPlayerAnimation(const cPlayer & a_Player, char a_Animation)
|
||||
{
|
||||
cPacket_ArmAnim Anim;
|
||||
Anim.m_EntityID = a_Player.GetUniqueID();
|
||||
Anim.m_Animation = a_Animation;
|
||||
Send(Anim);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cClientHandle::SendEntityEquipment(const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item)
|
||||
{
|
||||
cPacket_EntityEquipment ee;
|
||||
ee.m_UniqueID = a_Entity.GetUniqueID();
|
||||
ee.m_SlotNum = a_SlotNum;
|
||||
ee.m_ItemType = a_Item.m_ItemType;
|
||||
ee.m_ItemDamage = a_Item.m_ItemDamage;
|
||||
Send(ee);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cClientHandle::SendWindowOpen(char a_WindowID, char a_WindowType, const AString & a_WindowTitle, char a_NumSlots)
|
||||
{
|
||||
cPacket_WindowOpen WindowOpen;
|
||||
WindowOpen.m_WindowID = a_WindowID;
|
||||
WindowOpen.m_InventoryType = a_WindowType;
|
||||
WindowOpen.m_WindowTitle = a_WindowTitle;
|
||||
WindowOpen.m_NumSlots = a_NumSlots;
|
||||
Send(WindowOpen);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cClientHandle::SendWindowClose(char a_WindowID)
|
||||
{
|
||||
cPacket_WindowClose wc;
|
||||
wc.m_WindowID = a_WindowID;
|
||||
Send(wc);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cClientHandle::SendWholeInventory(const cInventory & a_Inventory)
|
||||
{
|
||||
cPacket_WholeInventory wi(a_Inventory);
|
||||
Send(wi);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cClientHandle::SendWholeInventory(const cWindow & a_Window)
|
||||
{
|
||||
cPacket_WholeInventory wi(a_Window);
|
||||
Send(wi);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cClientHandle::CheckIfWorldDownloaded(void)
|
||||
{
|
||||
if (m_State != csDownloadingWorld)
|
||||
|
@ -54,6 +54,8 @@
|
||||
|
||||
class cPlayer;
|
||||
class cRedstone;
|
||||
class cInventory;
|
||||
class cWindow;
|
||||
|
||||
|
||||
|
||||
@ -106,6 +108,12 @@ public:
|
||||
void SendHandshake (const AString & a_ServerName);
|
||||
void SendInventorySlot(int a_WindowID, short a_SlotNum, const cItem & a_Item);
|
||||
void SendChat(const AString & a_Message);
|
||||
void SendPlayerAnimation(const cPlayer & a_Player, char a_Animation);
|
||||
void SendEntityEquipment(const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item);
|
||||
void SendWindowOpen(char a_WindowID, char a_WindowType, const AString & a_WindowTitle, char a_NumSlots);
|
||||
void SendWindowClose(char a_WindowID);
|
||||
void SendWholeInventory(const cInventory & a_Inventory);
|
||||
void SendWholeInventory(const cWindow & a_Window);
|
||||
|
||||
const AString & GetUsername(void) const; //tolua_export
|
||||
|
||||
@ -198,12 +206,12 @@ private:
|
||||
void HandleBlockDig (int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, char a_Status);
|
||||
void HandleBlockPlace (int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, const cItem & a_HeldItem);
|
||||
void HandleChat (const AString & a_Message);
|
||||
void HandlePlayerLook (cPacket_PlayerLook * a_Packet);
|
||||
void HandlePlayerMoveLook (cPacket_PlayerMoveLook * a_Packet); // While m_bPositionConfirmed (normal gameplay)
|
||||
void HandleAnimation (cPacket_ArmAnim * a_Packet);
|
||||
void HandleItemSwitch (cPacket_ItemSwitch * a_Packet);
|
||||
void HandleWindowClose (cPacket_WindowClose * a_Packet);
|
||||
void HandleWindowClick (int a_WindowID, short a_SlotNum, bool a_IsRightClick, bool a_IsShiftPressed, const cItem & a_HeldItem);
|
||||
void HandlePlayerLook (float a_Rotation, float a_Pitch, bool a_IsOnGround);
|
||||
void HandlePlayerMoveLook (double a_PosX, double a_PosY, double a_PosZ, double a_Stance, float a_Rotation, float a_Pitch, bool a_IsOnGround); // While m_bPositionConfirmed (normal gameplay)
|
||||
void HandleAnimation (char a_Animation);
|
||||
void HandleSlotSelected (short a_SlotNum);
|
||||
void HandleWindowClose (char a_WindowID);
|
||||
void HandleWindowClick (char a_WindowID, short a_SlotNum, bool a_IsRightClick, bool a_IsShiftPressed, const cItem & a_HeldItem);
|
||||
void HandleUpdateSign (cPacket_UpdateSign * a_Packet);
|
||||
void HandleUseEntity (cPacket_UseEntity * a_Packet);
|
||||
void HandleRespawn (void);
|
||||
|
@ -256,8 +256,7 @@ cItem & cInventory::GetEquippedItem()
|
||||
|
||||
void cInventory::SendWholeInventory(cClientHandle * a_Client)
|
||||
{
|
||||
cPacket_WholeInventory Inventory(this);
|
||||
a_Client->Send(Inventory);
|
||||
a_Client->SendWholeInventory(*this);
|
||||
}
|
||||
|
||||
|
||||
@ -314,7 +313,7 @@ void cInventory::SendSlot( int a_SlotNum )
|
||||
|
||||
|
||||
|
||||
int cInventory::HowManyCanFit(ENUM_ITEM_ID a_ItemType, short a_ItemDamage, int a_BeginSlot, int a_EndSlot)
|
||||
int cInventory::HowManyCanFit(short a_ItemType, short a_ItemDamage, int a_BeginSlot, int a_EndSlot)
|
||||
{
|
||||
int res = 0;
|
||||
for (int i = a_BeginSlot; i <= a_EndSlot; i++)
|
||||
@ -336,7 +335,7 @@ int cInventory::HowManyCanFit(ENUM_ITEM_ID a_ItemType, short a_ItemDamage, int a
|
||||
|
||||
|
||||
|
||||
int cInventory::MoveItem(ENUM_ITEM_ID a_ItemType, short a_ItemDamage, int a_Count, int a_BeginSlot, int a_EndSlot)
|
||||
int cInventory::MoveItem(short a_ItemType, short a_ItemDamage, int a_Count, int a_BeginSlot, int a_EndSlot)
|
||||
{
|
||||
int res = 0;
|
||||
for (int i = a_BeginSlot; i <= a_EndSlot; i++)
|
||||
|
@ -44,7 +44,7 @@ public:
|
||||
void SendWholeInventoryToAll(void);
|
||||
|
||||
cItem* GetSlot( int a_SlotNum ); //tolua_export
|
||||
cItem* GetSlots() { return m_Slots; }
|
||||
cItem* GetSlots() const { return m_Slots; }
|
||||
cItem* GetFromHotBar( int a_SlotNum ); //tolua_export
|
||||
|
||||
cItem & GetEquippedItem(); //tolua_export
|
||||
@ -56,10 +56,10 @@ public:
|
||||
void SendSlot( int a_SlotNum ); //tolua_export
|
||||
|
||||
/// Returns how many items of the specified type would fit into the slot range specified
|
||||
int HowManyCanFit(ENUM_ITEM_ID a_ItemType, short a_ItemDamage, int a_BeginSlot, int a_EndSlot);
|
||||
int HowManyCanFit(short a_ItemType, short a_ItemDamage, int a_BeginSlot, int a_EndSlot);
|
||||
|
||||
/// Moves items, fitting them into the slot range specified, up to a_Count items. Returns the number of items moved
|
||||
int MoveItem(ENUM_ITEM_ID a_ItemType, short a_ItemDamage, int a_Count, int a_BeginSlot, int a_EndSlot);
|
||||
int MoveItem(short a_ItemType, short a_ItemDamage, int a_Count, int a_BeginSlot, int a_EndSlot);
|
||||
|
||||
static const unsigned int c_NumSlots = 45;
|
||||
static const unsigned int c_MainSlots = 27;
|
||||
|
@ -16,25 +16,28 @@ namespace Json
|
||||
class cItem
|
||||
{
|
||||
public:
|
||||
cItem( ENUM_ITEM_ID a_ItemID = E_ITEM_EMPTY, char a_ItemCount = 0, short a_ItemHealth = 0 )
|
||||
: m_ItemID ( a_ItemID )
|
||||
, m_ItemCount ( a_ItemCount )
|
||||
, m_ItemHealth ( a_ItemHealth )
|
||||
cItem(short a_ItemType = E_ITEM_EMPTY, char a_ItemCount = 0, short a_ItemHealth = 0)
|
||||
: m_ItemType (a_ItemType)
|
||||
, m_ItemCount (a_ItemCount)
|
||||
, m_ItemHealth(a_ItemHealth)
|
||||
{
|
||||
if(!IsValidItem( m_ItemID ) ) m_ItemID = E_ITEM_EMPTY;
|
||||
if (!IsValidItem( m_ItemID ) ) m_ItemID = E_ITEM_EMPTY;
|
||||
}
|
||||
|
||||
void Empty()
|
||||
{
|
||||
m_ItemID = E_ITEM_EMPTY;
|
||||
m_ItemCount = 0;
|
||||
m_ItemHealth = 0;
|
||||
}
|
||||
|
||||
void Clear(void)
|
||||
{
|
||||
m_ItemID = E_ITEM_EMPTY;
|
||||
m_ItemCount = 0;
|
||||
m_ItemHealth = 0;
|
||||
}
|
||||
|
||||
bool IsEmpty(void) const
|
||||
{
|
||||
return (m_ItemID <= 0 || m_ItemCount <= 0);
|
||||
@ -120,8 +123,8 @@ public:
|
||||
union
|
||||
{
|
||||
// tolua_begin
|
||||
ENUM_ITEM_ID m_ItemID; // OBSOLETE, use m_ItemType instead
|
||||
short m_ItemType;
|
||||
short m_ItemID; // OBSOLETE, use m_ItemType instead
|
||||
short m_ItemType;
|
||||
// tolua_end
|
||||
} ;
|
||||
char m_ItemCount; // tolua_export
|
||||
|
@ -10,10 +10,6 @@
|
||||
#include "cWindowOwner.h"
|
||||
#include "items/Item.h"
|
||||
|
||||
#include "packets/cPacket_WholeInventory.h"
|
||||
#include "packets/cPacket_WindowOpen.h"
|
||||
#include "packets/cPacket_WindowClose.h"
|
||||
|
||||
|
||||
|
||||
|
||||
@ -239,12 +235,7 @@ void cWindow::Open( cPlayer & a_Player )
|
||||
m_OpenedBy.push_back( &a_Player );
|
||||
}
|
||||
|
||||
cPacket_WindowOpen WindowOpen;
|
||||
WindowOpen.m_WindowID = (char)m_WindowID;
|
||||
WindowOpen.m_InventoryType = (char)m_WindowType;
|
||||
WindowOpen.m_WindowTitle = m_WindowTitle;
|
||||
WindowOpen.m_NumSlots = (char)m_NumSlots;
|
||||
a_Player.GetClientHandle()->Send( WindowOpen );
|
||||
a_Player.GetClientHandle()->SendWindowOpen(m_WindowID, m_WindowType, m_WindowTitle, m_NumSlots);
|
||||
}
|
||||
|
||||
|
||||
@ -260,12 +251,10 @@ void cWindow::Close( cPlayer & a_Player )
|
||||
a_Player.TossItem(true, m_DraggingItem->m_ItemCount);
|
||||
}
|
||||
|
||||
cPacket_WindowClose WindowClose;
|
||||
WindowClose.m_Close = (char)m_WindowID;
|
||||
cClientHandle * ClientHandle = a_Player.GetClientHandle();
|
||||
if (ClientHandle != NULL)
|
||||
{
|
||||
ClientHandle->Send(WindowClose);
|
||||
ClientHandle->SendWindowClose(m_WindowID);
|
||||
}
|
||||
|
||||
{
|
||||
@ -349,10 +338,9 @@ void cWindow::Destroy()
|
||||
|
||||
|
||||
|
||||
void cWindow::SendWholeWindow( cClientHandle* a_Client )
|
||||
void cWindow::SendWholeWindow(cClientHandle * a_Client )
|
||||
{
|
||||
cPacket_WholeInventory Inventory( this );
|
||||
a_Client->Send( Inventory );
|
||||
a_Client->SendWholeInventory(*this);
|
||||
}
|
||||
|
||||
|
||||
|
@ -46,11 +46,11 @@ public:
|
||||
cWindow(cWindowOwner * a_Owner, bool a_bInventoryVisible, WindowType a_WindowType, int a_WindowID);
|
||||
~cWindow();
|
||||
|
||||
int GetWindowID() { return m_WindowID; }
|
||||
int GetWindowID(void) const { return m_WindowID; }
|
||||
int GetWindowType(void) const { return m_WindowType; }
|
||||
|
||||
cItem* GetSlots() { return m_Slots; }
|
||||
int GetNumSlots() { return m_NumSlots; }
|
||||
cItem* GetSlots(void) const { return m_Slots; }
|
||||
int GetNumSlots(void) const { return m_NumSlots; }
|
||||
|
||||
cItem* GetSlot( int a_Slot );
|
||||
|
||||
|
@ -1282,6 +1282,24 @@ void cWorld::BroadcastChat(const AString & a_Message, const cClientHandle * a_Ex
|
||||
|
||||
|
||||
|
||||
void cWorld::BroadcastPlayerAnimation(const cPlayer & a_Player, char a_Animation, const cClientHandle * a_Exclude)
|
||||
{
|
||||
m_ChunkMap->BroadcastPlayerAnimation(a_Player, a_Animation, a_Exclude);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cWorld::BroadcastEntityEquipment(const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item, const cClientHandle * a_Exclude)
|
||||
{
|
||||
m_ChunkMap->BroadcastEntityEquipment(a_Entity, a_SlotNum, a_Item, a_Exclude);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cWorld::MarkChunkDirty (int a_ChunkX, int a_ChunkY, int a_ChunkZ)
|
||||
{
|
||||
m_ChunkMap->MarkChunkDirty (a_ChunkX, a_ChunkY, a_ChunkZ);
|
||||
|
@ -79,6 +79,8 @@ public:
|
||||
void BroadcastToChunkOfBlock(int a_X, int a_Y, int a_Z, cPacket * a_Packet, cClientHandle * a_Exclude = NULL);
|
||||
|
||||
void BroadcastChat(const AString & a_Message, const cClientHandle * a_Exclude = NULL);
|
||||
void BroadcastPlayerAnimation(const cPlayer & a_Player, char a_Animation, const cClientHandle * a_Exclude = NULL);
|
||||
void BroadcastEntityEquipment(const cEntity & a_Entity, short a_SlotNum, const cItem & a_Item, const cClientHandle * a_Exclude = NULL);
|
||||
|
||||
void MarkChunkDirty (int a_ChunkX, int a_ChunkY, int a_ChunkZ);
|
||||
void MarkChunkSaving(int a_ChunkX, int a_ChunkY, int a_ChunkZ);
|
||||
|
@ -9,11 +9,11 @@
|
||||
|
||||
cPacket_EntityEquipment::cPacket_EntityEquipment( const cPacket_EntityEquipment & a_Copy )
|
||||
{
|
||||
m_PacketID = E_ENTITY_EQUIPMENT;
|
||||
m_UniqueID = a_Copy.m_UniqueID;
|
||||
m_Slot = a_Copy.m_Slot;
|
||||
m_ItemID = a_Copy.m_ItemID;
|
||||
m_Short = 0;
|
||||
m_PacketID = E_ENTITY_EQUIPMENT;
|
||||
m_UniqueID = a_Copy.m_UniqueID;
|
||||
m_SlotNum = a_Copy.m_SlotNum;
|
||||
m_ItemType = a_Copy.m_ItemType;
|
||||
m_ItemDamage = a_Copy.m_ItemDamage;
|
||||
}
|
||||
|
||||
|
||||
@ -23,10 +23,10 @@ cPacket_EntityEquipment::cPacket_EntityEquipment( const cPacket_EntityEquipment
|
||||
int cPacket_EntityEquipment::Parse(cByteBuffer & a_Buffer)
|
||||
{
|
||||
int TotalBytes = 0;
|
||||
HANDLE_PACKET_READ(ReadBEInt, m_UniqueID, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEShort, m_Slot, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEShort, m_ItemID, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEShort, m_Short, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEInt, m_UniqueID, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEShort, m_SlotNum, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEShort, m_ItemType, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEShort, m_ItemDamage, TotalBytes);
|
||||
return TotalBytes;
|
||||
}
|
||||
|
||||
@ -38,9 +38,9 @@ void cPacket_EntityEquipment::Serialize(AString & a_Data) const
|
||||
{
|
||||
AppendByte (a_Data, m_PacketID);
|
||||
AppendInteger(a_Data, m_UniqueID);
|
||||
AppendShort (a_Data, m_Slot);
|
||||
AppendShort (a_Data, m_ItemID);
|
||||
AppendShort (a_Data, m_Short);
|
||||
AppendShort (a_Data, m_SlotNum);
|
||||
AppendShort (a_Data, m_ItemType);
|
||||
AppendShort (a_Data, m_ItemDamage);
|
||||
}
|
||||
|
||||
|
||||
|
@ -11,22 +11,23 @@ class cPacket_EntityEquipment : public cPacket
|
||||
public:
|
||||
cPacket_EntityEquipment()
|
||||
: m_UniqueID( 0 )
|
||||
, m_Slot( 0 )
|
||||
, m_ItemID( 0 )
|
||||
, m_Short( 0 )
|
||||
{ m_PacketID = E_ENTITY_EQUIPMENT; m_Short = 0; }
|
||||
, m_SlotNum( 0 )
|
||||
, m_ItemType( 0 )
|
||||
, m_ItemDamage( 0 )
|
||||
{
|
||||
m_PacketID = E_ENTITY_EQUIPMENT;
|
||||
}
|
||||
|
||||
cPacket_EntityEquipment( const cPacket_EntityEquipment & a_Copy );
|
||||
virtual cPacket* Clone() const { return new cPacket_EntityEquipment(*this); }
|
||||
virtual cPacket * Clone() const { return new cPacket_EntityEquipment(*this); }
|
||||
|
||||
virtual int Parse(cByteBuffer & a_Buffer) override;
|
||||
virtual int Parse(cByteBuffer & a_Buffer) override;
|
||||
virtual void Serialize(AString & a_Data) const override;
|
||||
|
||||
int m_UniqueID;
|
||||
short m_Slot; // 0 = hold 1-4 = armor
|
||||
short m_ItemID;
|
||||
short m_Short;
|
||||
|
||||
static const unsigned int c_Size = 1 + 4 + 2 + 2 + 2;
|
||||
short m_SlotNum; // 0 = hold 1-4 = armor
|
||||
short m_ItemType;
|
||||
short m_ItemDamage;
|
||||
};
|
||||
|
||||
|
||||
|
@ -106,10 +106,10 @@ void cPacket_PlayerListItem::Serialize(AString & a_Data) const
|
||||
|
||||
cPacket_PlayerLook::cPacket_PlayerLook( cPlayer* a_Player )
|
||||
{
|
||||
m_PacketID = E_PLAYERLOOK;
|
||||
m_Rotation = a_Player->GetRotation();
|
||||
m_Pitch = a_Player->GetPitch();
|
||||
m_bFlying = a_Player->GetFlying();
|
||||
m_PacketID = E_PLAYERLOOK;
|
||||
m_Rotation = a_Player->GetRotation();
|
||||
m_Pitch = a_Player->GetPitch();
|
||||
m_IsOnGround = a_Player->IsOnGround();
|
||||
}
|
||||
|
||||
|
||||
@ -119,9 +119,9 @@ cPacket_PlayerLook::cPacket_PlayerLook( cPlayer* a_Player )
|
||||
int cPacket_PlayerLook::Parse(cByteBuffer & a_Buffer)
|
||||
{
|
||||
int TotalBytes = 0;
|
||||
HANDLE_PACKET_READ(ReadBEFloat, m_Rotation, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEFloat, m_Pitch, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBool, m_bFlying, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEFloat, m_Rotation, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEFloat, m_Pitch, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBool, m_IsOnGround, TotalBytes);
|
||||
return TotalBytes;
|
||||
}
|
||||
|
||||
@ -134,7 +134,7 @@ void cPacket_PlayerLook::Serialize(AString & a_Data) const
|
||||
AppendByte (a_Data, m_PacketID);
|
||||
AppendFloat (a_Data, m_Rotation);
|
||||
AppendFloat (a_Data, m_Pitch);
|
||||
AppendBool (a_Data, m_bFlying);
|
||||
AppendBool (a_Data, m_IsOnGround);
|
||||
}
|
||||
|
||||
|
||||
@ -145,14 +145,14 @@ void cPacket_PlayerLook::Serialize(AString & a_Data) const
|
||||
|
||||
cPacket_PlayerMoveLook::cPacket_PlayerMoveLook( cPlayer* a_Player )
|
||||
{
|
||||
m_PacketID = E_PLAYERMOVELOOK;
|
||||
m_PosX = a_Player->GetPosX();
|
||||
m_PosY = a_Player->GetPosY() + 1.65;
|
||||
m_PosZ = a_Player->GetPosZ();
|
||||
m_Stance = a_Player->GetStance();
|
||||
m_Rotation = a_Player->GetRotation();
|
||||
m_Pitch = a_Player->GetPitch();
|
||||
m_bFlying = a_Player->GetFlying();
|
||||
m_PacketID = E_PLAYERMOVELOOK;
|
||||
m_PosX = a_Player->GetPosX();
|
||||
m_PosY = a_Player->GetPosY() + 1.65;
|
||||
m_PosZ = a_Player->GetPosZ();
|
||||
m_Stance = a_Player->GetStance();
|
||||
m_Rotation = a_Player->GetRotation();
|
||||
m_Pitch = a_Player->GetPitch();
|
||||
m_IsOnGround = a_Player->IsOnGround();
|
||||
}
|
||||
|
||||
|
||||
@ -162,13 +162,13 @@ cPacket_PlayerMoveLook::cPacket_PlayerMoveLook( cPlayer* a_Player )
|
||||
int cPacket_PlayerMoveLook::Parse(cByteBuffer & a_Buffer)
|
||||
{
|
||||
int TotalBytes = 0;
|
||||
HANDLE_PACKET_READ(ReadBEDouble, m_PosX, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEDouble, m_PosY, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEDouble, m_Stance, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEDouble, m_PosZ, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEFloat, m_Rotation, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEFloat, m_Pitch, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBool, m_bFlying, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEDouble, m_PosX, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEDouble, m_PosY, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEDouble, m_Stance, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEDouble, m_PosZ, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEFloat, m_Rotation, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBEFloat, m_Pitch, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadBool, m_IsOnGround, TotalBytes);
|
||||
return TotalBytes;
|
||||
}
|
||||
|
||||
@ -185,7 +185,7 @@ void cPacket_PlayerMoveLook::Serialize(AString & a_Data) const
|
||||
AppendDouble(a_Data, m_PosZ);
|
||||
AppendFloat (a_Data, m_Rotation);
|
||||
AppendFloat (a_Data, m_Pitch);
|
||||
AppendBool (a_Data, m_bFlying);
|
||||
AppendBool (a_Data, m_IsOnGround);
|
||||
}
|
||||
|
||||
|
||||
|
@ -74,8 +74,11 @@ public:
|
||||
cPacket_PlayerLook()
|
||||
: m_Rotation( 0 )
|
||||
, m_Pitch( 0 )
|
||||
, m_bFlying( false )
|
||||
{ m_PacketID = E_PLAYERLOOK; }
|
||||
, m_IsOnGround( false )
|
||||
{
|
||||
m_PacketID = E_PLAYERLOOK;
|
||||
}
|
||||
|
||||
cPacket_PlayerLook( cPlayer* a_Player );
|
||||
virtual cPacket* Clone() const { return new cPacket_PlayerLook(*this); }
|
||||
|
||||
@ -84,7 +87,7 @@ public:
|
||||
|
||||
float m_Rotation;
|
||||
float m_Pitch;
|
||||
bool m_bFlying; // Yeah.. wtf
|
||||
bool m_IsOnGround;
|
||||
} ;
|
||||
|
||||
|
||||
@ -101,12 +104,15 @@ public:
|
||||
, m_PosZ( 0.0 )
|
||||
, m_Rotation( 0.f )
|
||||
, m_Pitch( 0.f )
|
||||
, m_bFlying( false )
|
||||
{ m_PacketID = E_PLAYERMOVELOOK; }
|
||||
, m_IsOnGround( false )
|
||||
{
|
||||
m_PacketID = E_PLAYERMOVELOOK;
|
||||
}
|
||||
|
||||
cPacket_PlayerMoveLook( cPlayer* a_Player );
|
||||
virtual cPacket* Clone() const { return new cPacket_PlayerMoveLook(*this); }
|
||||
|
||||
virtual int Parse(cByteBuffer & a_Buffer) override;
|
||||
virtual int Parse(cByteBuffer & a_Buffer) override;
|
||||
virtual void Serialize(AString & a_Data) const override;
|
||||
|
||||
double m_PosX;
|
||||
@ -115,7 +121,7 @@ public:
|
||||
double m_PosZ;
|
||||
float m_Rotation;
|
||||
float m_Pitch;
|
||||
bool m_bFlying; // Yeah.. wtf
|
||||
bool m_IsOnGround;
|
||||
} ;
|
||||
|
||||
|
||||
|
@ -25,28 +25,28 @@ cPacket_WholeInventory::cPacket_WholeInventory( const cPacket_WholeInventory & a
|
||||
|
||||
|
||||
|
||||
cPacket_WholeInventory::cPacket_WholeInventory(cInventory * a_Inventory)
|
||||
cPacket_WholeInventory::cPacket_WholeInventory(const cInventory & a_Inventory)
|
||||
{
|
||||
m_PacketID = E_INVENTORY_WHOLE;
|
||||
m_WindowID = 0;
|
||||
m_Count = a_Inventory->c_NumSlots;
|
||||
m_Items = new cItem[m_Count];
|
||||
m_WindowID = 0; // Inventory window has a constant ID of 0
|
||||
m_Count = a_Inventory.c_NumSlots;
|
||||
m_Items = new cItem[m_Count];
|
||||
// TODO: copy items one by one, they may have some values that needn't be shallow-copiable
|
||||
memcpy( m_Items, a_Inventory->GetSlots(), sizeof(cItem)*m_Count );
|
||||
memcpy( m_Items, a_Inventory.GetSlots(), sizeof(cItem) * m_Count);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
cPacket_WholeInventory::cPacket_WholeInventory(cWindow * a_Window)
|
||||
cPacket_WholeInventory::cPacket_WholeInventory(const cWindow & a_Window)
|
||||
{
|
||||
m_PacketID = E_INVENTORY_WHOLE;
|
||||
m_WindowID = (char)a_Window->GetWindowID();
|
||||
m_Count = (short)a_Window->GetNumSlots();
|
||||
m_Items = new cItem[m_Count];
|
||||
m_WindowID = (char)a_Window.GetWindowID();
|
||||
m_Count = (short)a_Window.GetNumSlots();
|
||||
m_Items = new cItem[m_Count];
|
||||
// TODO: copy items one by one, they may have some values that needn't be shallow-copiable
|
||||
memcpy( m_Items, a_Window->GetSlots(), sizeof(cItem) * m_Count);
|
||||
memcpy( m_Items, a_Window.GetSlots(), sizeof(cItem) * m_Count);
|
||||
}
|
||||
|
||||
|
||||
|
@ -17,29 +17,29 @@ class cItem;
|
||||
|
||||
|
||||
|
||||
class cPacket_WholeInventory : public cPacket // full inventory [S -> C] ?
|
||||
class cPacket_WholeInventory :
|
||||
public cPacket // full inventory [S -> C] ?
|
||||
{
|
||||
public:
|
||||
cPacket_WholeInventory( const cPacket_WholeInventory & a_Clone );
|
||||
cPacket_WholeInventory( cInventory* a_Inventory );
|
||||
cPacket_WholeInventory( cWindow* a_Window );
|
||||
cPacket_WholeInventory(const cPacket_WholeInventory & a_Clone);
|
||||
cPacket_WholeInventory(const cInventory & a_Inventory);
|
||||
cPacket_WholeInventory(const cWindow & a_Window);
|
||||
~cPacket_WholeInventory();
|
||||
cPacket_WholeInventory()
|
||||
: m_WindowID( 0 )
|
||||
, m_Count( 0 )
|
||||
, m_Items( 0 )
|
||||
{ m_PacketID = E_INVENTORY_WHOLE; }
|
||||
{
|
||||
m_PacketID = E_INVENTORY_WHOLE;
|
||||
}
|
||||
|
||||
|
||||
virtual cPacket* Clone() const { return new cPacket_WholeInventory(*this); }
|
||||
virtual cPacket * Clone() const { return new cPacket_WholeInventory(*this); }
|
||||
|
||||
virtual void Serialize(AString & a_Data) const override;
|
||||
|
||||
char m_WindowID; // WTF?
|
||||
short m_Count; // Number of items
|
||||
cItem * m_Items; // Array of m_Count items
|
||||
|
||||
static const unsigned int c_Size = 1 + 1 + 2; // Minimal size
|
||||
char m_WindowID;
|
||||
short m_Count;
|
||||
cItem * m_Items;
|
||||
};
|
||||
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
int cPacket_WindowClose::Parse(cByteBuffer & a_Buffer)
|
||||
{
|
||||
int TotalBytes = 0;
|
||||
HANDLE_PACKET_READ(ReadChar, m_Close, TotalBytes);
|
||||
HANDLE_PACKET_READ(ReadChar, m_WindowID, TotalBytes);
|
||||
return TotalBytes;
|
||||
}
|
||||
|
||||
@ -21,7 +21,7 @@ int cPacket_WindowClose::Parse(cByteBuffer & a_Buffer)
|
||||
void cPacket_WindowClose::Serialize(AString & a_Data) const
|
||||
{
|
||||
AppendByte(a_Data, m_PacketID);
|
||||
AppendByte(a_Data, m_Close);
|
||||
AppendByte(a_Data, m_WindowID);
|
||||
}
|
||||
|
||||
|
||||
|
@ -11,16 +11,17 @@ class cPacket_WindowClose : public cPacket
|
||||
{
|
||||
public:
|
||||
cPacket_WindowClose()
|
||||
: m_Close( 0 )
|
||||
{ m_PacketID = E_WINDOW_CLOSE; }
|
||||
: m_WindowID( 0 )
|
||||
{
|
||||
m_PacketID = E_WINDOW_CLOSE;
|
||||
}
|
||||
|
||||
virtual cPacket* Clone() const { return new cPacket_WindowClose(*this); }
|
||||
|
||||
virtual int Parse(cByteBuffer & a_Buffer) override;
|
||||
virtual int Parse(cByteBuffer & a_Buffer) override;
|
||||
virtual void Serialize(AString & a_Data) const override;
|
||||
|
||||
char m_Close; // m_Close == cWindow WindowType number
|
||||
|
||||
static const unsigned int c_Size = 1 + 1;
|
||||
char m_WindowID;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user