I'm having trouble with the sequence of events
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user