1 /* |
1 /* |
2 * Hedgewars, a free turn based strategy game |
2 * Hedgewars, a free turn based strategy game |
3 * Copyright (c) 2006-2008 Igor Ulyanov <iulyanov@gmail.com> |
3 * Copyright (c) 2006-2008 Igor Ulyanov <iulyanov@gmail.com> |
4 * Copyright (c) 2004-2012 Andrey Korotaev <unC0Rr@gmail.com> |
4 * Copyright (c) 2004-2013 Andrey Korotaev <unC0Rr@gmail.com> |
5 * |
5 * |
6 * This program is free software; you can redistribute it and/or modify |
6 * This program is free software; you can redistribute it and/or modify |
7 * it under the terms of the GNU General Public License as published by |
7 * it under the terms of the GNU General Public License as published by |
8 * the Free Software Foundation; version 2 of the License |
8 * the Free Software Foundation; version 2 of the License |
9 * |
9 * |
334 if(lst.size() < 3) |
334 if(lst.size() < 3) |
335 { |
335 { |
336 qWarning("Net: Empty CHAT message"); |
336 qWarning("Net: Empty CHAT message"); |
337 return; |
337 return; |
338 } |
338 } |
|
339 |
|
340 QString action = HWProto::chatStringToAction(lst[2]); |
|
341 |
339 if (netClientState == InLobby) |
342 if (netClientState == InLobby) |
340 emit chatStringLobby(lst[1], HWProto::formatChatMsgForFrontend(lst[2])); |
343 { |
|
344 if (action != NULL) |
|
345 emit lobbyChatAction(lst[1], action); |
|
346 else |
|
347 emit lobbyChatMessage(lst[1], lst[2]); |
|
348 } |
341 else |
349 else |
|
350 { |
342 emit chatStringFromNet(HWProto::formatChatMsg(lst[1], lst[2])); |
351 emit chatStringFromNet(HWProto::formatChatMsg(lst[1], lst[2])); |
|
352 if (action != NULL) |
|
353 emit roomChatAction(lst[1], action); |
|
354 else |
|
355 emit roomChatMessage(lst[1], lst[2]); |
|
356 } |
343 return; |
357 return; |
344 } |
358 } |
345 |
359 |
346 if (lst[0] == "INFO") |
360 if (lst[0] == "INFO") |
347 { |
361 { |
348 if(lst.size() < 5) |
362 if(lst.size() < 5) |
349 { |
363 { |
350 qWarning("Net: Malformed INFO message"); |
364 qWarning("Net: Malformed INFO message"); |
351 return; |
365 return; |
352 } |
366 } |
353 QStringList tmp = lst; |
367 emit playerInfo(lst[1], lst[2], lst[3], lst[4]); |
354 tmp.removeFirst(); |
368 if (netClientState != InLobby) |
355 if (netClientState == InLobby) |
369 { |
356 emit chatStringLobby(tmp.join("\n").prepend('\x01')); |
370 QStringList tmp = lst; |
357 else |
371 tmp.removeFirst(); |
358 emit chatStringFromNet(tmp.join("\n").prepend('\x01')); |
372 emit chatStringFromNet(tmp.join(" ").prepend('\x01')); |
|
373 } |
359 return; |
374 return; |
360 } |
375 } |
361 |
376 |
362 if (lst[0] == "SERVER_VARS") |
377 if (lst[0] == "SERVER_VARS") |
363 { |
378 { |
408 if(inRoom) |
423 if(inRoom) |
409 foreach (const QString & nick, nicks) |
424 foreach (const QString & nick, nicks) |
410 { |
425 { |
411 if (nick == mynick) |
426 if (nick == mynick) |
412 { |
427 { |
413 if (isChief && !setFlag) ToggleReady(); |
428 emit setMyReadyStatus(setFlag); |
414 else emit setMyReadyStatus(setFlag); |
|
415 } |
429 } |
416 m_playersModel->setFlag(nick, PlayersListModel::Ready, setFlag); |
430 m_playersModel->setFlag(nick, PlayersListModel::Ready, setFlag); |
417 } |
431 } |
418 break; |
432 break; |
419 |
433 |
488 netClientState = InLobby; |
502 netClientState = InLobby; |
489 RawSendNet(QString("LIST")); |
503 RawSendNet(QString("LIST")); |
490 emit connected(); |
504 emit connected(); |
491 } |
505 } |
492 |
506 |
493 m_playersModel->addPlayer(lst[i]); |
507 m_playersModel->addPlayer(lst[i], false); |
494 emit nickAddedLobby(lst[i], false); |
|
495 emit chatStringLobby(lst[i], tr("%1 *** %2 has joined").arg('\x03').arg("|nick|")); |
|
496 } |
508 } |
497 return; |
509 return; |
498 } |
510 } |
499 |
511 |
500 if(lst[0] == "ROOM" && lst.size() == 10 && lst[1] == "ADD") |
512 if(lst[0] == "ROOM" && lst.size() == 10 && lst[1] == "ADD") |
537 if(lst.size() < 2) |
549 if(lst.size() < 2) |
538 { |
550 { |
539 qWarning("Net: Bad LOBBY:LEFT message"); |
551 qWarning("Net: Bad LOBBY:LEFT message"); |
540 return; |
552 return; |
541 } |
553 } |
542 emit nickRemovedLobby(lst[1]); |
554 |
543 if (lst.size() < 3) |
555 if (lst.size() < 3) |
544 emit chatStringLobby(tr("%1 *** %2 has left").arg('\x03').arg(lst[1])); |
556 m_playersModel->removePlayer(lst[1]); |
545 else |
557 else |
546 emit chatStringLobby(lst[1], tr("%1 *** %2 has left (%3)").arg('\x03').arg("|nick|", lst[2])); |
558 m_playersModel->removePlayer(lst[1], lst[2]); |
547 |
|
548 m_playersModel->removePlayer(lst[1]); |
|
549 |
559 |
550 return; |
560 return; |
551 } |
561 } |
552 |
562 |
553 if (lst[0] == "ASKPASSWORD") |
563 if (lst[0] == "ASKPASSWORD") |
781 if(lst.size() < 2) |
790 if(lst.size() < 2) |
782 { |
791 { |
783 qWarning("Net: Bad LEFT message"); |
792 qWarning("Net: Bad LEFT message"); |
784 return; |
793 return; |
785 } |
794 } |
786 emit nickRemoved(lst[1]); |
795 |
787 if (lst.size() < 3) |
796 if (lst.size() < 3) |
788 emit chatStringFromNet(tr("%1 *** %2 has left").arg('\x03').arg(lst[1])); |
797 emit chatStringFromNet(tr("%1 *** %2 has left").arg('\x03').arg(lst[1])); |
789 else |
798 else |
790 emit chatStringFromNet(tr("%1 *** %2 has left (%3)").arg('\x03').arg(lst[1], lst[2])); |
799 emit chatStringFromNet(tr("%1 *** %2 has left (%3)").arg('\x03').arg(lst[1], lst[2])); |
791 m_playersModel->playerLeftRoom(lst[1]); |
800 m_playersModel->playerLeftRoom(lst[1]); |
834 .arg(param) |
843 .arg(param) |
835 .arg(value.join(QString(delimeter))) |
844 .arg(value.join(QString(delimeter))) |
836 ); |
845 ); |
837 } |
846 } |
838 |
847 |
|
848 void HWNewNet::chatLineToNetWithEcho(const QString& str) |
|
849 { |
|
850 if(str != "") |
|
851 { |
|
852 emit chatStringFromNet(HWProto::formatChatMsg(mynick, str)); |
|
853 chatLineToNet(str); |
|
854 } |
|
855 } |
|
856 |
839 void HWNewNet::chatLineToNet(const QString& str) |
857 void HWNewNet::chatLineToNet(const QString& str) |
840 { |
858 { |
841 if(str != "") |
859 if(str != "") |
842 { |
860 { |
843 RawSendNet(QString("CHAT") + delimeter + str); |
861 RawSendNet(QString("CHAT") + delimeter + str); |
844 emit(chatStringFromMe(HWProto::formatChatMsg(mynick, str))); |
862 QString action = HWProto::chatStringToAction(str); |
|
863 if (action != NULL) |
|
864 emit(roomChatAction(mynick, action)); |
|
865 else |
|
866 emit(roomChatMessage(mynick, str)); |
845 } |
867 } |
846 } |
868 } |
847 |
869 |
848 void HWNewNet::chatLineToLobby(const QString& str) |
870 void HWNewNet::chatLineToLobby(const QString& str) |
849 { |
871 { |
850 if(str != "") |
872 if(str != "") |
851 { |
873 { |
852 RawSendNet(QString("CHAT") + delimeter + str); |
874 RawSendNet(QString("CHAT") + delimeter + str); |
853 emit chatStringLobby(mynick, HWProto::formatChatMsgForFrontend(str)); |
875 QString action = HWProto::chatStringToAction(str); |
|
876 if (action != NULL) |
|
877 emit(lobbyChatAction(mynick, action)); |
|
878 else |
|
879 emit(lobbyChatMessage(mynick, str)); |
854 } |
880 } |
855 } |
881 } |
856 |
882 |
857 void HWNewNet::SendTeamMessage(const QString& str) |
883 void HWNewNet::SendTeamMessage(const QString& str) |
858 { |
884 { |