diff options
author | mtilden@gmail.com <mtilden@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2011-12-26 04:05:31 +0100 |
---|---|---|
committer | mtilden@gmail.com <mtilden@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2011-12-26 04:05:31 +0100 |
commit | f029b905d5b3000ff5f9ff3c2038ee06e5513aab (patch) | |
tree | f11c227f34e3c97bf43a686c41618925bce85437 | |
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) | |
download | cuberite-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.cpp | 12 | ||||
-rw-r--r-- | source/cPlayer.cpp | 4 |
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 );
}
}
|