Le seed est pas bon, mais ON A LES DROITS!

This commit is contained in:
MarcEricMartel
2023-10-31 14:38:30 -04:00
parent eb7116bac8
commit 54307b7c17
4 changed files with 245 additions and 214 deletions

View File

@@ -71,42 +71,46 @@ int Connector::Connect(const char* srv_addr, std::string name) {
bool ready = false;
int errors = 0;
std::vector<netprot::Packet> lsPck;
std::vector<char*> lsPck;
while (!ready) {
lsPck = netprot::recvPacks(m_sock_tcp, &bf);
for (auto& pck : lsPck) {
bool bypass_delete = false;
uint32_t bsize = bf.len - (pck - bf.ptr);
netprot::PlayerInfo* pl = nullptr;
switch (pck.type) {
switch (netprot::getType(pck, 1)) {
using enum netprot::PACKET_TYPE;
case LOGINF:
m_loginfo = netprot::LoginInfo((netprot::LoginInfo*)pck.ptr);
if (!netprot::Deserialize(&m_loginfo, pck, &bsize))
++errors;
break;
case GAMEINFO:
m_gameinfo = netprot::GameInfo((netprot::GameInfo*)pck.ptr);
if (!netprot::Deserialize(&m_gameinfo, pck, &bsize))
++errors;
break;
case PLAYINF:
pl = (netprot::PlayerInfo*)pck.ptr;
m_players[pl->id] = pl;
bypass_delete = true;
pl = new netprot::PlayerInfo();
if (!netprot::Deserialize(pl, pck, &bsize))
++errors;
else m_players[pl->id] = pl;
break;
case TEAMINF:
// TODO: Faire dequoi avec TeamInfo si on fini par avoir des teams.
break;
case SYNC:
m_origin = netprot::Sync((netprot::Sync*)pck.ptr);
if (!netprot::Deserialize(&m_origin, pck, &bsize))
++errors;
ready = true;
break;
default:
errors++;
break;
}
if (!bypass_delete)
netprot::emptyPack(pck);
}
if (lsPck.empty())
errors++;
lsPck.clear();
if (errors > 100)
if (errors > 1000000)
return 4;
}
return 0;