本文整理汇总了C++中DataBuffer::ReadChar方法的典型用法代码示例。如果您正苦于以下问题:C++ DataBuffer::ReadChar方法的具体用法?C++ DataBuffer::ReadChar怎么用?C++ DataBuffer::ReadChar使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DataBuffer
的用法示例。
在下文中一共展示了DataBuffer::ReadChar方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ProcessPacket
void Server::ProcessPacket(ENetPacket* packet, ENetPeer* peer)
{
//TOOD Need to change it to a more effienct method like in the client.
//TODO Maybe move the server related logic to handle here before assign the packets to the client?
unsigned char header = packet->data[0];
Client* client = (Client*)peer->data;
DataBuffer dataBuffer = DataBuffer(((char*)packet->data + 1), packet->dataLength - 1);
switch (header)
{
case PACKET_HAND_SHAKE:
{
int protocolVersion = 0;
memcpy(&protocolVersion, &packet->data[1], sizeof(int));
client->QueueIncomingPacket(std::shared_ptr<Packet>(new PacketHandshake(protocolVersion, (short)client->GetPlayerID())));
break;
}
case PACKET_PING:
{
client->SendPacket(std::shared_ptr<Packet>(new PacketPing()));
break;
}
case PACKET_PLAYER_POSITION:
{
short playerID = 0;
memcpy(&playerID, &packet->data[1], sizeof(short));
float posX = 0;
memcpy(&posX, &packet->data[3], sizeof(float));
float posY = 0;
memcpy(&posY, &packet->data[7], sizeof(float));
float velX = 0;
memcpy(&velX, &packet->data[11], sizeof(float));
float velY = 0;
memcpy(&velY, &packet->data[15], sizeof(float));
//Logger::Print("%d, %f, %f", playerID, posX, posY);
client->QueueIncomingPacket(std::make_shared<PacketPlayerPosition>(playerID, posX, posY, velX, velY));
break;
}
case PACKET_CREATE_BLOCK:
{
char blockID = dataBuffer.ReadChar();
short chunkPos = dataBuffer.ReadShort(); //TODO Use that when the engine will run on chunks
short posX = dataBuffer.ReadShort();
short posY = dataBuffer.ReadShort();
client->QueueIncomingPacket(std::make_shared<PacketCreateBlock>(blockID, chunkPos, posX, posY));
break;
}
case PACKET_DESTROY_BLOCK:
{
short chunkPos = dataBuffer.ReadShort(); //TODO Use that when the engine will run on chunks
short posX = dataBuffer.ReadShort();
short posY = dataBuffer.ReadShort();
client->QueueIncomingPacket(std::make_shared<PacketDestroyBlock>(chunkPos, posX, posY));
break;
}
}
}