summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authormtilden@gmail.com <mtilden@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2011-12-26 03:35:49 +0100
committermtilden@gmail.com <mtilden@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2011-12-26 03:35:49 +0100
commita85ea1c9accd439bb8a805253979b93e7c8fe6fe (patch)
tree82630f92662eafe869cbdfabb928c0d6318da991 /source
parentMade some functions in cChunk and cNoise inline, this should significantly increase chunk generation speed (diff)
downloadcuberite-a85ea1c9accd439bb8a805253979b93e7c8fe6fe.tar
cuberite-a85ea1c9accd439bb8a805253979b93e7c8fe6fe.tar.gz
cuberite-a85ea1c9accd439bb8a805253979b93e7c8fe6fe.tar.bz2
cuberite-a85ea1c9accd439bb8a805253979b93e7c8fe6fe.tar.lz
cuberite-a85ea1c9accd439bb8a805253979b93e7c8fe6fe.tar.xz
cuberite-a85ea1c9accd439bb8a805253979b93e7c8fe6fe.tar.zst
cuberite-a85ea1c9accd439bb8a805253979b93e7c8fe6fe.zip
Diffstat (limited to 'source')
-rw-r--r--source/cClientHandle.cpp12
-rw-r--r--source/cClientHandle.h5
-rw-r--r--source/cPlayer.cpp7
-rw-r--r--source/packets/cPacket_PlayerListItem.cpp8
-rw-r--r--source/packets/cPacket_PlayerListItem.h1
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);