/* * Copyright (C) 2010 - 2014 Eluna Lua Engine * This program is free software licensed under GPL version 3 * Please see the included DOCS/LICENSE.md for more information */ #ifndef WORLDPACKETMETHODS_H #define WORLDPACKETMETHODS_H namespace LuaPacket { /** * Returns the opcode of the &WorldPacket. * * @return uint16 opcode */ int GetOpcode(lua_State* L, WorldPacket* packet) { Eluna::Push(L, packet->GetOpcode()); return 1; } /** * Returns the size of the &WorldPacket. * * @return uint32 : size of &WorldPacket */ int GetSize(lua_State* L, WorldPacket* packet) { Eluna::Push(L, packet->size()); return 1; } /** * Sets the opcode of the &WorldPacket by specifying an opcode. * * @param uint32 packet : the packet specified to be set for the &WorldPacket */ int SetOpcode(lua_State* L, WorldPacket* packet) { uint32 opcode = Eluna::CHECKVAL(L, 2); if (opcode >= NUM_MSG_TYPES) return luaL_argerror(L, 2, "valid opcode expected"); packet->SetOpcode((OpcodesList)opcode); return 0; } /** * Reads an int8 value of the &WorldPacket specified. * * @return int8 */ int ReadByte(lua_State* L, WorldPacket* packet) { int8 byte; (*packet) >> byte; Eluna::Push(L, byte); return 1; } /** * Reads a uint8 value of the &WorldPacket specified. * * @return uint8 */ int ReadUByte(lua_State* L, WorldPacket* packet) { uint8 byte; (*packet) >> byte; Eluna::Push(L, byte); return 1; } /** * Reads an int16 value of the &WorldPacket specified. * * @return int16 */ int ReadShort(lua_State* L, WorldPacket* packet) { int16 _short; (*packet) >> _short; Eluna::Push(L, _short); return 1; } /** * Reads a uint16 value of the &WorldPacket specified. * * @return uint16 */ int ReadUShort(lua_State* L, WorldPacket* packet) { uint16 _ushort; (*packet) >> _ushort; Eluna::Push(L, _ushort); return 1; } /** * Reads an int32 value of the &WorldPacket specified. * * @return int32 */ int ReadLong(lua_State* L, WorldPacket* packet) { int32 _long; (*packet) >> _long; Eluna::Push(L, _long); return 1; } /** * Reads a uint32 value of the &WorldPacket specified. * * @return uint32 */ int ReadULong(lua_State* L, WorldPacket* packet) { uint32 _ulong; (*packet) >> _ulong; Eluna::Push(L, _ulong); return 1; } /** * Reads a float value of the &WorldPacket specified. * * @return float */ int ReadFloat(lua_State* L, WorldPacket* packet) { float _val; (*packet) >> _val; Eluna::Push(L, _val); return 1; } /** * Reads a double value of the &WorldPacket specified. * * @return double */ int ReadDouble(lua_State* L, WorldPacket* packet) { double _val; (*packet) >> _val; Eluna::Push(L, _val); return 1; } /** * Reads a uint64 GUID value of the &WorldPacket specified. * * @return uint64 : GUID returned as uint64 */ int ReadGUID(lua_State* L, WorldPacket* packet) { uint64 guid; (*packet) >> guid; Eluna::Push(L, guid); return 1; } /** * Reads a string value of the &WorldPacket specified. * * @return string */ int ReadString(lua_State* L, WorldPacket* packet) { std::string _val; (*packet) >> _val; Eluna::Push(L, _val); return 1; } /** * Writes a uint64 GUID to the &WorldPacket. * * @param uint64 GUID : the GUID to be written to the &WorldPacket */ int WriteGUID(lua_State* L, WorldPacket* packet) { uint64 guid = Eluna::CHECKVAL(L, 2); (*packet) << guid; return 0; } /** * Writes a string to the &WorldPacket. * * @param string : the string to be written to the &WorldPacket */ int WriteString(lua_State* L, WorldPacket* packet) { std::string _val = Eluna::CHECKVAL(L, 2); (*packet) << _val; return 0; } /** * Writes an int8 value to the &WorldPacket. * * @param int8 value : the int8 value to be written to the &WorldPacket */ int WriteByte(lua_State* L, WorldPacket* packet) { int8 byte = Eluna::CHECKVAL(L, 2); (*packet) << byte; return 0; } /** * Writes a uint8 value to the &WorldPacket. * * @param uint8 value : the uint8 value to be written to the &WorldPacket */ int WriteUByte(lua_State* L, WorldPacket* packet) { uint8 byte = Eluna::CHECKVAL(L, 2); (*packet) << byte; return 0; } /** * Writes an int16 value to the &WorldPacket. * * @param int16 value : the int16 value to be written to the &WorldPacket */ int WriteShort(lua_State* L, WorldPacket* packet) { int16 _short = Eluna::CHECKVAL(L, 2); (*packet) << _short; return 0; } /** * Writes a uint16 value to the &WorldPacket. * * @param uint16 value : the uint16 value to be written to the &WorldPacket */ int WriteUShort(lua_State* L, WorldPacket* packet) { uint16 _ushort = Eluna::CHECKVAL(L, 2); (*packet) << _ushort; return 0; } /** * Writes an int32 value to the &WorldPacket. * * @param int32 value : the int32 value to be written to the &WorldPacket */ int WriteLong(lua_State* L, WorldPacket* packet) { int32 _long = Eluna::CHECKVAL(L, 2); (*packet) << _long; return 0; } /** * Writes a uint32 value to the &WorldPacket. * * @param uint32 value : the uint32 value to be written to the &WorldPacket */ int WriteULong(lua_State* L, WorldPacket* packet) { uint32 _ulong = Eluna::CHECKVAL(L, 2); (*packet) << _ulong; return 0; } /** * Writes a float value to the &WorldPacket. * * @param float value : the float value to be written to the &WorldPacket */ int WriteFloat(lua_State* L, WorldPacket* packet) { float _val = Eluna::CHECKVAL(L, 2); (*packet) << _val; return 0; } /** * Writes a double value to the &WorldPacket. * * @param double value : the double value to be written to the &WorldPacket */ int WriteDouble(lua_State* L, WorldPacket* packet) { double _val = Eluna::CHECKVAL(L, 2); (*packet) << _val; return 0; } }; #endif