I'm having trouble with the sequence of events

This commit is contained in:
Kayne Ruse
2014-03-26 00:30:10 +11:00
parent e4bfbfb906
commit 47684380a9
2 changed files with 44 additions and 12 deletions
+9 -3
View File
@@ -66,7 +66,8 @@ union NetworkPacket {
PLAYER_UPDATE = 12,
//map data
REGION_CONTENT = 13,
REGION_REQUEST = 13,
REGION_CONTENT = 14,
};
//metadata on the packet itself
@@ -102,10 +103,11 @@ union NetworkPacket {
}playerInfo;
//map data
struct MapInformation {
struct RegionInformation {
Metadata meta;
int x, y;
Region* region;
}mapInfo;
}regionInfo;
//defaults
NetworkPacket() {
@@ -116,6 +118,10 @@ union NetworkPacket {
#pragma pack(pop)
/* content: width * height * depth * sizoeof(type)
* map size: sizeof(int) * 2
* metadata: sizeof(metadata)
*/
#define PACKET_BUFFER_SIZE std::max(sizeof(NetworkPacket), REGION_WIDTH * REGION_HEIGHT * REGION_DEPTH * sizeof(Region::type_t) + sizeof(int) * 2 + sizeof(NetworkPacket::Metadata))
#endif
+35 -9
View File
@@ -76,11 +76,7 @@ void serializePlayer(NetworkPacket* packet, char* buffer) {
memcpy(buffer, &packet->playerInfo.motion.y, sizeof(double));
}
void serializeRegion(NetworkPacket* packet, char* buffer) {
// cout << "serializeRegion" << endl;
memcpy(buffer, &packet->meta.type, sizeof(NetworkPacket::Type));
buffer += sizeof(NetworkPacket::Type);
void serializeRegionContent(NetworkPacket* packet, char* buffer) {
//TODO: incomplete
/* for (register int i = 0; i < packet->mapInfo.region->GetWidth(); i++) {
for (register int j = 0; j < packet->mapInfo.region->GetHeight(); j++) {
@@ -92,6 +88,22 @@ void serializeRegion(NetworkPacket* packet, char* buffer) {
}*/
}
void serializeRegion(NetworkPacket* packet, char* buffer) {
// cout << "serializeRegion" << endl;
memcpy(buffer, &packet->meta.type, sizeof(NetworkPacket::Type));
buffer += sizeof(NetworkPacket::Type);
//x & y
memcpy(buffer, &packet->regionInfo.x, sizeof(int));
buffer += sizeof(int);
memcpy(buffer, &packet->regionInfo.y, sizeof(int));
buffer += sizeof(int);
if (packet->meta.type == NetworkPacket::Type::REGION_CONTENT) {
serializeRegionContent(packet, buffer);
}
}
//-------------------------
//internal deserialization functions
//-------------------------
@@ -142,12 +154,24 @@ void deserializePlayer(NetworkPacket* packet, char* buffer) {
memcpy(&packet->playerInfo.motion.y, buffer, sizeof(double));
}
void deserializeRegionContent(NetworkPacket* packet, char* buffer) {
//TODO
}
void deserializeRegion(NetworkPacket* packet, char* buffer) {
// cout << "deserializeRegion" << endl;
memcpy(&packet->meta.type, buffer, sizeof(NetworkPacket::Type));
buffer += sizeof(NetworkPacket::Type);
//TODO
//x & y
memcpy(&packet->regionInfo.x, buffer, sizeof(int));
buffer += sizeof(int);
memcpy(&packet->regionInfo.y, buffer, sizeof(int));
buffer += sizeof(int);
if (packet->meta.type == NetworkPacket::Type::REGION_CONTENT) {
deserializeRegionContent(packet, buffer);
}
}
//-------------------------
@@ -185,7 +209,8 @@ void serialize(NetworkPacket* packet, void* buffer) {
serializePlayer(packet, reinterpret_cast<char*>(buffer));
break;
//map info
//region info
case NetworkPacket::Type::REGION_REQUEST:
case NetworkPacket::Type::REGION_CONTENT:
serializeRegion(packet, reinterpret_cast<char*>(buffer));
break;
@@ -207,7 +232,7 @@ void deserialize(NetworkPacket* packet, void* buffer) {
case NetworkPacket::Type::BROADCAST_REQUEST:
case NetworkPacket::Type::JOIN_REQUEST:
case NetworkPacket::Type::SYNCHRONIZE:
//
//NOTHING
break;
//Server info
@@ -230,8 +255,9 @@ void deserialize(NetworkPacket* packet, void* buffer) {
break;
//map info
case NetworkPacket::Type::REGION_REQUEST:
case NetworkPacket::Type::REGION_CONTENT:
serializeRegion(packet, reinterpret_cast<char*>(buffer));
deserializeRegion(packet, reinterpret_cast<char*>(buffer));
break;
}
// for (int i = 0; i < sizeof(NetworkPacket); i++) {