summaryrefslogblamecommitdiffstats
path: root/source/packets/cPacket_Player.h
blob: ce88cc4518456bdce79caf2f435fbe3bf20e3b13 (plain) (tree)





















































































































































                                                                                           

// 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
} ;