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, PLAYER_UPDATE = 12,
//map data //map data
REGION_CONTENT = 13, REGION_REQUEST = 13,
REGION_CONTENT = 14,
}; };
//metadata on the packet itself //metadata on the packet itself
@@ -102,10 +103,11 @@ union NetworkPacket {
}playerInfo; }playerInfo;
//map data //map data
struct MapInformation { struct RegionInformation {
Metadata meta; Metadata meta;
int x, y;
Region* region; Region* region;
}mapInfo; }regionInfo;
//defaults //defaults
NetworkPacket() { NetworkPacket() {
@@ -116,6 +118,10 @@ union NetworkPacket {
#pragma pack(pop) #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)) #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 #endif
+35 -9
View File
@@ -76,11 +76,7 @@ void serializePlayer(NetworkPacket* packet, char* buffer) {
memcpy(buffer, &packet->playerInfo.motion.y, sizeof(double)); memcpy(buffer, &packet->playerInfo.motion.y, sizeof(double));
} }
void serializeRegion(NetworkPacket* packet, char* buffer) { void serializeRegionContent(NetworkPacket* packet, char* buffer) {
// cout << "serializeRegion" << endl;
memcpy(buffer, &packet->meta.type, sizeof(NetworkPacket::Type));
buffer += sizeof(NetworkPacket::Type);
//TODO: incomplete //TODO: incomplete
/* for (register int i = 0; i < packet->mapInfo.region->GetWidth(); i++) { /* for (register int i = 0; i < packet->mapInfo.region->GetWidth(); i++) {
for (register int j = 0; j < packet->mapInfo.region->GetHeight(); j++) { 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 //internal deserialization functions
//------------------------- //-------------------------
@@ -142,12 +154,24 @@ void deserializePlayer(NetworkPacket* packet, char* buffer) {
memcpy(&packet->playerInfo.motion.y, buffer, sizeof(double)); memcpy(&packet->playerInfo.motion.y, buffer, sizeof(double));
} }
void deserializeRegionContent(NetworkPacket* packet, char* buffer) {
//TODO
}
void deserializeRegion(NetworkPacket* packet, char* buffer) { void deserializeRegion(NetworkPacket* packet, char* buffer) {
// cout << "deserializeRegion" << endl; // cout << "deserializeRegion" << endl;
memcpy(&packet->meta.type, buffer, sizeof(NetworkPacket::Type)); memcpy(&packet->meta.type, buffer, sizeof(NetworkPacket::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)); serializePlayer(packet, reinterpret_cast<char*>(buffer));
break; break;
//map info //region info
case NetworkPacket::Type::REGION_REQUEST:
case NetworkPacket::Type::REGION_CONTENT: case NetworkPacket::Type::REGION_CONTENT:
serializeRegion(packet, reinterpret_cast<char*>(buffer)); serializeRegion(packet, reinterpret_cast<char*>(buffer));
break; break;
@@ -207,7 +232,7 @@ void deserialize(NetworkPacket* packet, void* buffer) {
case NetworkPacket::Type::BROADCAST_REQUEST: case NetworkPacket::Type::BROADCAST_REQUEST:
case NetworkPacket::Type::JOIN_REQUEST: case NetworkPacket::Type::JOIN_REQUEST:
case NetworkPacket::Type::SYNCHRONIZE: case NetworkPacket::Type::SYNCHRONIZE:
// //NOTHING
break; break;
//Server info //Server info
@@ -230,8 +255,9 @@ void deserialize(NetworkPacket* packet, void* buffer) {
break; break;
//map info //map info
case NetworkPacket::Type::REGION_REQUEST:
case NetworkPacket::Type::REGION_CONTENT: case NetworkPacket::Type::REGION_CONTENT:
serializeRegion(packet, reinterpret_cast<char*>(buffer)); deserializeRegion(packet, reinterpret_cast<char*>(buffer));
break; break;
} }
// for (int i = 0; i < sizeof(NetworkPacket); i++) { // for (int i = 0; i < sizeof(NetworkPacket); i++) {