#pragma once #include "APIHelp.h" #include #include #include #include //////////////////// Classes //////////////////// class Packet; class BinaryStream; class PacketClass : public ScriptClass { private: std::shared_ptr packet; public: explicit PacketClass(std::shared_ptr p); static std::shared_ptr extract(Local v); std::shared_ptr get() { return packet; } void set(std::shared_ptr pkt) { packet = pkt; }; static Local newPacket(std::shared_ptr pkt); Local asPointer(const Arguments& args); Local getId(); Local getName(); }; extern ClassDefine PacketClassBuilder; class BinaryStreamClass : public ScriptClass { private: BinaryStream* bs; public: explicit BinaryStreamClass(BinaryStream* p); BinaryStreamClass(const Local& scriptObj) : ScriptClass(scriptObj) , bs(new BinaryStream) { } BinaryStream* get() { return bs; } void set(BinaryStream* pkt) { bs = pkt; }; static Local newBinaryStream(); static BinaryStreamClass* constructor(const Arguments& args); Local getAndReleaseData(); Local reset(); Local reserve(const Arguments& args); Local writeBool(const Arguments& args); Local writeByte(const Arguments& args); Local writeDouble(const Arguments& args); Local writeFloat(const Arguments& args); Local writeSignedBigEndianInt(const Arguments& args); Local writeSignedInt(const Arguments& args); Local writeSignedInt64(const Arguments& args); Local writeSignedShort(const Arguments& args); Local writeString(const Arguments& args); Local writeUnsignedChar(const Arguments& args); Local writeUnsignedInt(const Arguments& args); Local writeUnsignedInt64(const Arguments& args); Local writeUnsignedShort(const Arguments& args); Local writeUnsignedVarInt(const Arguments& args); Local writeUnsignedVarInt64(const Arguments& args); Local writeVarInt(const Arguments& args); Local writeVarInt64(const Arguments& args); Local writeVec3(const Arguments& args); Local writeCompoundTag(const Arguments& args); Local createPacket(const Arguments& args); }; extern ClassDefine BinaryStreamClassBuilder;