#define ENET_IMPLEMENTATION #include "common/enet/enet.h" #include "common/network/Packet.h" Packet::Packet(ENetPacket* packet) : packet(packet), readIndex(0), error(false) { } Packet::~Packet() { enet_packet_destroy(packet); } bool Packet::hasData() const { return readIndex < static_cast(packet->dataLength); } bool Packet::hasError() const { return error; } void Packet::read(void* buffer, int length) { if(readIndex + length > static_cast(packet->dataLength)) { error = true; return; } memcpy(buffer, packet->data + readIndex, length); readIndex += length; } Packet::int8 Packet::read8() { int8 uc; read(&uc, sizeof (int8)); return uc; } Packet::int16 Packet::read16() { int16 us; read(&us, sizeof (int16)); us = ntohs(us); return us; } Packet::int32 Packet::read32() { int32 ui; read(&ui, sizeof (int32)); ui = ntohl(ui); return ui; }