summaryrefslogblamecommitdiffstats
path: root/src/Protocol/Packetizer.cpp
blob: 12bfcc0dde90ea6d8e460740e967069e5c7f9a6f (plain) (tree)
1
2
3
4
5
6
7
8






                                                                                                       
                    


















                                                                                
                                                            







                                            
                                                       





 
                                                 
 
                                       
         






                                                
















































                                                                                            
                                                                                   


















                                                                                           
                                                                                   












                                                                                        

// Packetizer.cpp

// Implements the cPacketizer class representing a wrapper for sending a single packet over a protocol.

#include "Globals.h"
#include "Packetizer.h"
#include "../UUID.h"





////////////////////////////////////////////////////////////////////////////////
// cPacketizer:

cPacketizer::~cPacketizer()
{
	m_Protocol.SendPacket(*this);
}





void cPacketizer::WriteByteAngle(double a_Angle)
{
	WriteBEInt8(static_cast<Int8>(255 * a_Angle / 360));
}





void cPacketizer::WriteFPInt(double a_Value)
{
	WriteBEInt32(static_cast<Int32>(a_Value * 32));
}





void cPacketizer::WriteUUID(const cUUID & a_UUID)
{
	for (auto val : a_UUID.ToRaw())
	{
		VERIFY(m_Out.WriteBEUInt8(val));
	}
}





AString cPacketizer::PacketTypeToStr(cProtocol::ePacketType a_PacketType)
{
	switch (a_PacketType)
	{
		case cProtocol::pktAttachEntity:          return "pktAttachEntity";
		case cProtocol::pktBlockAction:           return "pktBlockAction";
		case cProtocol::pktBlockBreakAnim:        return "pktBlockBreakAnim";
		case cProtocol::pktBlockChange:           return "pktBlockChange";
		case cProtocol::pktBlockChanges:          return "pktBlockChanges";
		case cProtocol::pktCameraSetTo:           return "pktCameraSetTo";
		case cProtocol::pktChatRaw:               return "pktChatRaw";
		case cProtocol::pktCollectEntity:         return "pktCollectEntity";
		case cProtocol::pktDestroyEntity:         return "pktDestroyEntity";
		case cProtocol::pktDifficulty:            return "pktDifficulty";
		case cProtocol::pktDisconnectDuringLogin: return "pktDisconnectDuringLogin";
		case cProtocol::pktDisconnectDuringGame:  return "pktDisconnectDuringGame";
		case cProtocol::pktDisplayObjective:      return "pktDisplayObjective";
		case cProtocol::pktEditSign:              return "pktEditSign";
		case cProtocol::pktEncryptionRequest:     return "pktEncryptionRequest";
		case cProtocol::pktEntityAnimation:       return "pktEntityAnimation";
		case cProtocol::pktEntityEffect:          return "pktEntityEffect";
		case cProtocol::pktEntityEquipment:       return "pktEntityEquipment";
		case cProtocol::pktEntityHeadLook:        return "pktEntityHeadLook";
		case cProtocol::pktEntityLook:            return "pktEntityLook";
		case cProtocol::pktEntityMeta:            return "pktEntityMeta";
		case cProtocol::pktEntityProperties:      return "pktEntityProperties";
		case cProtocol::pktEntityRelMove:         return "pktEntityRelMove";
		case cProtocol::pktEntityRelMoveLook:     return "pktEntityRelMoveLook";
		case cProtocol::pktEntityStatus:          return "pktEntityStatus";
		case cProtocol::pktEntityVelocity:        return "pktEntityVelocity";
		case cProtocol::pktExperience:            return "pktExperience";
		case cProtocol::pktExplosion:             return "pktExplosion";
		case cProtocol::pktGameMode:              return "pktGameMode";
		case cProtocol::pktHeldItemChange:        return "pktHeldItemChange";
		case cProtocol::pktInventorySlot:         return "pktInventorySlot";
		case cProtocol::pktJoinGame:              return "pktJoinGame";
		case cProtocol::pktKeepAlive:             return "pktKeepAlive";
		case cProtocol::pktLeashEntity:           return "pktLeashEntity";
		case cProtocol::pktLoginSuccess:          return "pktLoginSuccess";
		case cProtocol::pktMapData:               return "pktMapData";
		case cProtocol::pktParticleEffect:        return "pktParticleEffect";
		case cProtocol::pktPingResponse:          return "pktPingResponse";
		case cProtocol::pktPlayerAbilities:       return "pktPlayerAbilities";
		case cProtocol::pktPlayerList:            return "pktPlayerList";
		case cProtocol::pktPlayerMaxSpeed:        return "pktPlayerMaxSpeed";
		case cProtocol::pktPlayerMoveLook:        return "pktPlayerMoveLook";
		case cProtocol::pktPluginMessage:         return "pktPluginMessage";
		case cProtocol::pktRemoveEntityEffect:    return "pktRemoveEntityEffect";
		case cProtocol::pktResourcePack:          return "pktResourcePack";
		case cProtocol::pktRespawn:               return "pktRespawn";
		case cProtocol::pktScoreboardObjective:   return "pktScoreboardObjective";
		case cProtocol::pktSpawnObject:           return "pktSpawnObject";
		case cProtocol::pktSoundEffect:           return "pktSoundEffect";
		case cProtocol::pktSoundParticleEffect:   return "pktSoundParticleEffect";
		case cProtocol::pktSpawnExperienceOrb:    return "pktSpawnExperienceOrb";
		case cProtocol::pktSpawnGlobalEntity:     return "pktSpawnGlobalEntity";
		case cProtocol::pktSpawnMob:              return "pktSpawnMob";
		case cProtocol::pktSpawnOtherPlayer:      return "pktSpawnOtherPlayer";
		case cProtocol::pktSpawnPainting:         return "pktSpawnPainting";
		case cProtocol::pktSpawnPosition:         return "pktSpawnPosition";
		case cProtocol::pktStartCompression:      return "pktStartCompression";
		case cProtocol::pktStatistics:            return "pktStatistics";
		case cProtocol::pktStatusResponse:        return "pktStatusResponse";
		case cProtocol::pktTabCompletionResults:  return "pktTabCompletionResults";
		case cProtocol::pktTeleportEntity:        return "pktTeleportEntity";
		case cProtocol::pktTimeUpdate:            return "pktTimeUpdate";
		case cProtocol::pktTitle:                 return "pktTitle";
		case cProtocol::pktUnloadChunk:           return "pktUnloadChunk";
		case cProtocol::pktUnlockRecipe:          return "pktUnlockRecipe";
		case cProtocol::pktUpdateBlockEntity:     return "pktUpdateBlockEntity";
		case cProtocol::pktUpdateHealth:          return "pktUpdateHealth";
		case cProtocol::pktUpdateScore:           return "pktUpdateScore";
		case cProtocol::pktUpdateSign:            return "pktUpdateSign";
		case cProtocol::pktUseBed:                return "pktUseBed";
		case cProtocol::pktWeather:               return "pktWeather";
		case cProtocol::pktWindowItems:           return "pktWindowItems";
		case cProtocol::pktWindowClose:           return "pktWindowClose";
		case cProtocol::pktWindowOpen:            return "pktWindowOpen";
		case cProtocol::pktWindowProperty:        return "pktWindowProperty";
	}
	return Printf("Unknown packet type: 0x%02x", a_PacketType);
}