summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormtilden@gmail.com <mtilden@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2011-12-26 04:05:31 +0100
committermtilden@gmail.com <mtilden@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2011-12-26 04:05:31 +0100
commitf029b905d5b3000ff5f9ff3c2038ee06e5513aab (patch)
treef11c227f34e3c97bf43a686c41618925bce85437
parent - Scoreboard deleting moved to cClientHandle::~cClientHandle() with checks. Please test this every way you can with clients disconnecting from the internet, crashing, etc. It should work on all cases as every client gets called in this part to be 'Deleted' (diff)
downloadcuberite-f029b905d5b3000ff5f9ff3c2038ee06e5513aab.tar
cuberite-f029b905d5b3000ff5f9ff3c2038ee06e5513aab.tar.gz
cuberite-f029b905d5b3000ff5f9ff3c2038ee06e5513aab.tar.bz2
cuberite-f029b905d5b3000ff5f9ff3c2038ee06e5513aab.tar.lz
cuberite-f029b905d5b3000ff5f9ff3c2038ee06e5513aab.tar.xz
cuberite-f029b905d5b3000ff5f9ff3c2038ee06e5513aab.tar.zst
cuberite-f029b905d5b3000ff5f9ff3c2038ee06e5513aab.zip
-rw-r--r--source/cClientHandle.cpp12
-rw-r--r--source/cPlayer.cpp4
2 files changed, 12 insertions, 4 deletions
diff --git a/source/cClientHandle.cpp b/source/cClientHandle.cpp
index 05bdec249..00e81c416 100644
--- a/source/cClientHandle.cpp
+++ b/source/cClientHandle.cpp
@@ -124,6 +124,7 @@ cClientHandle::cClientHandle(const cSocket & a_Socket)
, m_bKeepThreadGoing( true )
, m_bSendLoginResponse( false )
, m_pState( new sClientHandleState )
+ , m_Ping(1000)
{
LOG("cClientHandle::cClientHandle");
@@ -183,9 +184,16 @@ cClientHandle::~cClientHandle()
{
if ((*itr) && (*itr)->GetClientHandle() && strlen(GetUsername()) > 0)
{
- cPacket_PlayerListItem *PlayerList = new cPacket_PlayerListItem(m_Player->GetColor() + GetUsername(), false, (short)9999);
- (*itr)->GetClientHandle()->Send( *PlayerList );
+ cPacket_PlayerListItem PlayerList(m_Player->GetColor() + GetUsername(), false, (short)9999);
+ (*itr)->GetClientHandle()->Send( PlayerList );
}
+
+ }
+
+ if (m_pState && m_pState->Username.size() > 0)
+ {
+ cPacket_Chat Left( m_pState->Username + " left the game!");
+ cRoot::Get()->GetServer()->Broadcast( Left, this );
}
// First stop sending thread
diff --git a/source/cPlayer.cpp b/source/cPlayer.cpp
index e8bdeb4ff..d0dfa8795 100644
--- a/source/cPlayer.cpp
+++ b/source/cPlayer.cpp
@@ -239,8 +239,8 @@ void cPlayer::Tick(float a_Dt)
for( cWorld::PlayerList::iterator itr = PlayerList.begin(); itr != PlayerList.end(); ++itr )
{
if ((*itr) && (*itr)->GetClientHandle() && !((*itr)->GetClientHandle()->IsDestroyed())) {
- cPacket_PlayerListItem *PlayerList = new cPacket_PlayerListItem(GetColor() + GetName(), true, (*itr)->GetClientHandle()->GetPing());
- (*itr)->GetClientHandle()->Send( *PlayerList );
+ cPacket_PlayerListItem PlayerList(GetColor() + GetName(), true, (*itr)->GetClientHandle()->GetPing());
+ (*itr)->GetClientHandle()->Send( PlayerList );
}
}