aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/PlayerInfoPacket.cpp
blob: d0ad8d2af67ed27cadeb41daa362176465460547 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "stdafx.h"
#include "net.minecraft.world.entity.player.h"
#include "..\Minecraft.Client\ServerPlayer.h"
#include "..\Minecraft.Client\PlayerConnection.h"
#include <qnet.h>
#include "PacketListener.h"
#include "InputOutputStream.h"
#include "PlayerInfoPacket.h"



PlayerInfoPacket::PlayerInfoPacket()
{
	m_networkSmallId = 0;
	m_playerColourIndex = -1;
	m_playerPrivileges = 0;
	m_entityId = -1;
}

PlayerInfoPacket::PlayerInfoPacket(BYTE networkSmallId, short playerColourIndex, unsigned int playerPrivileges)
{
	m_networkSmallId = networkSmallId;
	m_playerColourIndex = playerColourIndex;
	m_playerPrivileges = playerPrivileges;
	m_entityId = -1;
}

PlayerInfoPacket::PlayerInfoPacket(shared_ptr<ServerPlayer> player)
{
	m_networkSmallId = 0;
	if(player->connection != nullptr && player->connection->getNetworkPlayer() != nullptr) m_networkSmallId = player->connection->getNetworkPlayer()->GetSmallId();
	m_playerColourIndex = player->getPlayerIndex();
	m_playerPrivileges = player->getAllPlayerGamePrivileges();
	m_entityId = player->entityId;
}

void PlayerInfoPacket::read(DataInputStream *dis)
{
	m_networkSmallId = dis->readByte();
	m_playerColourIndex = dis->readShort();
	m_playerPrivileges = dis->readInt();
	m_entityId = dis->readInt();
}

void PlayerInfoPacket::write(DataOutputStream *dos)
{
	dos->writeByte(m_networkSmallId);
	dos->writeShort(m_playerColourIndex);
	dos->writeInt(m_playerPrivileges);
	dos->writeInt(m_entityId);
}

void PlayerInfoPacket::handle(PacketListener *listener)
{
	listener->handlePlayerInfo(shared_from_this());
}

int PlayerInfoPacket::getEstimatedSize()
{
	return 2 + 2 + 4 + 4;
}