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 ); } }