#ifndef NET_MINECRAFT_NETWORK_PACKET__LoginPacket_H__ #define NET_MINECRAFT_NETWORK_PACKET__LoginPacket_H__ #include "../Packet.h" class LoginPacket : public Packet { public: RakNet::RakString clientName; int clientNetworkVersion; int clientNetworkLowestSupportedVersion; bool newProto; LoginPacket() : clientNetworkVersion(-1), clientNetworkLowestSupportedVersion(-1), newProto(false) { } LoginPacket(const RakNet::RakString& clientName, int clientVersion, bool newProto) : clientName(clientName), clientNetworkVersion(clientVersion), clientNetworkLowestSupportedVersion(clientVersion), newProto(newProto) { } void write(RakNet::BitStream* bitStream) { bitStream->Write((RakNet::MessageID)(ID_USER_PACKET_ENUM + PACKET_LOGIN)); bitStream->Write(clientName); bitStream->Write(clientNetworkVersion); bitStream->Write(clientNetworkLowestSupportedVersion); bitStream->Write(newProto); } void read(RakNet::BitStream* bitStream) { bitStream->Read(clientName); // First versions didn't send the client version //LOGI("unread: %d\n", bitStream->GetNumberOfUnreadBits()); if (bitStream->GetNumberOfUnreadBits() > 0) { bitStream->Read(clientNetworkVersion); bitStream->Read(clientNetworkLowestSupportedVersion); // Checking for new proto if (bitStream->GetNumberOfUnreadBits() > 0) { bitStream->Read(newProto); } } } void handle(const RakNet::RakNetGUID& source, NetEventCallback* callback) { callback->handle(source, (LoginPacket*)this); } }; #endif /*NET_MINECRAFT_NETWORK_PACKET__LoginPacket_H__*/