- 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:
parent
c35db25269
commit
a85ea1c9ac
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user