Files
2025-12-06 16:42:21 +08:00

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;
}