summaryrefslogtreecommitdiffstats
path: root/source
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 /source
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
Diffstat (limited to '')
-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 );
}
}