69 lines
1.6 KiB
C++
69 lines
1.6 KiB
C++
#include "GameProto.h"
|
|
#include "GameProto.pb.h"
|
|
|
|
void serializeProtoMessage(uint16_t id, ::google::protobuf::Message* message, cyclone::Packet& outputPacket)
|
|
{
|
|
uint16_t messageSize = static_cast<uint16_t>(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;
|
|
} |