QTfrontend/net/newnetclient.cpp
changeset 7565 00568d3054d0
parent 7545 063601290761
child 7683 993337e5021f
--- a/QTfrontend/net/newnetclient.cpp	Sun Aug 12 23:05:15 2012 +0400
+++ b/QTfrontend/net/newnetclient.cpp	Sun Aug 19 22:13:41 2012 +0400
@@ -507,8 +507,32 @@
         return;
     }
 
+    if(netClientState == InLobby && lst[0] == "JOINED")
+    {
+        if(lst.size() < 2 || lst[1] != mynick)
+        {
+            qWarning("Net: Bad JOINED message");
+            return;
+        }
 
-    if(netClientState == InRoom)
+        for(int i = 1; i < lst.size(); ++i)
+        {
+            if (lst[i] == mynick)
+            {
+                netClientState = InRoom;
+                emit EnteredGame();
+                emit roomMaster(isChief);
+                if (isChief)
+                    emit configAsked();
+            }
+
+            emit nickAdded(lst[i], isChief && (lst[i] != mynick));
+            emit chatStringFromNet(tr("%1 *** %2 has joined the room").arg('\x03').arg(lst[i]));
+        }
+        return;
+    }
+
+    if(netClientState == InRoom || netClientState == InGame)
     {
         if (lst[0] == "EM")
         {
@@ -628,15 +652,6 @@
 
             for(int i = 1; i < lst.size(); ++i)
             {
-                if (lst[i] == mynick)
-                {
-                    netClientState = InRoom;
-                    emit EnteredGame();
-                    emit roomMaster(isChief);
-                    if (isChief)
-                        emit configAsked();
-                }
-
                 emit nickAdded(lst[i], isChief && (lst[i] != mynick));
                 emit chatStringFromNet(tr("%1 *** %2 has joined the room").arg('\x03').arg(lst[i]));
             }