summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormadmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2012-03-19 18:15:35 +0100
committermadmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2012-03-19 18:15:35 +0100
commit2786ad306abe7487e3fc6bed1123ca8ebc2c3198 (patch)
tree58254cedb48cb33431699cce729dc7c67bd20779
parentFixed a warning in a Release build (diff)
downloadcuberite-2786ad306abe7487e3fc6bed1123ca8ebc2c3198.tar
cuberite-2786ad306abe7487e3fc6bed1123ca8ebc2c3198.tar.gz
cuberite-2786ad306abe7487e3fc6bed1123ca8ebc2c3198.tar.bz2
cuberite-2786ad306abe7487e3fc6bed1123ca8ebc2c3198.tar.lz
cuberite-2786ad306abe7487e3fc6bed1123ca8ebc2c3198.tar.xz
cuberite-2786ad306abe7487e3fc6bed1123ca8ebc2c3198.tar.zst
cuberite-2786ad306abe7487e3fc6bed1123ca8ebc2c3198.zip
-rw-r--r--source/PacketID.h1
-rw-r--r--source/cMonster.cpp2
-rw-r--r--source/cPlayer.cpp10
-rw-r--r--source/cServer.cpp10
-rw-r--r--source/packets/cPacket_EntityLook.cpp37
-rw-r--r--source/packets/cPacket_EntityLook.h36
6 files changed, 81 insertions, 15 deletions
diff --git a/source/PacketID.h b/source/PacketID.h
index 374947b22..b10bc54be 100644
--- a/source/PacketID.h
+++ b/source/PacketID.h
@@ -33,6 +33,7 @@ enum ENUM_PACKET_ID
E_ENT_LOOK = 0x20,
E_REL_ENT_MOVE_LOOK = 0x21,
E_ENT_TELEPORT = 0x22,
+ E_ENT_HEAD_LOOK = 0x23,
E_ENT_STATUS = 0x26,
E_METADATA = 0x28,
E_PRE_CHUNK = 0x32,
diff --git a/source/cMonster.cpp b/source/cMonster.cpp
index 15fb16fc3..1820bae4d 100644
--- a/source/cMonster.cpp
+++ b/source/cMonster.cpp
@@ -207,7 +207,7 @@ void cMonster::ReplicateMovement()
{
if(m_bDirtyOrientation && !m_bDirtyPosition)
{
- cPacket_EntityLook EntityLook( this );
+ cPacket_EntityLook EntityLook(*this);
m_World->BroadcastToChunk(m_ChunkX, m_ChunkY, m_ChunkZ, EntityLook );
m_bDirtyOrientation = false;
}
diff --git a/source/cPlayer.cpp b/source/cPlayer.cpp
index 9d1fe7ea4..cf007bb98 100644
--- a/source/cPlayer.cpp
+++ b/source/cPlayer.cpp
@@ -69,6 +69,10 @@ cPlayer::cPlayer(cClientHandle* a_Client, const AString & a_PlayerName)
, m_Color('-')
, m_ClientHandle( a_Client )
{
+ LOGD("Created a player object for \"%s\" @ \"%s\" at %p, ID %d",
+ a_PlayerName.c_str(), a_Client->GetSocket().GetIPString().c_str(),
+ this, GetUniqueID()
+ );
m_EntityType = eEntityType_Player;
SetMaxHealth(20);
SetMaxFoodLevel(125);
@@ -113,7 +117,7 @@ void cPlayer::Initialize( cWorld* a_World )
cPlayer::~cPlayer(void)
{
- LOG("Deleting cPlayer \"%s\" @ %p", m_PlayerName.c_str(), this);
+ LOG("Deleting cPlayer \"%s\" at %p, ID %d", m_PlayerName.c_str(), this, GetUniqueID());
SaveToDisk();
@@ -183,8 +187,10 @@ void cPlayer::Tick(float a_Dt)
if (m_bDirtyOrientation && !m_bDirtyPosition)
{
- cPacket_EntityLook EntityLook( this );
+ cPacket_EntityLook EntityLook(*this);
m_World->BroadcastToChunk(m_ChunkX, m_ChunkY, m_ChunkZ, EntityLook, m_ClientHandle );
+ cPacket_EntityHeadLook EntityHeadLook(*this);
+ m_World->BroadcastToChunk(m_ChunkX, m_ChunkY, m_ChunkZ, EntityHeadLook, m_ClientHandle);
m_bDirtyOrientation = false;
}
else if (m_bDirtyPosition )
diff --git a/source/cServer.cpp b/source/cServer.cpp
index 39b74464d..ceee46fa0 100644
--- a/source/cServer.cpp
+++ b/source/cServer.cpp
@@ -269,13 +269,17 @@ cServer::cServer()
cServer::~cServer()
{
- if( m_pState->SListenClient ) m_pState->SListenClient.CloseSocket();
+ // TODO: Shut down the server gracefully
+ if ( m_pState->SListenClient )
+ {
+ m_pState->SListenClient.CloseSocket();
+ }
m_pState->SListenClient = 0;
m_pState->bStopListenThread = true;
- delete m_pState->pListenThread; m_pState->pListenThread = 0;
+ delete m_pState->pListenThread; m_pState->pListenThread = NULL;
m_pState->bStopTickThread = true;
- delete m_pState->pTickThread; m_pState->pTickThread = 0;
+ delete m_pState->pTickThread; m_pState->pTickThread = NULL;
delete m_pState;
}
diff --git a/source/packets/cPacket_EntityLook.cpp b/source/packets/cPacket_EntityLook.cpp
index 3e0f2bd65..d25f788c0 100644
--- a/source/packets/cPacket_EntityLook.cpp
+++ b/source/packets/cPacket_EntityLook.cpp
@@ -9,13 +9,16 @@
-cPacket_EntityLook::cPacket_EntityLook(cEntity* a_Entity)
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// cPacket_EntityLook:
+
+cPacket_EntityLook::cPacket_EntityLook(const cEntity & a_Entity)
{
m_PacketID = E_ENT_LOOK;
- m_UniqueID = a_Entity->GetUniqueID();
- m_Rotation = (char)((a_Entity->GetRotation() / 360.f) * 256);
- m_Pitch = (char)((a_Entity->GetPitch() / 360.f) * 256);
+ m_UniqueID = a_Entity.GetUniqueID();
+ m_Rotation = (char)((a_Entity.GetRotation() / 360.f) * 256);
+ m_Pitch = (char)((a_Entity.GetPitch() / 360.f) * 256);
}
@@ -33,3 +36,29 @@ void cPacket_EntityLook::Serialize(AString & a_Data) const
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// cPacket_EntityHeadLook:
+
+cPacket_EntityHeadLook::cPacket_EntityHeadLook(const cEntity & a_Entity)
+{
+ m_PacketID = E_ENT_HEAD_LOOK;
+
+ m_UniqueID = a_Entity.GetUniqueID();
+ m_HeadYaw = (char)((a_Entity.GetRotation() / 360.f) * 256);
+}
+
+
+
+
+
+void cPacket_EntityHeadLook::Serialize(AString & a_Data) const
+{
+ AppendByte (a_Data, m_PacketID);
+ AppendInteger(a_Data, m_UniqueID);
+ AppendByte (a_Data, m_HeadYaw);
+}
+
+
+
+
diff --git a/source/packets/cPacket_EntityLook.h b/source/packets/cPacket_EntityLook.h
index 407f9c1da..e4aac18e3 100644
--- a/source/packets/cPacket_EntityLook.h
+++ b/source/packets/cPacket_EntityLook.h
@@ -8,24 +8,50 @@
class cEntity;
-class cPacket_EntityLook : public cPacket
+
+
+
+
+
+class cPacket_EntityLook :
+ public cPacket
{
public:
- cPacket_EntityLook()
+ cPacket_EntityLook(void)
: m_UniqueID( 0 )
, m_Rotation( 0 )
, m_Pitch( 0 )
{ m_PacketID = E_ENT_LOOK; }
- cPacket_EntityLook(cEntity* a_Entity);
- virtual cPacket* Clone() const { return new cPacket_EntityLook(*this); }
+ cPacket_EntityLook(const cEntity & a_Entity);
+ virtual cPacket* Clone(void) const { return new cPacket_EntityLook(*this); }
virtual void Serialize(AString & a_Data) const override;
int m_UniqueID;
char m_Rotation;
char m_Pitch;
+};
+
+
+
- static const unsigned int c_Size = 1 + 4 + 1 + 1;
+
+class cPacket_EntityHeadLook :
+ public cPacket
+{
+public:
+ cPacket_EntityHeadLook(void)
+ : m_UniqueID( 0 )
+ , m_HeadYaw( 0 )
+ { m_PacketID = E_ENT_LOOK; }
+ cPacket_EntityHeadLook(const cEntity & a_Entity);
+
+ virtual cPacket * Clone(void) const { return new cPacket_EntityHeadLook(*this); }
+
+ virtual void Serialize(AString & a_Data) const override;
+
+ int m_UniqueID;
+ char m_HeadYaw;
};