diff options
author | LaG1924 <12997935+LaG1924@users.noreply.github.com> | 2017-04-15 12:17:53 +0200 |
---|---|---|
committer | LaG1924 <12997935+LaG1924@users.noreply.github.com> | 2017-04-15 12:17:53 +0200 |
commit | 2ee0f834487cfe4b6bd9424ca2715685a8db16e4 (patch) | |
tree | 6867718d6bfcd42f6a82c86dd8f149d6ea6cab68 /Packet.hpp | |
download | AltCraft-2ee0f834487cfe4b6bd9424ca2715685a8db16e4.tar AltCraft-2ee0f834487cfe4b6bd9424ca2715685a8db16e4.tar.gz AltCraft-2ee0f834487cfe4b6bd9424ca2715685a8db16e4.tar.bz2 AltCraft-2ee0f834487cfe4b6bd9424ca2715685a8db16e4.tar.lz AltCraft-2ee0f834487cfe4b6bd9424ca2715685a8db16e4.tar.xz AltCraft-2ee0f834487cfe4b6bd9424ca2715685a8db16e4.tar.zst AltCraft-2ee0f834487cfe4b6bd9424ca2715685a8db16e4.zip |
Diffstat (limited to 'Packet.hpp')
-rw-r--r-- | Packet.hpp | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/Packet.hpp b/Packet.hpp new file mode 100644 index 0000000..67e95e5 --- /dev/null +++ b/Packet.hpp @@ -0,0 +1,130 @@ +#pragma once + +#include <vector> +#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<Field> m_fields; + byte *m_data = nullptr; + byte *m_parsePtr = nullptr; + size_t m_dataLength = 0; +};
\ No newline at end of file |