当前位置: 首页>>代码示例>>C++>>正文


C++ DataBuffer::ReadChar方法代码示例

本文整理汇总了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;
		}
	}
}
开发者ID:SharkDX,项目名称:PenguinBasket,代码行数:63,代码来源:Server.cpp


注:本文中的DataBuffer::ReadChar方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。