à tester
This commit is contained in:
@@ -114,45 +114,49 @@ int Server::Ready() {
|
||||
str.append(inet_ntop(AF_INET, &sockad.sin_addr, strbuf, strbuflen)).append(": ").append(std::to_string(sockad.sin_port));
|
||||
|
||||
if (recv(sock, buf, buflen, 0) > 0) {
|
||||
netprot::LoginInfo* log;
|
||||
netprot::PlayerInfo play;
|
||||
LoginInfo* log;
|
||||
PlayerInfo play;
|
||||
|
||||
netprot::Packet pck = netprot::getPack(buf, buflen);
|
||||
if (pck.type != netprot::PACKET_TYPE::LOGINF) {
|
||||
if (pck.type != netprot::PACKET_TYPE::ERR)
|
||||
netprot::emptyPack(pck);
|
||||
continue;
|
||||
Packet pck = getPack(buf, buflen);
|
||||
if (pck.type != PACKET_TYPE::LOGINF) {
|
||||
Log("Paquet invalide.", true, false);
|
||||
if (pck.type != PACKET_TYPE::ERR)
|
||||
emptyPack(pck);
|
||||
continue; // Passer au prochain appel si c'est pas un LoginInfo ou un LoginInfo invalide qui rentre.
|
||||
}
|
||||
log = (netprot::LoginInfo*)pck.ptr;
|
||||
log = (LoginInfo*)pck.ptr;
|
||||
|
||||
log->sid = getUniqueId();
|
||||
log->tid = 0;
|
||||
|
||||
str.append(" Nom: ").append(log->name);
|
||||
Log(str, false, false);
|
||||
str = "";
|
||||
Log(str.append(" Nom: ").append(log->name), false, false);
|
||||
str.clear();
|
||||
|
||||
str.append(log->name).append(" SID: [").append(std::to_string(log->sid).append("]"));
|
||||
Log(str, false, false);
|
||||
|
||||
netprot::sendPack<netprot::LoginInfo>(sock, log, &buf, &buflen);
|
||||
Log(str.append(log->name).append(" SID: [").append(std::to_string(log->sid).append("]")), false, false);
|
||||
|
||||
sendPack<LoginInfo>(sock, log, &buf, &buflen);
|
||||
|
||||
play.id = getUniqueId();
|
||||
memcpy(play.name, log->name, std::strlen(log->name) + 1);
|
||||
strcpy_s(play.name, log->name);
|
||||
|
||||
play.tid = log->tid;
|
||||
|
||||
netprot::sendPack<netprot::GameInfo>(sock, &m_game, &buf, &buflen);
|
||||
sendPack<GameInfo>(sock, &m_game, &buf, &buflen);
|
||||
Connection* conn = new Connection(sock, sockad, *log, play);
|
||||
|
||||
// TODO: Envoyer les infos de joueur distant aux joueurs d<>j<EFBFBD> connect<63>s
|
||||
// et envoyer les infos des joueurs distants au nouveau joueur.
|
||||
for (auto& player : m_players) {
|
||||
sendPack<PlayerInfo>(player.second->getSock(), &play, &buf, &buflen); // Envoyer les infos de joueur distant aux joueurs d<>j<EFBFBD> connect<63>s
|
||||
buflen = BUFFER_LENGTH;
|
||||
sendPack<PlayerInfo>(sock, player.second->getInfo(), &buf, &buflen); // et envoyer les infos des joueurs distants au nouveau joueur.
|
||||
buflen = BUFFER_LENGTH;
|
||||
}
|
||||
|
||||
m_players[log->sid] = conn;
|
||||
|
||||
delete log; // le pck va se supprimer tout seul, mais le pointer du log qui vient de lui, non.
|
||||
|
||||
if (++nbrconn >= nbrjoueurs)
|
||||
readystart = true;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -166,12 +170,12 @@ void Server::Run() {
|
||||
sockaddr_in sockad;
|
||||
int socklen = sizeof(sockad);
|
||||
|
||||
Log("Partie en cours...", false, false);
|
||||
Log("Debut de la partie...", false, false);
|
||||
|
||||
for (auto& conn : m_players) // G<>rer le point de spawn des joueurs.
|
||||
conn.second->player = new Player(Vector3f(64., 128., 64.));
|
||||
|
||||
// TODO: Faire un premier sync pour que le joueur parte <20> la bonne place.
|
||||
// TODO: Faire un premier sync pour que les joueurs partent <20> la bonne place.
|
||||
|
||||
while (true) {
|
||||
if (recvfrom(m_sock_udp, buf, BUFFER_LENGTH, 0, (sockaddr*)&sockad, &socklen) > 0) {
|
||||
|
Reference in New Issue
Block a user