From 1563ae5be6bc130a9b3a23464f7e28fdb1e87da3 Mon Sep 17 00:00:00 2001 From: LaG1924 <12997935+LaG1924@users.noreply.github.com> Date: Sat, 13 May 2017 19:01:56 +0500 Subject: 2017-05-13 --- code/Field.hpp | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 code/Field.hpp (limited to 'code/Field.hpp') diff --git a/code/Field.hpp b/code/Field.hpp new file mode 100644 index 0000000..43769dc --- /dev/null +++ b/code/Field.hpp @@ -0,0 +1,119 @@ +#pragma once + +#include +#include +#include +#include +#include "utility.h" +#include "PositionI.hpp" + +typedef unsigned char byte; +typedef signed char sbyte; + +enum FieldType { + Unknown = 0, + Boolean, //Bool + Byte8_t, //int8_t + UnsignedByte, //uint8_t + Short, //int16_t + UnsignedShort, //uint16_t + Int, //int32_t + Long, //int64_t + Float, //float + Double, //double + Position, //PositionI + Angle, //uint8_t + Uuid, //byte* (2 bytes) + //Unknown-length data + + String = 100, //std::string + Chat, //std::string + VarInt, //int32_t + VarLong, //int64_t + ChunkSection, //byte* + EntityMetadata, //byte* + Slot, //byte* + NbtTag, //byte* + ByteArray, //byte* +}; + +class Field { +public: + Field(); + + Field(const Field &other); + + void swap(Field &other); + + Field &operator=(Field other); + + ~Field(); + + size_t GetLength(); + + void Clear(); + + void CopyToBuff(byte *ptr); + + void SetRaw(byte *ptr, size_t len = 0, FieldType type = Unknown); + + FieldType GetType(); + + void Attach(Field field); + + static size_t GetFieldLength(FieldType type); + + //Cpp-types setters/getters for binary content of MC's data types + + int GetVarInt(); + + void SetVarInt(int value); + + int GetInt(); + + void SetInt(int value); + + bool GetBool(); + + void SetBool(bool value); + + unsigned short GetUShort(); + + void SetUShort(unsigned short value); + + std::string GetString(); + + void SetString(std::string value); + + long long GetLong(); + + void SetLong(long long value); + + byte GetUByte(); + + void SetUByte(byte value); + + sbyte GetByte(); + + void SetByte(sbyte value); + + float GetFloat(); + + void SetFloat(float value); + + PositionI GetPosition(); + + void SetPosition(PositionI value); + + double GetDouble(); + + void SetDouble(double value); + + std::vector GetArray(); + +private: + size_t m_dataLength = 0; + byte *m_data = nullptr; + FieldType m_type = Unknown; + std::vector m_childs; +}; -- cgit v1.2.3