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 } |
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; |