1
0

- Cleaned up PLI Packet and its creation/sending and fixed bug of player not being removed on scoreboard (forgot to send color in the removal packet)

git-svn-id: http://mc-server.googlecode.com/svn/trunk@116 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
mtilden@gmail.com 2011-12-26 02:35:49 +00:00
parent c35db25269
commit a85ea1c9ac
5 changed files with 22 additions and 11 deletions

View File

@ -156,7 +156,6 @@ cClientHandle::cClientHandle(const cSocket & a_Socket)
m_pState->PacketMap[E_UPDATE_SIGN] = new cPacket_UpdateSign;
m_pState->PacketMap[E_RESPAWN] = new cPacket_Respawn;
m_pState->PacketMap[E_PING] = new cPacket_Ping;
m_pState->PacketMap[E_PLAYER_LIST_ITEM] = new cPacket_PlayerListItem;
memset( m_LoadedChunks, 0x00, sizeof(cChunk*)*VIEWDISTANCE*VIEWDISTANCE );
@ -1166,17 +1165,18 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
cWorld::PlayerList PlayerList = cRoot::Get()->GetWorld()->GetAllPlayers();
for( cWorld::PlayerList::iterator itr = PlayerList.begin(); itr != PlayerList.end(); ++itr )
{
cPacket_PlayerListItem PlayerList;
PlayerList.m_PlayerName = GetUsername();
PlayerList.m_Online = false;
PlayerList.m_Ping = (short)5;
(*itr)->GetClientHandle()->Send( PlayerList );
cPacket_PlayerListItem *PlayerList = new cPacket_PlayerListItem(m_Player->GetColor() + GetUsername(), false, (short)9999);
(*itr)->GetClientHandle()->Send( *PlayerList );
}
}
Destroy();
return;
}
break;
case E_KEEP_ALIVE:
// TODO: Handle player ping per minecraft
//cPacket_KeepAlive* PacketData = reinterpret_cast<cPacket_KeepAlive*>(a_Packet);
break;
default:
break;
}

View File

@ -51,6 +51,8 @@ public:
static void AuthenticateThread( void* a_Param );
const char* GetUsername();
inline short GetPing() { return m_Ping; }
private:
void HandlePacket( cPacket* a_Packet );
void RemovePacket( cPacket * a_Packet );
@ -66,6 +68,9 @@ private:
float m_TimeLastPacket;
// TODO: ping calculation per minecraft
short m_Ping;
bool m_bLoggedIn;
bool m_bSendLoginResponse;

View File

@ -239,11 +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;
PlayerList.m_PlayerName = GetColor() + GetName();
PlayerList.m_Online = true;
PlayerList.m_Ping = (short)5;
(*itr)->GetClientHandle()->Send( PlayerList );
cPacket_PlayerListItem *PlayerList = new cPacket_PlayerListItem(GetColor() + GetName(), true, (*itr)->GetClientHandle()->GetPing());
(*itr)->GetClientHandle()->Send( *PlayerList );
}
}

View File

@ -1,5 +1,13 @@
#include "cPacket_PlayerListItem.h"
cPacket_PlayerListItem::cPacket_PlayerListItem(std::string a_PlayerName, bool a_Online, short a_Ping)
{
m_PacketID = E_PLAYER_LIST_ITEM;
m_PlayerName = a_PlayerName;
m_Online = a_Online;
m_Ping = a_Ping;
}
bool cPacket_PlayerListItem::Parse( cSocket & a_Socket )
{
m_Socket = a_Socket;

View File

@ -7,6 +7,7 @@ class cPacket_PlayerListItem : public cPacket
{
public:
cPacket_PlayerListItem() { m_PacketID = E_PLAYER_LIST_ITEM; }
cPacket_PlayerListItem(std::string a_PlayerName, bool a_Online, short a_Ping);
bool Parse(cSocket & a_Socket);
bool Send(cSocket & a_Socket);