1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
| void Serveur::traitePacket2()
{
/// /////////////////////////////////////////////////////////////////
/// Packet de connection de persos ///
/// /////////////////////////////////////////////////////////////////
//sf::Lock Lock(mutex);
sf::Packet packetAenvoyer;
recognized = false; // On précise au serveur que le joueur n'a pas encore été reconnu.
information->append("Test de reconnaissance du joueur dans la bdd.");
/// Re-sélection des données de la table
model->setTable("joueur");
model->select();
/// //// Test de reconnaissance du cochon dans la bdd //// ///
for(int i = 0; i < model->rowCount(); i++)
{
QSqlRecord record;
record = model->record(i); /// Lecture de la ligne i.
/// Comparaison des noms ///
information->append(QString::fromStdString(joueurTest.nomJoueur));
information->append(record.value(1).toString());
information->append(QString::fromStdString(mdp));
information->append(record.value(2).toString());
/// ////////////////////////
if((joueurTest.nomJoueur == record.value(1).toString().toStdString()) && (mdp == record.value(2).toString().toStdString()))
{
nbBDD = i;
recognized = true;
}
}
/// //////////////////////////////////////////////////////////
information->append("Recherche du client dans le serveur à qui renvoyer une réponse, positive ou négative.");
/// ////// Recherche du client qui a envoyé la requête ////// ///
for (int b = 0; b < nbJoueurs; b++)
{
information->append(QString::fromStdString(client[b].adresseClient.ToString()));
information->append(QString::fromStdString(joueurTest.adresse));
if(joueurTest.adresse == client[b].adresseClient.ToString())
{
nbClient = b;
foundAdresse = true; // On l'a reconnu, on termine la boucle.
}
}
/// /////////////////////////////////////////////////////////////
if (recognized == true) /// Si le cochon a été reconnu dans la BDD
{
QSqlRecord recordBis;
recordBis = model->record(nbBDD); /// Lecture de la ligne nbBDD, correspondante au joueur reconnu.
if(recordBis.value(3).toString().toStdString() == "Connect") /// Si le joueur en question est déjà entrain de jouer.
{
information->append("Un client a essayé d'utiliser un compte déjà connecté !");
packetAenvoyer << 7 << true << false << joueurTest.vie << joueurTest.nomJoueur << joueurTest.position.x << joueurTest.position.y
<< joueurTest.nbFrameCurrent << joueurTest.angle << joueurTest.nbVictoire << joueurTest.nbDefaite << joueurTest.numPartie;
client[nbClient].socketClient.Send(packetAenvoyer);
}
else /// Sinon, si le joueur n'est pas entrain de jouer.
{
packetAenvoyer << 2 << true << false << joueurTest.vie << joueurTest.nomJoueur << joueurTest.position.x << joueurTest.position.y
<< joueurTest.nbFrameCurrent << joueurTest.angle << joueurTest.nbVictoire << joueurTest.nbDefaite << joueurTest.numPartie;
if (foundAdresse == false)
{
information->append("Un client s'est déconnecté en pleine tentative de connection =/");
}
else /// Sinon, si on l'a trouvé, on lui envoie le packet pour lui annoncer q'il est connecté ! ///
{
information->append("Un joueur s'est connecté !");
model->setTable("joueur");
model->select();
model->setData(model->index(nbR2, 3), QString::fromStdString("Connect")); // On met le joueur dans son état "playing".
model->submitAll();
oss.str("");
oss << nbBDD;
information->append(QString::fromStdString(oss.str()));
/// Initialisation du nom du client.
client[nbClient].nomClient = joueurTest.nomJoueur;
client[nbClient].isChoosing = true; // Le client se retrouve devant le tableau de partie.
client[nbClient].socketClient.Send(packetAenvoyer); // Connection du Joueur.
}
}
foundAdresse = false; // On reinitialise la variable pour le prochain tour de boucle.
}
else
{ /// Si le joueur n'a pas été reconnue
packetAenvoyer << 2 << false << false << joueurTest.vie << joueurTest.nomJoueur << joueurTest.position.x << joueurTest.position.y
<< joueurTest.nbFrameCurrent << joueurTest.angle << joueurTest.nbVictoire << joueurTest.nbDefaite << joueurTest.numPartie; // On annonce la non-connection du joueur.
if (foundAdresse == false)
{
information->append("Un client s'est déconnecté en pleine tentative de connection =/");
}
else // Sinon, si on l'a trouvé, on lui envoie le packet pour lui annoncer ces mauvaises frappes.
{
client[nbClient].socketClient.Send(packetAenvoyer);
}
foundAdresse = false; // On reinitialise la variable pour le prochain tour de boucle.
}
} /// /// Fin de la fonction du traitement du packet de connection /// /// |
Partager