diff options
Diffstat (limited to '')
-rw-r--r-- | source/cClientHandle.cpp | 12 | ||||
-rw-r--r-- | source/cClientHandle.h | 5 | ||||
-rw-r--r-- | source/cPlayer.cpp | 7 | ||||
-rw-r--r-- | source/packets/cPacket_PlayerListItem.cpp | 8 | ||||
-rw-r--r-- | source/packets/cPacket_PlayerListItem.h | 1 |
5 files changed, 22 insertions, 11 deletions
diff --git a/source/cClientHandle.cpp b/source/cClientHandle.cpp index c9d1de1ce..66d343784 100644 --- a/source/cClientHandle.cpp +++ b/source/cClientHandle.cpp @@ -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;
}
diff --git a/source/cClientHandle.h b/source/cClientHandle.h index 048e46389..67ef56747 100644 --- a/source/cClientHandle.h +++ b/source/cClientHandle.h @@ -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;
diff --git a/source/cPlayer.cpp b/source/cPlayer.cpp index fd7a09a6b..e8bdeb4ff 100644 --- a/source/cPlayer.cpp +++ b/source/cPlayer.cpp @@ -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 );
}
}
diff --git a/source/packets/cPacket_PlayerListItem.cpp b/source/packets/cPacket_PlayerListItem.cpp index b0726dc8a..669f5705b 100644 --- a/source/packets/cPacket_PlayerListItem.cpp +++ b/source/packets/cPacket_PlayerListItem.cpp @@ -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;
diff --git a/source/packets/cPacket_PlayerListItem.h b/source/packets/cPacket_PlayerListItem.h index a4e10eb74..19eee3d1f 100644 --- a/source/packets/cPacket_PlayerListItem.h +++ b/source/packets/cPacket_PlayerListItem.h @@ -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);
|