92 m_game_connected = false; |
92 m_game_connected = false; |
93 |
93 |
94 NetSocket.disconnectFromHost(); |
94 NetSocket.disconnectFromHost(); |
95 } |
95 } |
96 |
96 |
97 void HWNewNet::CreateRoom(const QString & room) |
97 void HWNewNet::CreateRoom(const QString & room, const QString & password) |
98 { |
98 { |
99 if(netClientState != InLobby) |
99 if(netClientState != InLobby) |
100 { |
100 { |
101 qWarning("Illegal try to create room!"); |
101 qWarning("Illegal try to create room!"); |
102 return; |
102 return; |
103 } |
103 } |
104 |
104 |
105 myroom = room; |
105 myroom = room; |
106 |
106 |
107 RawSendNet(QString("CREATE_ROOM%1%2").arg(delimeter).arg(room)); |
107 if(password.isEmpty()) |
|
108 RawSendNet(QString("CREATE_ROOM%1%2").arg(delimeter).arg(room)); |
|
109 else |
|
110 RawSendNet(QString("CREATE_ROOM%1%2%1%3").arg(delimeter).arg(room).arg(password)); |
|
111 |
108 isChief = true; |
112 isChief = true; |
109 } |
113 } |
110 |
114 |
111 void HWNewNet::JoinRoom(const QString & room) |
115 void HWNewNet::JoinRoom(const QString & room, const QString &password) |
112 { |
116 { |
113 if(netClientState != InLobby) |
117 if(netClientState != InLobby) |
114 { |
118 { |
115 qWarning("Illegal try to join room!"); |
119 qWarning("Illegal try to join room!"); |
116 return; |
120 return; |
117 } |
121 } |
118 |
122 |
119 myroom = room; |
123 myroom = room; |
120 |
124 |
121 RawSendNet(QString("JOIN_ROOM%1%2").arg(delimeter).arg(room)); |
125 if(password.isEmpty()) |
|
126 RawSendNet(QString("JOIN_ROOM%1%2").arg(delimeter).arg(room)); |
|
127 else |
|
128 RawSendNet(QString("JOIN_ROOM%1%2%1%3").arg(delimeter).arg(room).arg(password)); |
|
129 |
122 isChief = false; |
130 isChief = false; |
123 } |
131 } |
124 |
132 |
125 void HWNewNet::AddTeam(const HWTeam & team) |
133 void HWNewNet::AddTeam(const HWTeam & team) |
126 { |
134 { |
301 return; |
309 return; |
302 } |
310 } |
303 |
311 |
304 if (lst[0] == "ROOMS") |
312 if (lst[0] == "ROOMS") |
305 { |
313 { |
306 if(lst.size() % 8 != 1) |
314 if(lst.size() % 9 != 1) |
307 { |
315 { |
308 qWarning("Net: Malformed ROOMS message"); |
316 qWarning("Net: Malformed ROOMS message"); |
309 return; |
317 return; |
310 } |
318 } |
311 QStringList tmp = lst; |
319 m_roomsListModel->setRoomsList(lst.mid(1)); |
312 tmp.removeFirst(); |
|
313 m_roomsListModel->setRoomsList(tmp); |
|
314 if (m_private_game == false && m_nick_registered == false) |
320 if (m_private_game == false && m_nick_registered == false) |
315 { |
321 { |
316 emit NickNotRegistered(mynick); |
322 emit NickNotRegistered(mynick); |
317 } |
323 } |
318 return; |
324 return; |
517 m_playersModel->addPlayer(lst[i], false); |
523 m_playersModel->addPlayer(lst[i], false); |
518 } |
524 } |
519 return; |
525 return; |
520 } |
526 } |
521 |
527 |
522 if(lst[0] == "ROOM" && lst.size() == 10 && lst[1] == "ADD") |
528 if(lst[0] == "ROOM" && lst.size() == 11 && lst[1] == "ADD") |
523 { |
529 { |
524 QStringList tmp = lst; |
530 QStringList tmp = lst; |
525 tmp.removeFirst(); |
531 tmp.removeFirst(); |
526 tmp.removeFirst(); |
532 tmp.removeFirst(); |
527 |
533 |
528 m_roomsListModel->addRoom(tmp); |
534 m_roomsListModel->addRoom(tmp); |
529 return; |
535 return; |
530 } |
536 } |
531 |
537 |
532 if(lst[0] == "ROOM" && lst.size() == 11 && lst[1] == "UPD") |
538 if(lst[0] == "ROOM" && lst.size() == 12 && lst[1] == "UPD") |
533 { |
539 { |
534 QStringList tmp = lst; |
540 QStringList tmp = lst; |
535 tmp.removeFirst(); |
541 tmp.removeFirst(); |
536 tmp.removeFirst(); |
542 tmp.removeFirst(); |
537 |
543 |
538 QString roomName = tmp.takeFirst(); |
544 QString roomName = tmp.takeFirst(); |
539 m_roomsListModel->updateRoom(roomName, tmp); |
545 m_roomsListModel->updateRoom(roomName, tmp); |
540 |
546 |
541 // keep track of room name so correct name is displayed |
547 // keep track of room name so correct name is displayed |
542 if(myroom == roomName) |
548 if(myroom == roomName && myroom != tmp[1]) |
543 { |
549 { |
544 myroom = tmp[1]; |
550 myroom = tmp[1]; |
545 emit roomNameUpdated(myroom); |
551 emit roomNameUpdated(myroom); |
546 } |
552 } |
547 |
553 |
617 Disconnect(); |
623 Disconnect(); |
618 emit disconnected(HWApplication::translate("server", lst[1].toAscii().constData())); |
624 emit disconnected(HWApplication::translate("server", lst[1].toAscii().constData())); |
619 return; |
625 return; |
620 } |
626 } |
621 |
627 |
622 if (lst[0] == "ADMIN_ACCESS") |
|
623 { |
|
624 // obsolete, see +a client flag |
|
625 return; |
|
626 } |
|
627 |
|
628 if(lst[0] == "JOINING") |
628 if(lst[0] == "JOINING") |
629 { |
629 { |
630 if(lst.size() < 2) |
630 if(lst.size() != 2) |
631 { |
631 { |
632 qWarning("Net: Bad JOINING message"); |
632 qWarning("Net: Bad JOINING message"); |
633 return; |
633 return; |
634 } |
634 } |
635 |
635 |
636 myroom = lst[1]; |
636 myroom = lst[1]; |
637 emit roomNameUpdated(myroom); |
637 emit roomNameUpdated(myroom); |
|
638 return; |
638 } |
639 } |
639 |
640 |
640 if(netClientState == InLobby && lst[0] == "JOINED") |
641 if(netClientState == InLobby && lst[0] == "JOINED") |
641 { |
642 { |
642 if(lst.size() < 2 || lst[1] != mynick) |
643 if(lst.size() < 2 || lst[1] != mynick) |