QTfrontend/net/newnetclient.cpp
changeset 7687 c73fd8cfa7c0
parent 7684 db140521d102
child 7710 fd5bcbd698a5
equal deleted inserted replaced
7613:ce6ead3327b2 7687:c73fd8cfa7c0
   355             return;
   355             return;
   356         }
   356         }
   357 
   357 
   358         QString flags = lst[1];
   358         QString flags = lst[1];
   359         bool setFlag = flags[0] == '+';
   359         bool setFlag = flags[0] == '+';
       
   360         const QStringList nicks = lst.mid(2);
   360 
   361 
   361         while(flags.size() > 1)
   362         while(flags.size() > 1)
   362         {
   363         {
   363             flags.remove(0, 1);
   364             flags.remove(0, 1);
   364             char c = flags[0].toAscii();
   365             char c = flags[0].toAscii();
   365 
   366 
   366             switch(c)
   367             switch(c)
   367             {
   368             {
       
   369                 // flag indicating if a player is ready to start a game
   368                 case 'r':
   370                 case 'r':
   369                 {
   371                         foreach (const QString & nick, nicks)
   370                     for(int i = 2; i < lst.size(); ++i)
       
   371                     {
       
   372                         if (lst[i] == mynick)
       
   373                         {
   372                         {
   374                             if (isChief && !setFlag) ToggleReady();
   373                             if (nick == mynick)
   375                             else emit setMyReadyStatus(setFlag);
   374                             {
       
   375                                 if (isChief && !setFlag) ToggleReady();
       
   376                                 else emit setMyReadyStatus(setFlag);
       
   377                             }
       
   378                             emit setReadyStatus(nick, setFlag);
   376                         }
   379                         }
   377 
   380                         break;
   378                         emit setReadyStatus(lst[i], setFlag);
   381 
   379                     }
   382                 // flag indicating if a player is a registered user
   380                 }
   383                 case 'u':
       
   384                         emit setRegisteredStatus(nicks, setFlag);
       
   385                         break;
       
   386 
       
   387                 // flag indicating if a player is the host/master of the room
       
   388                 case 'h':
       
   389                         foreach (const QString & nick, nicks)
       
   390                         {
       
   391                             if (nick == mynick)
       
   392                             {
       
   393                                 isChief = setFlag;
       
   394                                 emit roomMaster(isChief);
       
   395                             }
       
   396 
       
   397                             emit setRoomMasterStatus(nick, setFlag);
       
   398                         }
       
   399                         break;
       
   400 
       
   401                 // flag indicating if a player is admin (if so -> worship them!)
       
   402                 case 'a':
       
   403                         foreach (const QString & nick, nicks)
       
   404                         {
       
   405                             if (nick == mynick)
       
   406                                 emit adminAccess(setFlag);
       
   407 
       
   408                             emit setAdminStatus(nick, setFlag);
       
   409                         }
       
   410                         break;
       
   411 
       
   412                 default:
       
   413                         qWarning() << "Net: Unknown client-flag: " << c;
   381             }
   414             }
   382         }
   415         }
   383 
   416 
   384         return;
   417         return;
   385     }
   418     }
   501         return;
   534         return;
   502     }
   535     }
   503 
   536 
   504     if (lst[0] == "ADMIN_ACCESS")
   537     if (lst[0] == "ADMIN_ACCESS")
   505     {
   538     {
   506         emit adminAccess(true);
   539         // obsolete, see +a client flag
   507         return;
   540         return;
   508     }
   541     }
   509 
   542 
   510     if(netClientState == InLobby && lst[0] == "JOINED")
   543     if(netClientState == InLobby && lst[0] == "JOINED")
   511     {
   544     {
   671             else
   704             else
   672                 emit chatStringFromNet(tr("%1 *** %2 has left (%3)").arg('\x03').arg(lst[1], lst[2]));
   705                 emit chatStringFromNet(tr("%1 *** %2 has left (%3)").arg('\x03').arg(lst[1], lst[2]));
   673             return;
   706             return;
   674         }
   707         }
   675 
   708 
       
   709         // obsolete
   676         if (lst[0] == "ROOM_CONTROL_ACCESS")
   710         if (lst[0] == "ROOM_CONTROL_ACCESS")
   677         {
   711         {
   678             if (lst.size() < 2)
   712             if (lst.size() < 2)
   679             {
   713             {
   680                 qWarning("Net: Bad ROOM_CONTROL_ACCESS message");
   714                 qWarning("Net: Bad ROOM_CONTROL_ACCESS message");
   681                 return;
   715                 return;
   682             }
   716             }
   683             isChief = (lst[1] != "0");
       
   684             emit roomMaster(isChief);
       
   685             return;
   717             return;
   686         }
   718         }
   687     }
   719     }
   688 
   720 
   689     qWarning() << "Net: Unknown message or wrong state:" << lst;
   721     qWarning() << "Net: Unknown message or wrong state:" << lst;