#include "GameProto.h" #include "GameProto.pb.h" void serializeProtoMessage(uint16_t id, ::google::protobuf::Message* message, cyclone::Packet& outputPacket) { uint16_t messageSize = static_cast(message->ByteSizeLong()); outputPacket.build_from_memory(GAME_PACKET_HEAD_SIZE, id, messageSize, nullptr); message->SerializeToArray(outputPacket.get_packet_content(), messageSize); } ::google::protobuf::Message* parserProtoMessage(const cyclone::Packet& inputPacket) { uint16_t packetID = inputPacket.get_packet_id(); ::google::protobuf::Message* newMessage = nullptr; switch (packetID) { case GAME_PROTO_LOGIN_REQUEST: newMessage = new Game::LoginRequest(); break; case GAME_PROTO_LOGIN_REPLY: newMessage = new Game::LoginReply(); break; case GAME_PROTO_CLIENT_PACKET: newMessage = new Game::ClientTickPacket(); break; case GAME_PROTO_SERVER_PACKET: newMessage = new Game::ServerTickPacket(); break; case GAME_PROTO_HEART_BEAT: newMessage = new Game::HeartBeat(); break; case GAME_PROTO_UGC_REQUEST: newMessage = new Game::UGCRequest(); break; case GAME_PROTO_UGC_REPLY: newMessage = new Game::UGCReply(); break; case GAME_PROTO_REPORT_REQ: newMessage = new Game::GameReportReq(); break; case GAME_PROTO_REPORT_RES: newMessage = new Game::GameReportRes(); break; case GAME_PROTO_NETBAR_REQ: newMessage = new Game::NetbaraStatusReq(); break; case GAME_PROTO_NETBAR_RES: newMessage = new Game::NetbarStatusRes(); break; default: break; } if (newMessage) { newMessage->ParseFromArray(inputPacket.get_packet_content(), inputPacket.get_packet_size()); } return newMessage; }