From 4d7b1da29e0957ac798ee8e6da8288cbd4ae5c79 Mon Sep 17 00:00:00 2001 From: LaG1924 <12997935+LaG1924@users.noreply.github.com> Date: Thu, 18 May 2017 19:03:05 +0500 Subject: 2017-05-18 --- src/packet/Packet.hpp | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 src/packet/Packet.hpp (limited to 'src/packet/Packet.hpp') diff --git a/src/packet/Packet.hpp b/src/packet/Packet.hpp new file mode 100644 index 0000000..67e95e5 --- /dev/null +++ b/src/packet/Packet.hpp @@ -0,0 +1,130 @@ +#pragma once + +#include +#include "Field.hpp" +#include "FieldParser.hpp" + +enum ConnectionState { + Login, + Handshaking, + Play, + Status, +}; + +enum PacketsClientBound{ + SpawnObject=0x00, + SpawnExperienceOrb, + SpawnGlobalEntity, + SpawnMob, + SpawnPainting, + SpawnPlayer, + Animation, + Statistics, + BlockBreakAnimation, + UpdateBlockEntity, + BlockAction, + BlockChange, + BossBar, + ServerDifficulty, + Tab, + ChatMessage, + MultiBlockChange, + ConfirmTransaction, + CloseWindow, + OpenWindow, + WindowItems, + WindowProperty, + SetSlot, + SetCooldown, + PluginMessage, + NamedSoundEffect, + Disconnect, + EntityStatus, + Explosion, + UnloadChunk, + ChangeGameState, + KeepAlive, + ChunkData, + Effect, + Particle, + JoinGame, + Map, + EntityRelativeMove, + EntityLookAndRelativeMove, + EntityLook, + Entity, + VehicleMove, + OpenSignEditor, + PlayerAbilities, + CombatEvent, + PlayerListItem, + PlayerPositionAndLook, + UseBed, + DestroyEntities, + RemoveEntityEffect, + ResourcePackSend, + Respawn, + EntityHeadLook, + WorldBorder, + Camera, + HeldItemChange, + DisplayScoreboard, + EntityMetadata_, + AttachEntity, + EntityVelocity, + EntityEquipment, + SetExperience, + UpdateHealth, + ScoreboardObjective, + SetPassengers, + Teams, + UpdateScore, + SpawnPosition, + TimeUpdate, + Title, + SoundEffect, + PlayerListHeaderAndFooter, + CollectItem, + EntityTeleport, + EntityProperties, + EntityEffect, +}; + +class Packet { +public: + Packet(int id); + + Packet(byte *data); + + Packet(const Packet &other); + + ~Packet() { + delete[] m_data; + } + + int GetId(); + + void AddField(Field field); + + void ParseField(FieldType type, size_t len = 0); + + void ParseFieldArray(Field &field, FieldType type, size_t len); + + Field & GetField(int id); + + size_t GetLength(); + + void CopyToBuff(byte *ptr); + + void swap(Packet &other); + + Packet operator=(Packet other); + +private: + Packet(); + + std::vector m_fields; + byte *m_data = nullptr; + byte *m_parsePtr = nullptr; + size_t m_dataLength = 0; +}; \ No newline at end of file -- cgit v1.2.3