Redressage des classes; seed est reçue du serveur
This commit is contained in:
@@ -23,7 +23,7 @@ void netprot::Serialize(LoginInfo* linfo, char* buf[], uint32_t* buflen) {
|
||||
|
||||
memcpy(*buf + 1, &linfo->name, namesize);
|
||||
uint64_t sid = linfo->sid;
|
||||
uint8_t diff[sizeof(uint64_t)] = {
|
||||
uint8_t sid8[sizeof(uint64_t)] = {
|
||||
(sid >> 56) & 0xFF,
|
||||
(sid >> 48) & 0xFF,
|
||||
(sid >> 40) & 0xFF,
|
||||
@@ -34,13 +34,23 @@ void netprot::Serialize(LoginInfo* linfo, char* buf[], uint32_t* buflen) {
|
||||
sid & 0xFF
|
||||
};
|
||||
|
||||
memcpy(*buf + namesize + 2, diff, sizeof(uint64_t));
|
||||
memcpy(*buf + namesize + 2, sid8, sizeof(uint64_t));
|
||||
|
||||
*buflen = namesize + sizeof(uint64_t) + 2;
|
||||
}
|
||||
uint64_t tid = linfo->tid;
|
||||
uint8_t tid8[sizeof(uint64_t)] = {
|
||||
(tid >> 56) & 0xFF,
|
||||
(tid >> 48) & 0xFF,
|
||||
(tid >> 40) & 0xFF,
|
||||
(tid >> 32) & 0xFF,
|
||||
(tid >> 24) & 0xFF,
|
||||
(tid >> 16) & 0xFF,
|
||||
(tid >> 8) & 0xFF,
|
||||
tid & 0xFF
|
||||
};
|
||||
|
||||
void netprot::Serialize(SelfInfo* sinfo, char* buf[], uint32_t* buflen) {
|
||||
memcpy(*buf + namesize + 2 + sizeof(uint64_t), tid8, sizeof(uint64_t));
|
||||
|
||||
*buflen = namesize + sizeof(uint64_t) * 2 + 2;
|
||||
}
|
||||
|
||||
void netprot::Serialize(PlayerInfo* pinfo, char* buf[], uint32_t* buflen) {
|
||||
@@ -48,7 +58,51 @@ void netprot::Serialize(PlayerInfo* pinfo, char* buf[], uint32_t* buflen) {
|
||||
}
|
||||
|
||||
void netprot::Serialize(GameInfo* ginfo, char* buf[], uint32_t* buflen) {
|
||||
*buf[0] = netprot::PACKET_TYPE::GAMEINFO;
|
||||
|
||||
uint64_t game = ginfo->seed;
|
||||
uint8_t seed8[sizeof(uint64_t)] = {
|
||||
(game >> 56) & 0xFF,
|
||||
(game >> 48) & 0xFF,
|
||||
(game >> 40) & 0xFF,
|
||||
(game >> 32) & 0xFF,
|
||||
(game >> 24) & 0xFF,
|
||||
(game >> 16) & 0xFF,
|
||||
(game >> 8) & 0xFF,
|
||||
game & 0xFF
|
||||
};
|
||||
|
||||
memcpy(*buf + 1, seed8, sizeof(uint64_t));
|
||||
|
||||
game = ginfo->countdown;
|
||||
uint8_t count8[sizeof(uint64_t)] = {
|
||||
(game >> 56) & 0xFF,
|
||||
(game >> 48) & 0xFF,
|
||||
(game >> 40) & 0xFF,
|
||||
(game >> 32) & 0xFF,
|
||||
(game >> 24) & 0xFF,
|
||||
(game >> 16) & 0xFF,
|
||||
(game >> 8) & 0xFF,
|
||||
game & 0xFF
|
||||
};
|
||||
|
||||
memcpy(*buf + sizeof(uint64_t) + 1, count8, sizeof(uint64_t));
|
||||
|
||||
game = ginfo->countdown;
|
||||
uint8_t gtype8[sizeof(uint64_t)] = {
|
||||
(game >> 56) & 0xFF,
|
||||
(game >> 48) & 0xFF,
|
||||
(game >> 40) & 0xFF,
|
||||
(game >> 32) & 0xFF,
|
||||
(game >> 24) & 0xFF,
|
||||
(game >> 16) & 0xFF,
|
||||
(game >> 8) & 0xFF,
|
||||
game & 0xFF
|
||||
};
|
||||
|
||||
memcpy(*buf + sizeof(uint64_t) + 1, gtype8, sizeof(uint64_t));
|
||||
|
||||
*buflen = sizeof(uint64_t) * 3 + 1;
|
||||
}
|
||||
|
||||
void netprot::Serialize(Chat* chat, char* buf[], uint32_t* buflen) {
|
||||
@@ -100,11 +154,18 @@ bool netprot::Deserialize(LoginInfo* linfo, char* buf, const uint32_t buflen) {
|
||||
(uint64_t)diff[6] << 8 |
|
||||
(uint64_t)diff[7];
|
||||
|
||||
return true;
|
||||
}
|
||||
memcpy(diff, &buf[namesize + sizeof(uint64_t) + 1], sizeof(uint64_t));
|
||||
linfo->tid =
|
||||
(uint64_t)diff[0] << 56 |
|
||||
(uint64_t)diff[1] << 48 |
|
||||
(uint64_t)diff[2] << 40 |
|
||||
(uint64_t)diff[3] << 32 |
|
||||
(uint64_t)diff[4] << 24 |
|
||||
(uint64_t)diff[5] << 16 |
|
||||
(uint64_t)diff[6] << 8 |
|
||||
(uint64_t)diff[7];
|
||||
|
||||
bool netprot::Deserialize(SelfInfo* sinfo, char* buf, const uint32_t buflen) {
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool netprot::Deserialize(PlayerInfo* pinfo, char* buf, const uint32_t buflen) {
|
||||
@@ -112,7 +173,44 @@ bool netprot::Deserialize(PlayerInfo* pinfo, char* buf, const uint32_t buflen) {
|
||||
}
|
||||
|
||||
bool netprot::Deserialize(GameInfo* ginfo, char* buf, const uint32_t buflen) {
|
||||
return false;
|
||||
if (buflen < sizeof(GameInfo) + 1)
|
||||
return false;
|
||||
|
||||
uint8_t diff[sizeof(uint64_t)] = { 0,0,0,0,0,0,0,0 };
|
||||
memcpy(diff, &buf[1], sizeof(uint64_t));
|
||||
ginfo->seed =
|
||||
(uint64_t)diff[0] << 56 |
|
||||
(uint64_t)diff[1] << 48 |
|
||||
(uint64_t)diff[2] << 40 |
|
||||
(uint64_t)diff[3] << 32 |
|
||||
(uint64_t)diff[4] << 24 |
|
||||
(uint64_t)diff[5] << 16 |
|
||||
(uint64_t)diff[6] << 8 |
|
||||
(uint64_t)diff[7];
|
||||
|
||||
memcpy(diff, &buf[sizeof(uint64_t) + 1], sizeof(uint64_t));
|
||||
ginfo->countdown =
|
||||
(uint64_t)diff[0] << 56 |
|
||||
(uint64_t)diff[1] << 48 |
|
||||
(uint64_t)diff[2] << 40 |
|
||||
(uint64_t)diff[3] << 32 |
|
||||
(uint64_t)diff[4] << 24 |
|
||||
(uint64_t)diff[5] << 16 |
|
||||
(uint64_t)diff[6] << 8 |
|
||||
(uint64_t)diff[7];
|
||||
|
||||
memcpy(diff, &buf[sizeof(uint64_t) * 2 + 1], sizeof(uint64_t));
|
||||
ginfo->gameType =
|
||||
(uint64_t)diff[0] << 56 |
|
||||
(uint64_t)diff[1] << 48 |
|
||||
(uint64_t)diff[2] << 40 |
|
||||
(uint64_t)diff[3] << 32 |
|
||||
(uint64_t)diff[4] << 24 |
|
||||
(uint64_t)diff[5] << 16 |
|
||||
(uint64_t)diff[6] << 8 |
|
||||
(uint64_t)diff[7];
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool netprot::Deserialize(Chat* chat, char* buf, const uint32_t buflen) {
|
||||
|
Reference in New Issue
Block a user