forked from Kolyah35/minecraft-pe-0.6.1
79 lines
2.0 KiB
C++
Executable File
79 lines
2.0 KiB
C++
Executable File
#ifndef NET_MINECRAFT_NETWORK_PACKET__PlayerArmorEquipmentPacket_H__
|
|
#define NET_MINECRAFT_NETWORK_PACKET__PlayerArmorEquipmentPacket_H__
|
|
|
|
#include "../Packet.h"
|
|
#include "../../world/entity/player/Player.h"
|
|
#include "../../world/item/ArmorItem.h"
|
|
#include "../../world/item/ItemInstance.h"
|
|
|
|
// @note: A visual update only
|
|
class PlayerArmorEquipmentPacket : public Packet
|
|
{
|
|
public:
|
|
int entityId;
|
|
signed char head;
|
|
signed char torso;
|
|
signed char legs;
|
|
signed char feet;
|
|
|
|
PlayerArmorEquipmentPacket() {
|
|
}
|
|
|
|
PlayerArmorEquipmentPacket(Player* player)
|
|
: entityId(player->entityId)
|
|
{
|
|
get(head, player->getArmor(ArmorItem::SLOT_HEAD));
|
|
get(torso, player->getArmor(ArmorItem::SLOT_TORSO));
|
|
get(legs, player->getArmor(ArmorItem::SLOT_LEGS));
|
|
get(feet, player->getArmor(ArmorItem::SLOT_FEET));
|
|
}
|
|
|
|
void write(RakNet::BitStream* bitStream) {
|
|
bitStream->Write((RakNet::MessageID)(ID_USER_PACKET_ENUM + PACKET_PLAYERARMOREQUIPMENT));
|
|
|
|
bitStream->Write(entityId);
|
|
bitStream->Write(head);
|
|
bitStream->Write(torso);
|
|
bitStream->Write(legs);
|
|
bitStream->Write(feet);
|
|
}
|
|
|
|
void read(RakNet::BitStream* bitStream) {
|
|
bitStream->Read(entityId);
|
|
bitStream->Read(head);
|
|
bitStream->Read(torso);
|
|
bitStream->Read(legs);
|
|
bitStream->Read(feet);
|
|
}
|
|
|
|
void handle(const RakNet::RakNetGUID& source, NetEventCallback* callback) {
|
|
callback->handle(source, (PlayerArmorEquipmentPacket*)this);
|
|
}
|
|
|
|
void fillIn(Player* player) {
|
|
set(player, head, ArmorItem::SLOT_HEAD);
|
|
set(player, torso, ArmorItem::SLOT_TORSO);
|
|
set(player, legs, ArmorItem::SLOT_LEGS);
|
|
set(player, feet, ArmorItem::SLOT_FEET);
|
|
}
|
|
|
|
private:
|
|
void get(signed char& s, const ItemInstance* item) {
|
|
if (item) {
|
|
s = item->id - 256;
|
|
} else {
|
|
s = -1;
|
|
}
|
|
}
|
|
|
|
void set(Player* p, signed char s, int slot) {
|
|
if (s < 0) p->setArmor(slot, NULL);
|
|
else {
|
|
ItemInstance item((int)s + 256, 1, 0);
|
|
p->setArmor(slot, &item);
|
|
}
|
|
}
|
|
};
|
|
|
|
#endif /*NET_MINECRAFT_NETWORK_PACKET__PlayerArmorEquipmentPacket_H__*/
|