// cPacket_Player.h /* Interfaces to the player-related packets: - PlayerAbilities (0xca) - PlayerListItem (0xc9) - PlayerLook (0x0c) - PlayerMoveLook (0x0d) - PlayerPosition (0x0b) */ #pragma once #include "cPacket.h" // fwd: class cPlayer; class cPacket_PlayerAbilities : public cPacket { public: cPacket_PlayerAbilities(void) { m_PacketID = E_PLAYER_LIST_ITEM; } virtual int Parse(const char * a_Data, int a_Size) override; virtual void Serialize(AString & a_Data) const override; virtual cPacket * Clone() const { return new cPacket_PlayerAbilities(*this); } bool m_Invulnerable; // Speculation bool m_IsFlying; bool m_CanFly; bool m_InstaMine; // Speculation } ; class cPacket_PlayerListItem : public cPacket { public: cPacket_PlayerListItem() { m_PacketID = E_PLAYER_LIST_ITEM; } cPacket_PlayerListItem(const AString & a_PlayerName, bool a_Online, short a_Ping); virtual int Parse(const char * a_Data, int a_Size) override; virtual void Serialize(AString & a_Data) const override; virtual cPacket* Clone() const { return new cPacket_PlayerListItem(*this); } AString m_PlayerName; // Supports chat coloring, limited to 16 characters. bool m_Online; short m_Ping; } ; class cPacket_PlayerLook : public cPacket { public: cPacket_PlayerLook() : m_Rotation( 0 ) , m_Pitch( 0 ) , m_bFlying( false ) { m_PacketID = E_PLAYERLOOK; } cPacket_PlayerLook( cPlayer* a_Player ); virtual cPacket* Clone() const { return new cPacket_PlayerLook(*this); } virtual int Parse(const char * a_Data, int a_Size) override; virtual void Serialize(AString & a_Data) const override; float m_Rotation; float m_Pitch; bool m_bFlying; // Yeah.. wtf } ; class cPacket_PlayerMoveLook : public cPacket { public: cPacket_PlayerMoveLook() : m_PosX( 0.0 ) , m_PosY( 0.0 ) , m_Stance( 0.0 ) , m_PosZ( 0.0 ) , m_Rotation( 0.f ) , m_Pitch( 0.f ) , m_bFlying( false ) { m_PacketID = E_PLAYERMOVELOOK; } cPacket_PlayerMoveLook( cPlayer* a_Player ); virtual cPacket* Clone() const { return new cPacket_PlayerMoveLook(*this); } virtual int Parse(const char * a_Data, int a_Size) override; virtual void Serialize(AString & a_Data) const override; double m_PosX; double m_PosY; double m_Stance; double m_PosZ; float m_Rotation; float m_Pitch; bool m_bFlying; // Yeah.. wtf } ; class cPacket_PlayerPosition : public cPacket { public: cPacket_PlayerPosition( cPlayer* a_Player ); cPacket_PlayerPosition() : m_PosX( 0.0 ) , m_PosY( 0.0 ) , m_Stance( 0.0 ) , m_PosZ( 0.0 ) , m_bFlying( false ) { m_PacketID = E_PLAYERPOS; } virtual cPacket* Clone() const { return new cPacket_PlayerPosition(*this); } virtual int Parse(const char * a_Data, int a_Size) override; virtual void Serialize(AString & a_Data) const override; double m_PosX; double m_PosY; double m_Stance; double m_PosZ; bool m_bFlying; // Yeah.. wtf } ;