author | Wuzzy <Wuzzy2@mail.ru> |
Wed, 08 Aug 2018 13:14:42 +0200 | |
changeset 13644 | 05dd413393bf |
parent 13327 | b77a9380dd0f |
child 13663 | 73993abb85d7 |
permissions | -rw-r--r-- |
315 | 1 |
/* |
1066 | 2 |
* Hedgewars, a free turn based strategy game |
4976 | 3 |
* Copyright (c) 2006-2008 Igor Ulyanov <iulyanov@gmail.com> |
11046 | 4 |
* Copyright (c) 2004-2015 Andrey Korotaev <unC0Rr@gmail.com> |
315 | 5 |
* |
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 |
|
8 |
* the Free Software Foundation; version 2 of the License |
|
9 |
* |
|
10 |
* This program is distributed in the hope that it will be useful, |
|
11 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
13 |
* GNU General Public License for more details. |
|
14 |
* |
|
15 |
* You should have received a copy of the GNU General Public License |
|
16 |
* along with this program; if not, write to the Free Software |
|
10108
c68cf030eded
update FSF address. note: two sdl include files (by Sam Lantinga) still have the old FSF address in their copyright - but I ain't gonna touch their copyright headers
sheepluva
parents:
10076
diff
changeset
|
17 |
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
315 | 18 |
*/ |
19 |
||
1189
f66cdbbfc4b6
Fix compile under Ubuntu (why it compiles everywhere else?)
unc0rr
parents:
1083
diff
changeset
|
20 |
#include <QDebug> |
1844 | 21 |
#include <QInputDialog> |
1905 | 22 |
#include <QCryptographicHash> |
7728 | 23 |
#include <QSortFilterProxyModel> |
10074 | 24 |
#include <QUuid> |
1844 | 25 |
|
697 | 26 |
#include "hwconsts.h" |
315 | 27 |
#include "newnetclient.h" |
28 |
#include "proto.h" |
|
29 |
#include "game.h" |
|
6732
c906dc78091f
Start switching to rooms list model. To be continued.
unc0rr
parents:
6722
diff
changeset
|
30 |
#include "roomslistmodel.h" |
7723 | 31 |
#include "playerslistmodel.h" |
8401
87410ae372f6
Server messages localization using Qt's l10n subsystem:
unc0rr
parents:
8396
diff
changeset
|
32 |
#include "servermessages.h" |
87410ae372f6
Server messages localization using Qt's l10n subsystem:
unc0rr
parents:
8396
diff
changeset
|
33 |
#include "HWApplication.h" |
315 | 34 |
|
10695 | 35 |
char delimiter='\n'; |
315 | 36 |
|
5998
e8f44e9433f0
many many netclient/frondent changes (just the beginning though):
sheepluva
parents:
5959
diff
changeset
|
37 |
HWNewNet::HWNewNet() : |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
38 |
isChief(false), |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
39 |
m_game_connected(false), |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
40 |
netClientState(Disconnected) |
315 | 41 |
{ |
10248 | 42 |
m_private_game = false; |
43 |
m_nick_registered = false; |
|
44 |
||
6732
c906dc78091f
Start switching to rooms list model. To be continued.
unc0rr
parents:
6722
diff
changeset
|
45 |
m_roomsListModel = new RoomsListModel(this); |
7728 | 46 |
|
47 |
m_playersModel = new PlayersListModel(this); |
|
48 |
||
49 |
m_lobbyPlayersModel = new QSortFilterProxyModel(this); |
|
50 |
m_lobbyPlayersModel->setSourceModel(m_playersModel); |
|
51 |
m_lobbyPlayersModel->setSortRole(PlayersListModel::SortRole); |
|
52 |
m_lobbyPlayersModel->setDynamicSortFilter(true); |
|
53 |
m_lobbyPlayersModel->sort(0); |
|
54 |
||
55 |
m_roomPlayersModel = new QSortFilterProxyModel(this); |
|
56 |
m_roomPlayersModel->setSourceModel(m_playersModel); |
|
57 |
m_roomPlayersModel->setSortRole(PlayersListModel::SortRole); |
|
58 |
m_roomPlayersModel->setDynamicSortFilter(true); |
|
59 |
m_roomPlayersModel->sort(0); |
|
7731 | 60 |
m_roomPlayersModel->setFilterRole(PlayersListModel::RoomFilterRole); |
7834 | 61 |
m_roomPlayersModel->setFilterFixedString("true"); |
7728 | 62 |
|
63 |
// socket stuff |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
64 |
connect(&NetSocket, SIGNAL(readyRead()), this, SLOT(ClientRead())); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
65 |
connect(&NetSocket, SIGNAL(connected()), this, SLOT(OnConnect())); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
66 |
connect(&NetSocket, SIGNAL(disconnected()), this, SLOT(OnDisconnect())); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
67 |
connect(&NetSocket, SIGNAL(error(QAbstractSocket::SocketError)), this, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
68 |
SLOT(displayError(QAbstractSocket::SocketError))); |
8534
92da587691c9
Workaround queued signals problem in netclient instead. Should fix everything.
unc0rr
parents:
8489
diff
changeset
|
69 |
|
92da587691c9
Workaround queued signals problem in netclient instead. Should fix everything.
unc0rr
parents:
8489
diff
changeset
|
70 |
connect(this, SIGNAL(messageProcessed()), this, SLOT(ClientRead()), Qt::QueuedConnection); |
315 | 71 |
} |
72 |
||
1526
18e412dd7d50
Send QUIT message to server when netclient object is destroyed
unc0rr
parents:
1512
diff
changeset
|
73 |
HWNewNet::~HWNewNet() |
18e412dd7d50
Send QUIT message to server when netclient object is destroyed
unc0rr
parents:
1512
diff
changeset
|
74 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
75 |
if (m_game_connected) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
76 |
{ |
10695 | 77 |
RawSendNet(QString("QUIT%1%2").arg(delimiter).arg("User quit")); |
6036 | 78 |
emit disconnected(tr("User quit")); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
79 |
} |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
80 |
NetSocket.flush(); |
1526
18e412dd7d50
Send QUIT message to server when netclient object is destroyed
unc0rr
parents:
1512
diff
changeset
|
81 |
} |
18e412dd7d50
Send QUIT message to server when netclient object is destroyed
unc0rr
parents:
1512
diff
changeset
|
82 |
|
315 | 83 |
void HWNewNet::Connect(const QString & hostName, quint16 port, const QString & nick) |
84 |
{ |
|
6036 | 85 |
netClientState = Connecting; |
5390
f41e87de8989
(fix issue 126) moved initial nickname popup to the netconnection page
koda
parents:
5230
diff
changeset
|
86 |
mynick = nick; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
87 |
myhost = hostName + QString(":%1").arg(port); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
88 |
NetSocket.connectToHost(hostName, port); |
315 | 89 |
} |
90 |
||
91 |
void HWNewNet::Disconnect() |
|
92 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
93 |
if (m_game_connected) |
10695 | 94 |
RawSendNet(QString("QUIT%1%2").arg(delimiter).arg("User quit")); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
95 |
m_game_connected = false; |
2377 | 96 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
97 |
NetSocket.disconnectFromHost(); |
315 | 98 |
} |
99 |
||
9541
312bb4384f33
- Frontend finally learns how to create passworded room
unc0rr
parents:
9503
diff
changeset
|
100 |
void HWNewNet::CreateRoom(const QString & room, const QString & password) |
315 | 101 |
{ |
13327
b77a9380dd0f
QT for some reason messes with XCompose causing broken input (Qt 5 only - Qt 4 did not break anything). In Qt 5.2 and 5.3 this was causing an invalid conversion in chat messages containing these resulting in the bad bytes being stripped. In Qt 5.9 it is still broken, but you at least get a string with something in it. This checks for non-zero converted strings for room creation and chat lines.
nemo
parents:
12902
diff
changeset
|
102 |
if(netClientState != InLobby || !ByteLength(room)) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
103 |
{ |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
104 |
qWarning("Illegal try to create room!"); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
105 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
106 |
} |
2377 | 107 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
108 |
myroom = room; |
2821 | 109 |
|
9541
312bb4384f33
- Frontend finally learns how to create passworded room
unc0rr
parents:
9503
diff
changeset
|
110 |
if(password.isEmpty()) |
10695 | 111 |
RawSendNet(QString("CREATE_ROOM%1%2").arg(delimiter).arg(room)); |
9541
312bb4384f33
- Frontend finally learns how to create passworded room
unc0rr
parents:
9503
diff
changeset
|
112 |
else |
10695 | 113 |
RawSendNet(QString("CREATE_ROOM%1%2%1%3").arg(delimiter).arg(room).arg(password)); |
9541
312bb4384f33
- Frontend finally learns how to create passworded room
unc0rr
parents:
9503
diff
changeset
|
114 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
115 |
isChief = true; |
1082 | 116 |
} |
117 |
||
9549 | 118 |
void HWNewNet::JoinRoom(const QString & room, const QString &password) |
1082 | 119 |
{ |
6036 | 120 |
if(netClientState != InLobby) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
121 |
{ |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
122 |
qWarning("Illegal try to join room!"); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
123 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
124 |
} |
2377 | 125 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
126 |
myroom = room; |
2821 | 127 |
|
9549 | 128 |
if(password.isEmpty()) |
10695 | 129 |
RawSendNet(QString("JOIN_ROOM%1%2").arg(delimiter).arg(room)); |
9549 | 130 |
else |
10695 | 131 |
RawSendNet(QString("JOIN_ROOM%1%2%1%3").arg(delimiter).arg(room).arg(password)); |
9549 | 132 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
133 |
isChief = false; |
315 | 134 |
} |
135 |
||
136 |
void HWNewNet::AddTeam(const HWTeam & team) |
|
137 |
{ |
|
10695 | 138 |
QString cmd = QString("ADD_TEAM") + delimiter + |
139 |
team.name() + delimiter + |
|
140 |
QString::number(team.color()) + delimiter + |
|
141 |
team.grave() + delimiter + |
|
142 |
team.fort() + delimiter + |
|
143 |
team.voicepack() + delimiter + |
|
144 |
team.flag() + delimiter + |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
145 |
QString::number(team.difficulty()); |
1245
d2eca4a053f5
Send hats info via net. Hats implementation complete now.
unc0rr
parents:
1189
diff
changeset
|
146 |
|
6024 | 147 |
for(int i = 0; i < HEDGEHOGS_PER_TEAM; ++i) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
148 |
{ |
10695 | 149 |
cmd.append(delimiter); |
6015
daffc14a518a
cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents:
5998
diff
changeset
|
150 |
cmd.append(team.hedgehog(i).Name); |
10695 | 151 |
cmd.append(delimiter); |
6015
daffc14a518a
cleaning up a little bit more, especially team class. we were leaking teams into heap memory on quick game starts btw
sheepluva
parents:
5998
diff
changeset
|
152 |
cmd.append(team.hedgehog(i).Hat); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
153 |
} |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
154 |
RawSendNet(cmd); |
315 | 155 |
} |
156 |
||
347 | 157 |
void HWNewNet::RemoveTeam(const HWTeam & team) |
158 |
{ |
|
10695 | 159 |
RawSendNet(QString("REMOVE_TEAM") + delimiter + team.name()); |
347 | 160 |
} |
161 |
||
5998
e8f44e9433f0
many many netclient/frondent changes (just the beginning though):
sheepluva
parents:
5959
diff
changeset
|
162 |
void HWNewNet::NewNick(const QString & nick) |
e8f44e9433f0
many many netclient/frondent changes (just the beginning though):
sheepluva
parents:
5959
diff
changeset
|
163 |
{ |
10695 | 164 |
RawSendNet(QString("NICK%1%2").arg(delimiter).arg(nick)); |
5998
e8f44e9433f0
many many netclient/frondent changes (just the beginning though):
sheepluva
parents:
5959
diff
changeset
|
165 |
} |
e8f44e9433f0
many many netclient/frondent changes (just the beginning though):
sheepluva
parents:
5959
diff
changeset
|
166 |
|
1404 | 167 |
void HWNewNet::ToggleReady() |
315 | 168 |
{ |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
169 |
RawSendNet(QString("TOGGLE_READY")); |
315 | 170 |
} |
171 |
||
172 |
void HWNewNet::SendNet(const QByteArray & buf) |
|
173 |
{ |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
174 |
QString msg = QString(buf.toBase64()); |
315 | 175 |
|
10695 | 176 |
RawSendNet(QString("EM%1%2").arg(delimiter).arg(msg)); |
315 | 177 |
} |
178 |
||
13327
b77a9380dd0f
QT for some reason messes with XCompose causing broken input (Qt 5 only - Qt 4 did not break anything). In Qt 5.2 and 5.3 this was causing an invalid conversion in chat messages containing these resulting in the bad bytes being stripped. In Qt 5.9 it is still broken, but you at least get a string with something in it. This checks for non-zero converted strings for room creation and chat lines.
nemo
parents:
12902
diff
changeset
|
179 |
int HWNewNet::ByteLength(const QString & str) |
b77a9380dd0f
QT for some reason messes with XCompose causing broken input (Qt 5 only - Qt 4 did not break anything). In Qt 5.2 and 5.3 this was causing an invalid conversion in chat messages containing these resulting in the bad bytes being stripped. In Qt 5.9 it is still broken, but you at least get a string with something in it. This checks for non-zero converted strings for room creation and chat lines.
nemo
parents:
12902
diff
changeset
|
180 |
{ |
b77a9380dd0f
QT for some reason messes with XCompose causing broken input (Qt 5 only - Qt 4 did not break anything). In Qt 5.2 and 5.3 this was causing an invalid conversion in chat messages containing these resulting in the bad bytes being stripped. In Qt 5.9 it is still broken, but you at least get a string with something in it. This checks for non-zero converted strings for room creation and chat lines.
nemo
parents:
12902
diff
changeset
|
181 |
return str.toUtf8().size(); |
b77a9380dd0f
QT for some reason messes with XCompose causing broken input (Qt 5 only - Qt 4 did not break anything). In Qt 5.2 and 5.3 this was causing an invalid conversion in chat messages containing these resulting in the bad bytes being stripped. In Qt 5.9 it is still broken, but you at least get a string with something in it. This checks for non-zero converted strings for room creation and chat lines.
nemo
parents:
12902
diff
changeset
|
182 |
} |
b77a9380dd0f
QT for some reason messes with XCompose causing broken input (Qt 5 only - Qt 4 did not break anything). In Qt 5.2 and 5.3 this was causing an invalid conversion in chat messages containing these resulting in the bad bytes being stripped. In Qt 5.9 it is still broken, but you at least get a string with something in it. This checks for non-zero converted strings for room creation and chat lines.
nemo
parents:
12902
diff
changeset
|
183 |
|
315 | 184 |
void HWNewNet::RawSendNet(const QString & str) |
185 |
{ |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
186 |
RawSendNet(str.toUtf8()); |
315 | 187 |
} |
188 |
||
189 |
void HWNewNet::RawSendNet(const QByteArray & buf) |
|
190 |
{ |
|
11466
5dbc0f976b4a
assume frontend buffer utf-8 to avoid garbage strings in debug
nemo
parents:
11046
diff
changeset
|
191 |
qDebug() << "Client: " << QString(QString::fromUtf8(buf)).split("\n"); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
192 |
NetSocket.write(buf); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
193 |
NetSocket.write("\n\n", 2); |
315 | 194 |
} |
195 |
||
196 |
void HWNewNet::ClientRead() |
|
197 |
{ |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
198 |
while (NetSocket.canReadLine()) |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
199 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
200 |
QString s = QString::fromUtf8(NetSocket.readLine()); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
201 |
if (s.endsWith('\n')) s.chop(1); |
1082 | 202 |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
203 |
if (s.size() == 0) |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
204 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
205 |
ParseCmd(cmdbuf); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
206 |
cmdbuf.clear(); |
8534
92da587691c9
Workaround queued signals problem in netclient instead. Should fix everything.
unc0rr
parents:
8489
diff
changeset
|
207 |
emit messageProcessed(); |
92da587691c9
Workaround queued signals problem in netclient instead. Should fix everything.
unc0rr
parents:
8489
diff
changeset
|
208 |
return ; |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
209 |
} |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
210 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
211 |
cmdbuf << s; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
212 |
} |
315 | 213 |
} |
214 |
||
215 |
void HWNewNet::OnConnect() |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
216 |
{ |
6036 | 217 |
netClientState = Connected; |
315 | 218 |
} |
219 |
||
220 |
void HWNewNet::OnDisconnect() |
|
221 |
{ |
|
6036 | 222 |
netClientState = Disconnected; |
223 |
if(m_game_connected) emit disconnected(""); |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
224 |
m_game_connected = false; |
315 | 225 |
} |
226 |
||
227 |
void HWNewNet::displayError(QAbstractSocket::SocketError socketError) |
|
228 |
{ |
|
5230
c088be28d5e8
Set m_game_connected to false after emitting Disconnected(). This fixes a bug in a case such that when entering an invalid password, the game would bring you back to the main menu.
Zorg <zorgiepoo@gmail.com>
parents:
5229
diff
changeset
|
229 |
m_game_connected = false; |
2377 | 230 |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
231 |
switch (socketError) |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
232 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
233 |
case QAbstractSocket::RemoteHostClosedError: |
6722
e3a35bc838fb
Show message and return from network game pages on server shutdown
unc0rr
parents:
6700
diff
changeset
|
234 |
emit disconnected(tr("Remote host has closed connection")); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
235 |
break; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
236 |
case QAbstractSocket::HostNotFoundError: |
6036 | 237 |
emit disconnected(tr("The host was not found. Please check the host name and port settings.")); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
238 |
break; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
239 |
case QAbstractSocket::ConnectionRefusedError: |
6036 | 240 |
emit disconnected(tr("Connection refused")); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
241 |
break; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
242 |
default: |
6036 | 243 |
emit disconnected(NetSocket.errorString()); |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
244 |
} |
315 | 245 |
} |
246 |
||
5998
e8f44e9433f0
many many netclient/frondent changes (just the beginning though):
sheepluva
parents:
5959
diff
changeset
|
247 |
void HWNewNet::SendPasswordHash(const QString & hash) |
e8f44e9433f0
many many netclient/frondent changes (just the beginning though):
sheepluva
parents:
5959
diff
changeset
|
248 |
{ |
10074 | 249 |
// don't send it immediately, only store and check if server asked us for a password |
12902
fc47fc4af6bd
Finish porting. Seems to work, but no thorough testing has been performed
unc0rr
parents:
11870
diff
changeset
|
250 |
m_passwordHash = hash.toLatin1(); |
10074 | 251 |
|
252 |
maybeSendPassword(); |
|
5998
e8f44e9433f0
many many netclient/frondent changes (just the beginning though):
sheepluva
parents:
5959
diff
changeset
|
253 |
} |
e8f44e9433f0
many many netclient/frondent changes (just the beginning though):
sheepluva
parents:
5959
diff
changeset
|
254 |
|
1082 | 255 |
void HWNewNet::ParseCmd(const QStringList & lst) |
315 | 256 |
{ |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
257 |
qDebug() << "Server: " << lst; |
1305 | 258 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
259 |
if(!lst.size()) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
260 |
{ |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
261 |
qWarning("Net client: Bad message"); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
262 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
263 |
} |
320 | 264 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
265 |
if (lst[0] == "NICK") |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
266 |
{ |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
267 |
mynick = lst[1]; |
7732 | 268 |
m_playersModel->setNickname(mynick); |
8299
ef2e284255cd
Added handling of not registered nicks (no change-server side tho), clearPasswordHash() also now sets the savepassword setting to false
Ondrej Skopek <skopekondrej@gmail.com>
parents:
8291
diff
changeset
|
269 |
m_nick_registered = false; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
270 |
return ; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
271 |
} |
1308
d5dcd6cfa5e2
Fix another server failure (when second client in room disconnects)
unc0rr
parents:
1307
diff
changeset
|
272 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
273 |
if (lst[0] == "PROTO") |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
274 |
return ; |
2108 | 275 |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
276 |
if (lst[0] == "ERROR") |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
277 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
278 |
if (lst.size() == 2) |
12902
fc47fc4af6bd
Finish porting. Seems to work, but no thorough testing has been performed
unc0rr
parents:
11870
diff
changeset
|
279 |
emit Error(HWApplication::translate("server", lst[1].toLatin1().constData())); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
280 |
else |
5998
e8f44e9433f0
many many netclient/frondent changes (just the beginning though):
sheepluva
parents:
5959
diff
changeset
|
281 |
emit Error("Unknown error"); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
282 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
283 |
} |
315 | 284 |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
285 |
if (lst[0] == "WARNING") |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
286 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
287 |
if (lst.size() == 2) |
12902
fc47fc4af6bd
Finish porting. Seems to work, but no thorough testing has been performed
unc0rr
parents:
11870
diff
changeset
|
288 |
emit Warning(HWApplication::translate("server", lst[1].toLatin1().constData())); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
289 |
else |
5998
e8f44e9433f0
many many netclient/frondent changes (just the beginning though):
sheepluva
parents:
5959
diff
changeset
|
290 |
emit Warning("Unknown warning"); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
291 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
292 |
} |
1307 | 293 |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
294 |
if (lst[0] == "CONNECTED") |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
295 |
{ |
4973
53411a26df7e
Add server version (which is separate from protocol version) and a check in frontend for a new enough server (currently only qWarning)
unc0rr
parents:
4963
diff
changeset
|
296 |
if(lst.size() < 3 || lst[2].toInt() < cMinServerVersion) |
53411a26df7e
Add server version (which is separate from protocol version) and a check in frontend for a new enough server (currently only qWarning)
unc0rr
parents:
4963
diff
changeset
|
297 |
{ |
53411a26df7e
Add server version (which is separate from protocol version) and a check in frontend for a new enough server (currently only qWarning)
unc0rr
parents:
4963
diff
changeset
|
298 |
// TODO: Warn user, disconnect |
53411a26df7e
Add server version (which is separate from protocol version) and a check in frontend for a new enough server (currently only qWarning)
unc0rr
parents:
4963
diff
changeset
|
299 |
qWarning() << "Server too old"; |
10695 | 300 |
RawSendNet(QString("QUIT%1%2").arg(delimiter).arg("Server too old")); |
6737
ce5fbd98370f
- Increase server version number due to rooms list protocol changes
unc0rr
parents:
6735
diff
changeset
|
301 |
Disconnect(); |
ce5fbd98370f
- Increase server version number due to rooms list protocol changes
unc0rr
parents:
6735
diff
changeset
|
302 |
emit disconnected(tr("The server is too old. Disconnecting now.")); |
ce5fbd98370f
- Increase server version number due to rooms list protocol changes
unc0rr
parents:
6735
diff
changeset
|
303 |
return; |
4973
53411a26df7e
Add server version (which is separate from protocol version) and a check in frontend for a new enough server (currently only qWarning)
unc0rr
parents:
4963
diff
changeset
|
304 |
} |
53411a26df7e
Add server version (which is separate from protocol version) and a check in frontend for a new enough server (currently only qWarning)
unc0rr
parents:
4963
diff
changeset
|
305 |
|
10695 | 306 |
RawSendNet(QString("NICK%1%2").arg(delimiter).arg(mynick)); |
307 |
RawSendNet(QString("PROTO%1%2").arg(delimiter).arg(*cProtoVer)); |
|
6036 | 308 |
netClientState = Connected; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
309 |
m_game_connected = true; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
310 |
emit adminAccess(false); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
311 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
312 |
} |
315 | 313 |
|
10074 | 314 |
if (lst[0] == "SERVER_AUTH") |
315 |
{ |
|
316 |
if(lst.size() < 2) |
|
317 |
{ |
|
318 |
qWarning("Net: Malformed SERVER_AUTH message"); |
|
319 |
return; |
|
320 |
} |
|
321 |
||
10076 | 322 |
if(lst[1] != m_serverHash) |
10074 | 323 |
{ |
324 |
Error("Server authentication error"); |
|
325 |
Disconnect(); |
|
326 |
} else |
|
327 |
{ |
|
328 |
// empty m_serverHash variable means no authentication was performed |
|
329 |
// or server passed authentication |
|
330 |
m_serverHash.clear(); |
|
331 |
} |
|
332 |
||
333 |
return; |
|
334 |
} |
|
335 |
||
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
336 |
if (lst[0] == "PING") |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
337 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
338 |
if (lst.size() > 1) |
10695 | 339 |
RawSendNet(QString("PONG%1%2").arg(delimiter).arg(lst[1])); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
340 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
341 |
RawSendNet(QString("PONG")); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
342 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
343 |
} |
1462 | 344 |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
345 |
if (lst[0] == "ROOMS") |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
346 |
{ |
9702 | 347 |
if(lst.size() % 9 != 1) |
6733 | 348 |
{ |
349 |
qWarning("Net: Malformed ROOMS message"); |
|
350 |
return; |
|
351 |
} |
|
9702 | 352 |
m_roomsListModel->setRoomsList(lst.mid(1)); |
8720
5603527f9803
this should prevent the password prompt from appearing on local games (issue 548)
koda
parents:
8567
diff
changeset
|
353 |
if (m_private_game == false && m_nick_registered == false) |
8299
ef2e284255cd
Added handling of not registered nicks (no change-server side tho), clearPasswordHash() also now sets the savepassword setting to false
Ondrej Skopek <skopekondrej@gmail.com>
parents:
8291
diff
changeset
|
354 |
{ |
ef2e284255cd
Added handling of not registered nicks (no change-server side tho), clearPasswordHash() also now sets the savepassword setting to false
Ondrej Skopek <skopekondrej@gmail.com>
parents:
8291
diff
changeset
|
355 |
emit NickNotRegistered(mynick); |
ef2e284255cd
Added handling of not registered nicks (no change-server side tho), clearPasswordHash() also now sets the savepassword setting to false
Ondrej Skopek <skopekondrej@gmail.com>
parents:
8291
diff
changeset
|
356 |
} |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
357 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
358 |
} |
1313
f4c54e9e1b8c
- Introduce a bit of state miachine in client code (should be more robust and verbosive now)
unc0rr
parents:
1311
diff
changeset
|
359 |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
360 |
if (lst[0] == "SERVER_MESSAGE") |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
361 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
362 |
if(lst.size() < 2) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
363 |
{ |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
364 |
qWarning("Net: Empty SERVERMESSAGE message"); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
365 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
366 |
} |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
367 |
emit serverMessage(lst[1]); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
368 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
369 |
} |
1377 | 370 |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
371 |
if (lst[0] == "CHAT") |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
372 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
373 |
if(lst.size() < 3) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
374 |
{ |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
375 |
qWarning("Net: Empty CHAT message"); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
376 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
377 |
} |
8759 | 378 |
|
379 |
QString action = HWProto::chatStringToAction(lst[2]); |
|
380 |
||
6036 | 381 |
if (netClientState == InLobby) |
8759 | 382 |
{ |
383 |
if (action != NULL) |
|
384 |
emit lobbyChatAction(lst[1], action); |
|
385 |
else |
|
386 |
emit lobbyChatMessage(lst[1], lst[2]); |
|
387 |
} |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
388 |
else |
8759 | 389 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
390 |
emit chatStringFromNet(HWProto::formatChatMsg(lst[1], lst[2])); |
8759 | 391 |
if (action != NULL) |
392 |
emit roomChatAction(lst[1], action); |
|
393 |
else |
|
394 |
emit roomChatMessage(lst[1], lst[2]); |
|
395 |
} |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
396 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
397 |
} |
453 | 398 |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
399 |
if (lst[0] == "INFO") |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
400 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
401 |
if(lst.size() < 5) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
402 |
{ |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
403 |
qWarning("Net: Malformed INFO message"); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
404 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
405 |
} |
8759 | 406 |
emit playerInfo(lst[1], lst[2], lst[3], lst[4]); |
407 |
if (netClientState != InLobby) |
|
408 |
{ |
|
409 |
QStringList tmp = lst; |
|
410 |
tmp.removeFirst(); |
|
8762 | 411 |
emit chatStringFromNet(tmp.join(" ").prepend('\x01')); |
8759 | 412 |
} |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
413 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
414 |
} |
1577 | 415 |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
416 |
if (lst[0] == "SERVER_VARS") |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
417 |
{ |
3283 | 418 |
QStringList tmp = lst; |
419 |
tmp.removeFirst(); |
|
420 |
while (tmp.size() >= 2) |
|
421 |
{ |
|
422 |
if(tmp[0] == "MOTD_NEW") emit serverMessageNew(tmp[1]); |
|
423 |
else if(tmp[0] == "MOTD_OLD") emit serverMessageOld(tmp[1]); |
|
424 |
else if(tmp[0] == "LATEST_PROTO") emit latestProtocolVar(tmp[1].toInt()); |
|
3697 | 425 |
|
3283 | 426 |
tmp.removeFirst(); |
427 |
tmp.removeFirst(); |
|
428 |
} |
|
429 |
return; |
|
430 |
} |
|
431 |
||
8157 | 432 |
if (lst[0] == "BANLIST") |
433 |
{ |
|
434 |
QStringList tmp = lst; |
|
435 |
tmp.removeFirst(); |
|
436 |
emit bansList(tmp); |
|
437 |
return; |
|
438 |
} |
|
439 |
||
9702 | 440 |
if (lst[0] == "CLIENT_FLAGS" || lst[0] == "CF") |
4917
8ff92bdc9f98
Convert READY and NOT_READY messages to CLIENT_FLAGS message
unc0rr
parents:
4908
diff
changeset
|
441 |
{ |
8ff92bdc9f98
Convert READY and NOT_READY messages to CLIENT_FLAGS message
unc0rr
parents:
4908
diff
changeset
|
442 |
if(lst.size() < 3 || lst[1].size() < 2) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
443 |
{ |
4917
8ff92bdc9f98
Convert READY and NOT_READY messages to CLIENT_FLAGS message
unc0rr
parents:
4908
diff
changeset
|
444 |
qWarning("Net: Malformed CLIENT_FLAGS message"); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
445 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
446 |
} |
4917
8ff92bdc9f98
Convert READY and NOT_READY messages to CLIENT_FLAGS message
unc0rr
parents:
4908
diff
changeset
|
447 |
|
8ff92bdc9f98
Convert READY and NOT_READY messages to CLIENT_FLAGS message
unc0rr
parents:
4908
diff
changeset
|
448 |
QString flags = lst[1]; |
8ff92bdc9f98
Convert READY and NOT_READY messages to CLIENT_FLAGS message
unc0rr
parents:
4908
diff
changeset
|
449 |
bool setFlag = flags[0] == '+'; |
7683
993337e5021f
client-flags: make code easier to read/prettier; add parsing of flag 'a'; add warning in console on unknown flag; ignore ADMIN_ACCESS
sheepluva
parents:
7545
diff
changeset
|
450 |
const QStringList nicks = lst.mid(2); |
4917
8ff92bdc9f98
Convert READY and NOT_READY messages to CLIENT_FLAGS message
unc0rr
parents:
4908
diff
changeset
|
451 |
|
8ff92bdc9f98
Convert READY and NOT_READY messages to CLIENT_FLAGS message
unc0rr
parents:
4908
diff
changeset
|
452 |
while(flags.size() > 1) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
453 |
{ |
4917
8ff92bdc9f98
Convert READY and NOT_READY messages to CLIENT_FLAGS message
unc0rr
parents:
4908
diff
changeset
|
454 |
flags.remove(0, 1); |
12902
fc47fc4af6bd
Finish porting. Seems to work, but no thorough testing has been performed
unc0rr
parents:
11870
diff
changeset
|
455 |
char c = flags[0].toLatin1(); |
8021 | 456 |
bool inRoom = (netClientState == InRoom || netClientState == InGame); |
2377 | 457 |
|
4917
8ff92bdc9f98
Convert READY and NOT_READY messages to CLIENT_FLAGS message
unc0rr
parents:
4908
diff
changeset
|
458 |
switch(c) |
8ff92bdc9f98
Convert READY and NOT_READY messages to CLIENT_FLAGS message
unc0rr
parents:
4908
diff
changeset
|
459 |
{ |
7684
db140521d102
recognize client-flags h and u, ROOM_CONTROL_ACCESS will be ignored from here on
sheepluva
parents:
7683
diff
changeset
|
460 |
// flag indicating if a player is ready to start a game |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
461 |
case 'r': |
8021 | 462 |
if(inRoom) |
7683
993337e5021f
client-flags: make code easier to read/prettier; add parsing of flag 'a'; add warning in console on unknown flag; ignore ADMIN_ACCESS
sheepluva
parents:
7545
diff
changeset
|
463 |
foreach (const QString & nick, nicks) |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
464 |
{ |
7683
993337e5021f
client-flags: make code easier to read/prettier; add parsing of flag 'a'; add warning in console on unknown flag; ignore ADMIN_ACCESS
sheepluva
parents:
7545
diff
changeset
|
465 |
if (nick == mynick) |
993337e5021f
client-flags: make code easier to read/prettier; add parsing of flag 'a'; add warning in console on unknown flag; ignore ADMIN_ACCESS
sheepluva
parents:
7545
diff
changeset
|
466 |
{ |
8983 | 467 |
emit setMyReadyStatus(setFlag); |
7683
993337e5021f
client-flags: make code easier to read/prettier; add parsing of flag 'a'; add warning in console on unknown flag; ignore ADMIN_ACCESS
sheepluva
parents:
7545
diff
changeset
|
468 |
} |
7728 | 469 |
m_playersModel->setFlag(nick, PlayersListModel::Ready, setFlag); |
6539 | 470 |
} |
7683
993337e5021f
client-flags: make code easier to read/prettier; add parsing of flag 'a'; add warning in console on unknown flag; ignore ADMIN_ACCESS
sheepluva
parents:
7545
diff
changeset
|
471 |
break; |
6539 | 472 |
|
7684
db140521d102
recognize client-flags h and u, ROOM_CONTROL_ACCESS will be ignored from here on
sheepluva
parents:
7683
diff
changeset
|
473 |
// flag indicating if a player is a registered user |
db140521d102
recognize client-flags h and u, ROOM_CONTROL_ACCESS will be ignored from here on
sheepluva
parents:
7683
diff
changeset
|
474 |
case 'u': |
7727 | 475 |
foreach(const QString & nick, nicks) |
7728 | 476 |
m_playersModel->setFlag(nick, PlayersListModel::Registered, setFlag); |
7684
db140521d102
recognize client-flags h and u, ROOM_CONTROL_ACCESS will be ignored from here on
sheepluva
parents:
7683
diff
changeset
|
477 |
break; |
9503 | 478 |
// flag indicating if a player is in room |
479 |
case 'i': |
|
480 |
foreach(const QString & nick, nicks) |
|
481 |
m_playersModel->setFlag(nick, PlayersListModel::InRoom, setFlag); |
|
482 |
break; |
|
483 |
// flag indicating if a player is contributor |
|
484 |
case 'c': |
|
485 |
foreach(const QString & nick, nicks) |
|
10144 | 486 |
m_playersModel->setFlag(nick, PlayersListModel::Contributor, setFlag); |
9503 | 487 |
break; |
8021 | 488 |
// flag indicating if a player has engine running |
7765
1e162c1d6dc7
'In game' client flag, both server and frontend support
unc0rr
parents:
7744
diff
changeset
|
489 |
case 'g': |
8021 | 490 |
if(inRoom) |
7765
1e162c1d6dc7
'In game' client flag, both server and frontend support
unc0rr
parents:
7744
diff
changeset
|
491 |
foreach(const QString & nick, nicks) |
1e162c1d6dc7
'In game' client flag, both server and frontend support
unc0rr
parents:
7744
diff
changeset
|
492 |
m_playersModel->setFlag(nick, PlayersListModel::InGame, setFlag); |
1e162c1d6dc7
'In game' client flag, both server and frontend support
unc0rr
parents:
7744
diff
changeset
|
493 |
break; |
1e162c1d6dc7
'In game' client flag, both server and frontend support
unc0rr
parents:
7744
diff
changeset
|
494 |
|
7684
db140521d102
recognize client-flags h and u, ROOM_CONTROL_ACCESS will be ignored from here on
sheepluva
parents:
7683
diff
changeset
|
495 |
// flag indicating if a player is the host/master of the room |
db140521d102
recognize client-flags h and u, ROOM_CONTROL_ACCESS will be ignored from here on
sheepluva
parents:
7683
diff
changeset
|
496 |
case 'h': |
8021 | 497 |
if(inRoom) |
7684
db140521d102
recognize client-flags h and u, ROOM_CONTROL_ACCESS will be ignored from here on
sheepluva
parents:
7683
diff
changeset
|
498 |
foreach (const QString & nick, nicks) |
db140521d102
recognize client-flags h and u, ROOM_CONTROL_ACCESS will be ignored from here on
sheepluva
parents:
7683
diff
changeset
|
499 |
{ |
db140521d102
recognize client-flags h and u, ROOM_CONTROL_ACCESS will be ignored from here on
sheepluva
parents:
7683
diff
changeset
|
500 |
if (nick == mynick) |
db140521d102
recognize client-flags h and u, ROOM_CONTROL_ACCESS will be ignored from here on
sheepluva
parents:
7683
diff
changeset
|
501 |
{ |
db140521d102
recognize client-flags h and u, ROOM_CONTROL_ACCESS will be ignored from here on
sheepluva
parents:
7683
diff
changeset
|
502 |
isChief = setFlag; |
db140521d102
recognize client-flags h and u, ROOM_CONTROL_ACCESS will be ignored from here on
sheepluva
parents:
7683
diff
changeset
|
503 |
emit roomMaster(isChief); |
db140521d102
recognize client-flags h and u, ROOM_CONTROL_ACCESS will be ignored from here on
sheepluva
parents:
7683
diff
changeset
|
504 |
} |
db140521d102
recognize client-flags h and u, ROOM_CONTROL_ACCESS will be ignored from here on
sheepluva
parents:
7683
diff
changeset
|
505 |
|
7728 | 506 |
m_playersModel->setFlag(nick, PlayersListModel::RoomAdmin, setFlag); |
7684
db140521d102
recognize client-flags h and u, ROOM_CONTROL_ACCESS will be ignored from here on
sheepluva
parents:
7683
diff
changeset
|
507 |
} |
db140521d102
recognize client-flags h and u, ROOM_CONTROL_ACCESS will be ignored from here on
sheepluva
parents:
7683
diff
changeset
|
508 |
break; |
db140521d102
recognize client-flags h and u, ROOM_CONTROL_ACCESS will be ignored from here on
sheepluva
parents:
7683
diff
changeset
|
509 |
|
db140521d102
recognize client-flags h and u, ROOM_CONTROL_ACCESS will be ignored from here on
sheepluva
parents:
7683
diff
changeset
|
510 |
// flag indicating if a player is admin (if so -> worship them!) |
7683
993337e5021f
client-flags: make code easier to read/prettier; add parsing of flag 'a'; add warning in console on unknown flag; ignore ADMIN_ACCESS
sheepluva
parents:
7545
diff
changeset
|
511 |
case 'a': |
993337e5021f
client-flags: make code easier to read/prettier; add parsing of flag 'a'; add warning in console on unknown flag; ignore ADMIN_ACCESS
sheepluva
parents:
7545
diff
changeset
|
512 |
foreach (const QString & nick, nicks) |
993337e5021f
client-flags: make code easier to read/prettier; add parsing of flag 'a'; add warning in console on unknown flag; ignore ADMIN_ACCESS
sheepluva
parents:
7545
diff
changeset
|
513 |
{ |
993337e5021f
client-flags: make code easier to read/prettier; add parsing of flag 'a'; add warning in console on unknown flag; ignore ADMIN_ACCESS
sheepluva
parents:
7545
diff
changeset
|
514 |
if (nick == mynick) |
993337e5021f
client-flags: make code easier to read/prettier; add parsing of flag 'a'; add warning in console on unknown flag; ignore ADMIN_ACCESS
sheepluva
parents:
7545
diff
changeset
|
515 |
emit adminAccess(setFlag); |
993337e5021f
client-flags: make code easier to read/prettier; add parsing of flag 'a'; add warning in console on unknown flag; ignore ADMIN_ACCESS
sheepluva
parents:
7545
diff
changeset
|
516 |
|
7728 | 517 |
m_playersModel->setFlag(nick, PlayersListModel::ServerAdmin, setFlag); |
7683
993337e5021f
client-flags: make code easier to read/prettier; add parsing of flag 'a'; add warning in console on unknown flag; ignore ADMIN_ACCESS
sheepluva
parents:
7545
diff
changeset
|
518 |
} |
993337e5021f
client-flags: make code easier to read/prettier; add parsing of flag 'a'; add warning in console on unknown flag; ignore ADMIN_ACCESS
sheepluva
parents:
7545
diff
changeset
|
519 |
break; |
993337e5021f
client-flags: make code easier to read/prettier; add parsing of flag 'a'; add warning in console on unknown flag; ignore ADMIN_ACCESS
sheepluva
parents:
7545
diff
changeset
|
520 |
|
993337e5021f
client-flags: make code easier to read/prettier; add parsing of flag 'a'; add warning in console on unknown flag; ignore ADMIN_ACCESS
sheepluva
parents:
7545
diff
changeset
|
521 |
default: |
993337e5021f
client-flags: make code easier to read/prettier; add parsing of flag 'a'; add warning in console on unknown flag; ignore ADMIN_ACCESS
sheepluva
parents:
7545
diff
changeset
|
522 |
qWarning() << "Net: Unknown client-flag: " << c; |
4917
8ff92bdc9f98
Convert READY and NOT_READY messages to CLIENT_FLAGS message
unc0rr
parents:
4908
diff
changeset
|
523 |
} |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
524 |
} |
4917
8ff92bdc9f98
Convert READY and NOT_READY messages to CLIENT_FLAGS message
unc0rr
parents:
4908
diff
changeset
|
525 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
526 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
527 |
} |
1405 | 528 |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
529 |
if(lst[0] == "KICKED") |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
530 |
{ |
6036 | 531 |
netClientState = InLobby; |
6513
677b96d13e1f
Auto refresh room list after leaving room. Fixes issue #320 for voluntarily and involuntarily coming to room list.
blackmetalowiec
parents:
6222
diff
changeset
|
532 |
askRoomsList(); |
5998
e8f44e9433f0
many many netclient/frondent changes (just the beginning though):
sheepluva
parents:
5959
diff
changeset
|
533 |
emit LeftRoom(tr("You got kicked")); |
7732 | 534 |
m_playersModel->resetRoomFlags(); |
535 |
||
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
536 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
537 |
} |
1879 | 538 |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
539 |
if(lst[0] == "LOBBY:JOINED") |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
540 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
541 |
if(lst.size() < 2) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
542 |
{ |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
543 |
qWarning("Net: Bad JOINED message"); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
544 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
545 |
} |
2377 | 546 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
547 |
for(int i = 1; i < lst.size(); ++i) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
548 |
{ |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
549 |
if (lst[i] == mynick) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
550 |
{ |
10074 | 551 |
// check if server is authenticated or no authentication was performed at all |
552 |
if(!m_serverHash.isEmpty()) |
|
553 |
{ |
|
554 |
Error(tr("Server authentication error")); |
|
555 |
||
556 |
Disconnect(); |
|
557 |
} |
|
558 |
||
6036 | 559 |
netClientState = InLobby; |
11468 | 560 |
//RawSendNet(QString("LIST")); //deprecated |
6036 | 561 |
emit connected(); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
562 |
} |
1838
00a5fc50aa43
Use another event to change state from 'logging in' to 'lobby'
unc0rr
parents:
1829
diff
changeset
|
563 |
|
8891
bf67b4d7d7b4
- Better fix to friends joins/quits highlighting problem
unc0rr
parents:
8765
diff
changeset
|
564 |
m_playersModel->addPlayer(lst[i], false); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
565 |
} |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
566 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
567 |
} |
1566
6b63c75fdc68
Start work on lobby: add/remove nick from the list on join/quit
unc0rr
parents:
1560
diff
changeset
|
568 |
|
9702 | 569 |
if(lst[0] == "ROOM" && lst.size() == 11 && lst[1] == "ADD") |
6733 | 570 |
{ |
571 |
QStringList tmp = lst; |
|
572 |
tmp.removeFirst(); |
|
573 |
tmp.removeFirst(); |
|
574 |
||
575 |
m_roomsListModel->addRoom(tmp); |
|
576 |
return; |
|
577 |
} |
|
578 |
||
9702 | 579 |
if(lst[0] == "ROOM" && lst.size() == 12 && lst[1] == "UPD") |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
580 |
{ |
6733 | 581 |
QStringList tmp = lst; |
582 |
tmp.removeFirst(); |
|
583 |
tmp.removeFirst(); |
|
584 |
||
585 |
QString roomName = tmp.takeFirst(); |
|
586 |
m_roomsListModel->updateRoom(roomName, tmp); |
|
7710
fd5bcbd698a5
- Keep track of room name so correct name is displayed when you become room admin
unc0rr
parents:
7684
diff
changeset
|
587 |
|
8489
25cb6f4a1d1b
Implements protocol message JOINING on frontend, so client in a room always displays correct room name, even when room name changes. Fixes issue 522.
dag10
parents:
8436
diff
changeset
|
588 |
// keep track of room name so correct name is displayed |
9906
93c16a4b0c6a
Only emit roomNameUpdated when it actually is changed
unc0rr
parents:
9730
diff
changeset
|
589 |
if(myroom == roomName && myroom != tmp[1]) |
8489
25cb6f4a1d1b
Implements protocol message JOINING on frontend, so client in a room always displays correct room name, even when room name changes. Fixes issue 522.
dag10
parents:
8436
diff
changeset
|
590 |
{ |
7712 | 591 |
myroom = tmp[1]; |
8489
25cb6f4a1d1b
Implements protocol message JOINING on frontend, so client in a room always displays correct room name, even when room name changes. Fixes issue 522.
dag10
parents:
8436
diff
changeset
|
592 |
emit roomNameUpdated(myroom); |
25cb6f4a1d1b
Implements protocol message JOINING on frontend, so client in a room always displays correct room name, even when room name changes. Fixes issue 522.
dag10
parents:
8436
diff
changeset
|
593 |
} |
7710
fd5bcbd698a5
- Keep track of room name so correct name is displayed when you become room admin
unc0rr
parents:
7684
diff
changeset
|
594 |
|
6733 | 595 |
return; |
596 |
} |
|
597 |
||
598 |
if(lst[0] == "ROOM" && lst.size() == 3 && lst[1] == "DEL") |
|
599 |
{ |
|
600 |
m_roomsListModel->removeRoom(lst[2]); |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
601 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
602 |
} |
1591 | 603 |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
604 |
if(lst[0] == "LOBBY:LEFT") |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
605 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
606 |
if(lst.size() < 2) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
607 |
{ |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
608 |
qWarning("Net: Bad LOBBY:LEFT message"); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
609 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
610 |
} |
8759 | 611 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
612 |
if (lst.size() < 3) |
8891
bf67b4d7d7b4
- Better fix to friends joins/quits highlighting problem
unc0rr
parents:
8765
diff
changeset
|
613 |
m_playersModel->removePlayer(lst[1]); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
614 |
else |
8891
bf67b4d7d7b4
- Better fix to friends joins/quits highlighting problem
unc0rr
parents:
8765
diff
changeset
|
615 |
m_playersModel->removePlayer(lst[1], lst[2]); |
7725 | 616 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
617 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
618 |
} |
1566
6b63c75fdc68
Start work on lobby: add/remove nick from the list on join/quit
unc0rr
parents:
1560
diff
changeset
|
619 |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
620 |
if (lst[0] == "ASKPASSWORD") |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
621 |
{ |
10074 | 622 |
// server should send us salt of at least 16 characters |
623 |
||
624 |
if(lst.size() < 2 || lst[1].size() < 16) |
|
625 |
{ |
|
626 |
qWarning("Net: Bad ASKPASSWORD message"); |
|
627 |
return; |
|
628 |
} |
|
629 |
||
8291
e4a0d980d1e2
Patched login dialog bugs, added retry dialogs
Ondrej Skopek <skopekondrej@gmail.com>
parents:
8157
diff
changeset
|
630 |
emit NickRegistered(mynick); |
8299
ef2e284255cd
Added handling of not registered nicks (no change-server side tho), clearPasswordHash() also now sets the savepassword setting to false
Ondrej Skopek <skopekondrej@gmail.com>
parents:
8291
diff
changeset
|
631 |
m_nick_registered = true; |
10074 | 632 |
|
633 |
// store server salt |
|
634 |
// when this variable is set, it is assumed that server asked us for a password |
|
635 |
m_serverSalt = lst[1]; |
|
636 |
m_clientSalt = QUuid::createUuid().toString(); |
|
637 |
||
638 |
maybeSendPassword(); |
|
639 |
||
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
640 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
641 |
} |
1841
fba7210b438b
Retrieve client password from web database and ask for it
unc0rr
parents:
1838
diff
changeset
|
642 |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
643 |
if (lst[0] == "NOTICE") |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
644 |
{ |
4879
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
645 |
if(lst.size() < 2) |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
646 |
{ |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
647 |
qWarning("Net: Bad NOTICE message"); |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
648 |
return; |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
649 |
} |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
650 |
|
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
651 |
bool ok; |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
652 |
int n = lst[1].toInt(&ok); |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
653 |
if(!ok) |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
654 |
{ |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
655 |
qWarning("Net: Bad NOTICE message"); |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
656 |
return; |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
657 |
} |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
658 |
|
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
659 |
handleNotice(n); |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
660 |
|
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
661 |
return; |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
662 |
} |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
663 |
|
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
664 |
if (lst[0] == "BYE") |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
665 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
666 |
if (lst.size() < 2) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
667 |
{ |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
668 |
qWarning("Net: Bad BYE message"); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
669 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
670 |
} |
5861 | 671 |
if (lst[1] == "Authentication failed") |
672 |
{ |
|
5998
e8f44e9433f0
many many netclient/frondent changes (just the beginning though):
sheepluva
parents:
5959
diff
changeset
|
673 |
emit AuthFailed(); |
8401
87410ae372f6
Server messages localization using Qt's l10n subsystem:
unc0rr
parents:
8396
diff
changeset
|
674 |
m_game_connected = false; |
87410ae372f6
Server messages localization using Qt's l10n subsystem:
unc0rr
parents:
8396
diff
changeset
|
675 |
Disconnect(); |
87410ae372f6
Server messages localization using Qt's l10n subsystem:
unc0rr
parents:
8396
diff
changeset
|
676 |
//omitted 'emit disconnected()', we don't want the error message |
87410ae372f6
Server messages localization using Qt's l10n subsystem:
unc0rr
parents:
8396
diff
changeset
|
677 |
return; |
5861 | 678 |
} |
5998
e8f44e9433f0
many many netclient/frondent changes (just the beginning though):
sheepluva
parents:
5959
diff
changeset
|
679 |
m_game_connected = false; |
e8f44e9433f0
many many netclient/frondent changes (just the beginning though):
sheepluva
parents:
5959
diff
changeset
|
680 |
Disconnect(); |
12902
fc47fc4af6bd
Finish porting. Seems to work, but no thorough testing has been performed
unc0rr
parents:
11870
diff
changeset
|
681 |
emit disconnected(HWApplication::translate("server", lst[1].toLatin1().constData())); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
682 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
683 |
} |
1512
43742041c211
- Don't send 'Bad param' msg, as the only reason of it is just some lag
unc0rr
parents:
1475
diff
changeset
|
684 |
|
8489
25cb6f4a1d1b
Implements protocol message JOINING on frontend, so client in a room always displays correct room name, even when room name changes. Fixes issue 522.
dag10
parents:
8436
diff
changeset
|
685 |
if(lst[0] == "JOINING") |
25cb6f4a1d1b
Implements protocol message JOINING on frontend, so client in a room always displays correct room name, even when room name changes. Fixes issue 522.
dag10
parents:
8436
diff
changeset
|
686 |
{ |
9730 | 687 |
if(lst.size() != 2) |
8489
25cb6f4a1d1b
Implements protocol message JOINING on frontend, so client in a room always displays correct room name, even when room name changes. Fixes issue 522.
dag10
parents:
8436
diff
changeset
|
688 |
{ |
25cb6f4a1d1b
Implements protocol message JOINING on frontend, so client in a room always displays correct room name, even when room name changes. Fixes issue 522.
dag10
parents:
8436
diff
changeset
|
689 |
qWarning("Net: Bad JOINING message"); |
25cb6f4a1d1b
Implements protocol message JOINING on frontend, so client in a room always displays correct room name, even when room name changes. Fixes issue 522.
dag10
parents:
8436
diff
changeset
|
690 |
return; |
25cb6f4a1d1b
Implements protocol message JOINING on frontend, so client in a room always displays correct room name, even when room name changes. Fixes issue 522.
dag10
parents:
8436
diff
changeset
|
691 |
} |
25cb6f4a1d1b
Implements protocol message JOINING on frontend, so client in a room always displays correct room name, even when room name changes. Fixes issue 522.
dag10
parents:
8436
diff
changeset
|
692 |
|
25cb6f4a1d1b
Implements protocol message JOINING on frontend, so client in a room always displays correct room name, even when room name changes. Fixes issue 522.
dag10
parents:
8436
diff
changeset
|
693 |
myroom = lst[1]; |
25cb6f4a1d1b
Implements protocol message JOINING on frontend, so client in a room always displays correct room name, even when room name changes. Fixes issue 522.
dag10
parents:
8436
diff
changeset
|
694 |
emit roomNameUpdated(myroom); |
9730 | 695 |
return; |
8489
25cb6f4a1d1b
Implements protocol message JOINING on frontend, so client in a room always displays correct room name, even when room name changes. Fixes issue 522.
dag10
parents:
8436
diff
changeset
|
696 |
} |
25cb6f4a1d1b
Implements protocol message JOINING on frontend, so client in a room always displays correct room name, even when room name changes. Fixes issue 522.
dag10
parents:
8436
diff
changeset
|
697 |
|
7535 | 698 |
if(netClientState == InLobby && lst[0] == "JOINED") |
699 |
{ |
|
700 |
if(lst.size() < 2 || lst[1] != mynick) |
|
701 |
{ |
|
702 |
qWarning("Net: Bad JOINED message"); |
|
703 |
return; |
|
704 |
} |
|
705 |
||
706 |
for(int i = 1; i < lst.size(); ++i) |
|
707 |
{ |
|
708 |
if (lst[i] == mynick) |
|
709 |
{ |
|
710 |
netClientState = InRoom; |
|
711 |
emit EnteredGame(); |
|
712 |
emit roomMaster(isChief); |
|
713 |
if (isChief) |
|
714 |
emit configAsked(); |
|
715 |
} |
|
716 |
||
8891
bf67b4d7d7b4
- Better fix to friends joins/quits highlighting problem
unc0rr
parents:
8765
diff
changeset
|
717 |
m_playersModel->playerJoinedRoom(lst[i], isChief && (lst[i] != mynick)); |
bf67b4d7d7b4
- Better fix to friends joins/quits highlighting problem
unc0rr
parents:
8765
diff
changeset
|
718 |
|
7535 | 719 |
emit chatStringFromNet(tr("%1 *** %2 has joined the room").arg('\x03').arg(lst[i])); |
720 |
} |
|
721 |
return; |
|
722 |
} |
|
7526
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
723 |
|
7545 | 724 |
if(netClientState == InRoom || netClientState == InGame) |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
725 |
{ |
7526
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
726 |
if (lst[0] == "EM") |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
727 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
728 |
if(lst.size() < 2) |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
729 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
730 |
qWarning("Net: Bad EM message"); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
731 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
732 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
733 |
for(int i = 1; i < lst.size(); ++i) |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
734 |
{ |
12902
fc47fc4af6bd
Finish porting. Seems to work, but no thorough testing has been performed
unc0rr
parents:
11870
diff
changeset
|
735 |
QByteArray em = QByteArray::fromBase64(lst[i].toLatin1()); |
7526
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
736 |
emit FromNet(em); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
737 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
738 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
739 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
740 |
|
8303
6331bceac95c
Pass ROUND_FINISHED to engine so it could stop syncing
unc0rr
parents:
8299
diff
changeset
|
741 |
if (lst[0] == "ROUND_FINISHED") |
6331bceac95c
Pass ROUND_FINISHED to engine so it could stop syncing
unc0rr
parents:
8299
diff
changeset
|
742 |
{ |
6331bceac95c
Pass ROUND_FINISHED to engine so it could stop syncing
unc0rr
parents:
8299
diff
changeset
|
743 |
emit FromNet(QByteArray("\x01o")); |
6331bceac95c
Pass ROUND_FINISHED to engine so it could stop syncing
unc0rr
parents:
8299
diff
changeset
|
744 |
return; |
6331bceac95c
Pass ROUND_FINISHED to engine so it could stop syncing
unc0rr
parents:
8299
diff
changeset
|
745 |
} |
6331bceac95c
Pass ROUND_FINISHED to engine so it could stop syncing
unc0rr
parents:
8299
diff
changeset
|
746 |
|
7526
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
747 |
if (lst[0] == "ADD_TEAM") |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
748 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
749 |
if(lst.size() != 24) |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
750 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
751 |
qWarning("Net: Bad ADDTEAM message"); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
752 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
753 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
754 |
QStringList tmp = lst; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
755 |
tmp.removeFirst(); |
10400
47e2189eae44
This should make frontend aware of your own teams in game on rejoin
unc0rr
parents:
10248
diff
changeset
|
756 |
HWTeam team(tmp); |
47e2189eae44
This should make frontend aware of your own teams in game on rejoin
unc0rr
parents:
10248
diff
changeset
|
757 |
emit AddNetTeam(team); |
7526
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
758 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
759 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
760 |
|
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
761 |
if (lst[0] == "REMOVE_TEAM") |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
762 |
{ |
7526
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
763 |
if(lst.size() != 2) |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
764 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
765 |
qWarning("Net: Bad REMOVETEAM message"); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
766 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
767 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
768 |
emit RemoveNetTeam(HWTeam(lst[1])); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
769 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
770 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
771 |
|
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
772 |
if(lst[0] == "ROOMABANDONED") |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
773 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
774 |
netClientState = InLobby; |
7732 | 775 |
m_playersModel->resetRoomFlags(); |
7526
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
776 |
emit LeftRoom(tr("Room destroyed")); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
777 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
778 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
779 |
|
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
780 |
if (lst[0] == "RUN_GAME") |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
781 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
782 |
netClientState = InGame; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
783 |
emit AskForRunGame(); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
784 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
785 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
786 |
|
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
787 |
if (lst[0] == "TEAM_ACCEPTED") |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
788 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
789 |
if (lst.size() != 2) |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
790 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
791 |
qWarning("Net: Bad TEAM_ACCEPTED message"); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
792 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
793 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
794 |
emit TeamAccepted(lst[1]); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
795 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
796 |
} |
7526
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
797 |
|
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
798 |
if (lst[0] == "CFG") |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
799 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
800 |
if(lst.size() < 3) |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
801 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
802 |
qWarning("Net: Bad CFG message"); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
803 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
804 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
805 |
QStringList tmp = lst; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
806 |
tmp.removeFirst(); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
807 |
tmp.removeFirst(); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
808 |
if (lst[1] == "SCHEME") |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
809 |
emit netSchemeConfig(tmp); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
810 |
else |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
811 |
emit paramChanged(lst[1], tmp); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
812 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
813 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
814 |
|
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
815 |
if (lst[0] == "HH_NUM") |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
816 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
817 |
if (lst.size() != 3) |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
818 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
819 |
qWarning("Net: Bad TEAM_ACCEPTED message"); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
820 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
821 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
822 |
HWTeam tmptm(lst[1]); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
823 |
tmptm.setNumHedgehogs(lst[2].toUInt()); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
824 |
emit hhnumChanged(tmptm); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
825 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
826 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
827 |
|
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
828 |
if (lst[0] == "TEAM_COLOR") |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
829 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
830 |
if (lst.size() != 3) |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
831 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
832 |
qWarning("Net: Bad TEAM_COLOR message"); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
833 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
834 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
835 |
HWTeam tmptm(lst[1]); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
836 |
tmptm.setColor(lst[2].toInt()); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
837 |
emit teamColorChanged(tmptm); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
838 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
839 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
840 |
|
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
841 |
if(lst[0] == "JOINED") |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
842 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
843 |
if(lst.size() < 2) |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
844 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
845 |
qWarning("Net: Bad JOINED message"); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
846 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
847 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
848 |
|
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
849 |
for(int i = 1; i < lst.size(); ++i) |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
850 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
851 |
emit chatStringFromNet(tr("%1 *** %2 has joined the room").arg('\x03').arg(lst[i])); |
8891
bf67b4d7d7b4
- Better fix to friends joins/quits highlighting problem
unc0rr
parents:
8765
diff
changeset
|
852 |
m_playersModel->playerJoinedRoom(lst[i], isChief && (lst[i] != mynick)); |
7526
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
853 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
854 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
855 |
} |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
856 |
|
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
857 |
if(lst[0] == "LEFT") |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
858 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
859 |
if(lst.size() < 2) |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
860 |
{ |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
861 |
qWarning("Net: Bad LEFT message"); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
862 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
863 |
} |
8891
bf67b4d7d7b4
- Better fix to friends joins/quits highlighting problem
unc0rr
parents:
8765
diff
changeset
|
864 |
|
7526
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
865 |
if (lst.size() < 3) |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
866 |
emit chatStringFromNet(tr("%1 *** %2 has left").arg('\x03').arg(lst[1])); |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
867 |
else |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
868 |
emit chatStringFromNet(tr("%1 *** %2 has left (%3)").arg('\x03').arg(lst[1], lst[2])); |
7731 | 869 |
m_playersModel->playerLeftRoom(lst[1]); |
7526
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
870 |
return; |
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
871 |
} |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
872 |
} |
2340
3b35fd5f67c7
Fix a bug when you are unable to do anything in lobby when room is closed during round
unc0rr
parents:
2335
diff
changeset
|
873 |
|
7526
ff3a05e29ddd
Don't accept room messages when not in room state. Not tested even if it builds.
unc0rr
parents:
7130
diff
changeset
|
874 |
qWarning() << "Net: Unknown message or wrong state:" << lst; |
315 | 875 |
} |
876 |
||
352 | 877 |
void HWNewNet::onHedgehogsNumChanged(const HWTeam& team) |
878 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
879 |
if (isChief) |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
880 |
RawSendNet(QString("HH_NUM%1%2%1%3") |
10695 | 881 |
.arg(delimiter) |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
882 |
.arg(team.name()) |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
883 |
.arg(team.numHedgehogs())); |
352 | 884 |
} |
885 |
||
372 | 886 |
void HWNewNet::onTeamColorChanged(const HWTeam& team) |
887 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
888 |
if (isChief) |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
889 |
RawSendNet(QString("TEAM_COLOR%1%2%1%3") |
10695 | 890 |
.arg(delimiter) |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
891 |
.arg(team.name()) |
7130 | 892 |
.arg(team.color())); |
372 | 893 |
} |
894 |
||
1873
815a3ff1fe4b
Start refactoring some things. Frontend becomes temporarily unusable for network game
unc0rr
parents:
1866
diff
changeset
|
895 |
void HWNewNet::onParamChanged(const QString & param, const QStringList & value) |
1782
e7589e37a6d6
Options for bonus box probability tuning and number of turn until sudden death
unc0rr
parents:
1742
diff
changeset
|
896 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
897 |
if (isChief) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
898 |
RawSendNet( |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
899 |
QString("CFG%1%2%1%3") |
10695 | 900 |
.arg(delimiter) |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
901 |
.arg(param) |
10695 | 902 |
.arg(value.join(QString(delimiter))) |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
903 |
); |
1797 | 904 |
} |
905 |
||
8765
688062f1db59
fix/hack so that (own) messages sent in frontend are also visible in the game chat
sheepluva
parents:
8762
diff
changeset
|
906 |
void HWNewNet::chatLineToNetWithEcho(const QString& str) |
688062f1db59
fix/hack so that (own) messages sent in frontend are also visible in the game chat
sheepluva
parents:
8762
diff
changeset
|
907 |
{ |
688062f1db59
fix/hack so that (own) messages sent in frontend are also visible in the game chat
sheepluva
parents:
8762
diff
changeset
|
908 |
if(str != "") |
688062f1db59
fix/hack so that (own) messages sent in frontend are also visible in the game chat
sheepluva
parents:
8762
diff
changeset
|
909 |
{ |
688062f1db59
fix/hack so that (own) messages sent in frontend are also visible in the game chat
sheepluva
parents:
8762
diff
changeset
|
910 |
emit chatStringFromNet(HWProto::formatChatMsg(mynick, str)); |
688062f1db59
fix/hack so that (own) messages sent in frontend are also visible in the game chat
sheepluva
parents:
8762
diff
changeset
|
911 |
chatLineToNet(str); |
688062f1db59
fix/hack so that (own) messages sent in frontend are also visible in the game chat
sheepluva
parents:
8762
diff
changeset
|
912 |
} |
688062f1db59
fix/hack so that (own) messages sent in frontend are also visible in the game chat
sheepluva
parents:
8762
diff
changeset
|
913 |
} |
688062f1db59
fix/hack so that (own) messages sent in frontend are also visible in the game chat
sheepluva
parents:
8762
diff
changeset
|
914 |
|
453 | 915 |
void HWNewNet::chatLineToNet(const QString& str) |
916 |
{ |
|
13327
b77a9380dd0f
QT for some reason messes with XCompose causing broken input (Qt 5 only - Qt 4 did not break anything). In Qt 5.2 and 5.3 this was causing an invalid conversion in chat messages containing these resulting in the bad bytes being stripped. In Qt 5.9 it is still broken, but you at least get a string with something in it. This checks for non-zero converted strings for room creation and chat lines.
nemo
parents:
12902
diff
changeset
|
917 |
if(ByteLength(str)) |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
918 |
{ |
10695 | 919 |
RawSendNet(QString("CHAT") + delimiter + str); |
8759 | 920 |
QString action = HWProto::chatStringToAction(str); |
921 |
if (action != NULL) |
|
922 |
emit(roomChatAction(mynick, action)); |
|
923 |
else |
|
924 |
emit(roomChatMessage(mynick, str)); |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
925 |
} |
1568 | 926 |
} |
927 |
||
928 |
void HWNewNet::chatLineToLobby(const QString& str) |
|
929 |
{ |
|
13327
b77a9380dd0f
QT for some reason messes with XCompose causing broken input (Qt 5 only - Qt 4 did not break anything). In Qt 5.2 and 5.3 this was causing an invalid conversion in chat messages containing these resulting in the bad bytes being stripped. In Qt 5.9 it is still broken, but you at least get a string with something in it. This checks for non-zero converted strings for room creation and chat lines.
nemo
parents:
12902
diff
changeset
|
930 |
if(ByteLength(str)) |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
931 |
{ |
10695 | 932 |
RawSendNet(QString("CHAT") + delimiter + str); |
8759 | 933 |
QString action = HWProto::chatStringToAction(str); |
934 |
if (action != NULL) |
|
935 |
emit(lobbyChatAction(mynick, action)); |
|
936 |
else |
|
937 |
emit(lobbyChatMessage(mynick, str)); |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
938 |
} |
453 | 939 |
} |
1315 | 940 |
|
2403 | 941 |
void HWNewNet::SendTeamMessage(const QString& str) |
942 |
{ |
|
10695 | 943 |
RawSendNet(QString("TEAMCHAT") + delimiter + str); |
2403 | 944 |
} |
945 |
||
1315 | 946 |
void HWNewNet::askRoomsList() |
947 |
{ |
|
6036 | 948 |
if(netClientState != InLobby) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
949 |
{ |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
950 |
qWarning("Illegal try to get rooms list!"); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
951 |
return; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
952 |
} |
11468 | 953 |
//RawSendNet(QString("LIST")); //deprecated |
1315 | 954 |
} |
1339 | 955 |
|
6036 | 956 |
HWNewNet::ClientState HWNewNet::clientState() |
2821 | 957 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
958 |
return netClientState; |
2821 | 959 |
} |
960 |
||
961 |
QString HWNewNet::getNick() |
|
962 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
963 |
return mynick; |
2821 | 964 |
} |
965 |
||
966 |
QString HWNewNet::getRoom() |
|
967 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
968 |
return myroom; |
2821 | 969 |
} |
970 |
||
971 |
QString HWNewNet::getHost() |
|
972 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
973 |
return myhost; |
2821 | 974 |
} |
975 |
||
1339 | 976 |
bool HWNewNet::isRoomChief() |
977 |
{ |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
978 |
return isChief; |
1339 | 979 |
} |
1344
4004e597f1bf
Clients send roundfinished message to server when the round is over
unc0rr
parents:
1339
diff
changeset
|
980 |
|
4908
99d6797b7ff4
Frontend sends ROUNDFINISHED with information about whether the round was played till end (will be needed for stats)
unc0rr
parents:
4897
diff
changeset
|
981 |
void HWNewNet::gameFinished(bool correctly) |
1344
4004e597f1bf
Clients send roundfinished message to server when the round is over
unc0rr
parents:
1339
diff
changeset
|
982 |
{ |
6739
97dab041f995
Send ROUND_FINISHED only once (only from in game mode)
unc0rr
parents:
6737
diff
changeset
|
983 |
if (netClientState == InGame) |
97dab041f995
Send ROUND_FINISHED only once (only from in game mode)
unc0rr
parents:
6737
diff
changeset
|
984 |
{ |
97dab041f995
Send ROUND_FINISHED only once (only from in game mode)
unc0rr
parents:
6737
diff
changeset
|
985 |
netClientState = InRoom; |
10695 | 986 |
RawSendNet(QString("ROUNDFINISHED%1%2").arg(delimiter).arg(correctly ? "1" : "0")); |
6739
97dab041f995
Send ROUND_FINISHED only once (only from in game mode)
unc0rr
parents:
6737
diff
changeset
|
987 |
} |
1344
4004e597f1bf
Clients send roundfinished message to server when the round is over
unc0rr
parents:
1339
diff
changeset
|
988 |
} |
1378 | 989 |
|
1860 | 990 |
void HWNewNet::banPlayer(const QString & nick) |
991 |
{ |
|
10695 | 992 |
RawSendNet(QString("BAN%1%2").arg(delimiter).arg(nick)); |
1860 | 993 |
} |
994 |
||
8157 | 995 |
void HWNewNet::banIP(const QString & ip, const QString & reason, int seconds) |
996 |
{ |
|
10695 | 997 |
RawSendNet(QString("BANIP%1%2%1%3%1%4").arg(delimiter).arg(ip).arg(reason).arg(seconds)); |
8157 | 998 |
} |
999 |
||
1000 |
void HWNewNet::banNick(const QString & nick, const QString & reason, int seconds) |
|
1001 |
{ |
|
10695 | 1002 |
RawSendNet(QString("BANNICK%1%2%1%3%1%4").arg(delimiter).arg(nick).arg(reason).arg(seconds)); |
8157 | 1003 |
} |
1004 |
||
1005 |
void HWNewNet::getBanList() |
|
1006 |
{ |
|
1007 |
RawSendNet(QByteArray("BANLIST")); |
|
1008 |
} |
|
1009 |
||
1010 |
void HWNewNet::removeBan(const QString & b) |
|
1011 |
{ |
|
10695 | 1012 |
RawSendNet(QString("UNBAN%1%2").arg(delimiter).arg(b)); |
8157 | 1013 |
} |
1014 |
||
1391 | 1015 |
void HWNewNet::kickPlayer(const QString & nick) |
1016 |
{ |
|
10695 | 1017 |
RawSendNet(QString("KICK%1%2").arg(delimiter).arg(nick)); |
1391 | 1018 |
} |
1410
eece43296890
Send appropriate messages to server on control menu actions
unc0rr
parents:
1405
diff
changeset
|
1019 |
|
11870
047be82b6f67
fix for Bug 91 - Make DELEGATE action available in frontend
sheepluva
parents:
11468
diff
changeset
|
1020 |
void HWNewNet::delegateToPlayer(const QString & nick) |
047be82b6f67
fix for Bug 91 - Make DELEGATE action available in frontend
sheepluva
parents:
11468
diff
changeset
|
1021 |
{ |
047be82b6f67
fix for Bug 91 - Make DELEGATE action available in frontend
sheepluva
parents:
11468
diff
changeset
|
1022 |
RawSendNet(QString("DELEGATE%1%2").arg(delimiter).arg(nick)); |
047be82b6f67
fix for Bug 91 - Make DELEGATE action available in frontend
sheepluva
parents:
11468
diff
changeset
|
1023 |
} |
047be82b6f67
fix for Bug 91 - Make DELEGATE action available in frontend
sheepluva
parents:
11468
diff
changeset
|
1024 |
|
1577 | 1025 |
void HWNewNet::infoPlayer(const QString & nick) |
1026 |
{ |
|
10695 | 1027 |
RawSendNet(QString("INFO%1%2").arg(delimiter).arg(nick)); |
1577 | 1028 |
} |
1029 |
||
2706
935b7d618cf0
sheepluva's patch to add a "follow" command to server and frontend, in order to stalk people and join them in their rooms
koda
parents:
2543
diff
changeset
|
1030 |
void HWNewNet::followPlayer(const QString & nick) |
935b7d618cf0
sheepluva's patch to add a "follow" command to server and frontend, in order to stalk people and join them in their rooms
koda
parents:
2543
diff
changeset
|
1031 |
{ |
6616
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
1032 |
if (!isInRoom()) |
f77bb02b669f
astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents:
6539
diff
changeset
|
1033 |
{ |
10695 | 1034 |
RawSendNet(QString("FOLLOW%1%2").arg(delimiter).arg(nick)); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
1035 |
isChief = false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
1036 |
} |
2706
935b7d618cf0
sheepluva's patch to add a "follow" command to server and frontend, in order to stalk people and join them in their rooms
koda
parents:
2543
diff
changeset
|
1037 |
} |
935b7d618cf0
sheepluva's patch to add a "follow" command to server and frontend, in order to stalk people and join them in their rooms
koda
parents:
2543
diff
changeset
|
1038 |
|
8396 | 1039 |
void HWNewNet::consoleCommand(const QString & cmd) |
1040 |
{ |
|
10695 | 1041 |
RawSendNet(QString("CMD%1%2").arg(delimiter).arg(cmd)); |
8396 | 1042 |
} |
1043 |
||
8416
e691acd778f5
It is now possible to start a game even if not all players are "ready"; a confirmation prompt is shown. This commit updates the server.
dag10
parents:
8401
diff
changeset
|
1044 |
bool HWNewNet::allPlayersReady() |
e691acd778f5
It is now possible to start a game even if not all players are "ready"; a confirmation prompt is shown. This commit updates the server.
dag10
parents:
8401
diff
changeset
|
1045 |
{ |
e691acd778f5
It is now possible to start a game even if not all players are "ready"; a confirmation prompt is shown. This commit updates the server.
dag10
parents:
8401
diff
changeset
|
1046 |
int ready = 0; |
e691acd778f5
It is now possible to start a game even if not all players are "ready"; a confirmation prompt is shown. This commit updates the server.
dag10
parents:
8401
diff
changeset
|
1047 |
for (int i = 0; i < m_roomPlayersModel->rowCount(); i++) |
e691acd778f5
It is now possible to start a game even if not all players are "ready"; a confirmation prompt is shown. This commit updates the server.
dag10
parents:
8401
diff
changeset
|
1048 |
if (m_roomPlayersModel->index(i, 0).data(PlayersListModel::Ready).toBool()) ready++; |
e691acd778f5
It is now possible to start a game even if not all players are "ready"; a confirmation prompt is shown. This commit updates the server.
dag10
parents:
8401
diff
changeset
|
1049 |
|
e691acd778f5
It is now possible to start a game even if not all players are "ready"; a confirmation prompt is shown. This commit updates the server.
dag10
parents:
8401
diff
changeset
|
1050 |
return (ready == m_roomPlayersModel->rowCount()); |
e691acd778f5
It is now possible to start a game even if not all players are "ready"; a confirmation prompt is shown. This commit updates the server.
dag10
parents:
8401
diff
changeset
|
1051 |
} |
e691acd778f5
It is now possible to start a game even if not all players are "ready"; a confirmation prompt is shown. This commit updates the server.
dag10
parents:
8401
diff
changeset
|
1052 |
|
1410
eece43296890
Send appropriate messages to server on control menu actions
unc0rr
parents:
1405
diff
changeset
|
1053 |
void HWNewNet::startGame() |
eece43296890
Send appropriate messages to server on control menu actions
unc0rr
parents:
1405
diff
changeset
|
1054 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
1055 |
RawSendNet(QString("START_GAME")); |
1410
eece43296890
Send appropriate messages to server on control menu actions
unc0rr
parents:
1405
diff
changeset
|
1056 |
} |
eece43296890
Send appropriate messages to server on control menu actions
unc0rr
parents:
1405
diff
changeset
|
1057 |
|
5126 | 1058 |
void HWNewNet::updateRoomName(const QString & name) |
1059 |
{ |
|
10695 | 1060 |
RawSendNet(QString("ROOM_NAME%1%2").arg(delimiter).arg(name)); |
5126 | 1061 |
} |
1062 |
||
1063 |
||
1410
eece43296890
Send appropriate messages to server on control menu actions
unc0rr
parents:
1405
diff
changeset
|
1064 |
void HWNewNet::toggleRestrictJoins() |
eece43296890
Send appropriate messages to server on control menu actions
unc0rr
parents:
1405
diff
changeset
|
1065 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
1066 |
RawSendNet(QString("TOGGLE_RESTRICT_JOINS")); |
1410
eece43296890
Send appropriate messages to server on control menu actions
unc0rr
parents:
1405
diff
changeset
|
1067 |
} |
eece43296890
Send appropriate messages to server on control menu actions
unc0rr
parents:
1405
diff
changeset
|
1068 |
|
eece43296890
Send appropriate messages to server on control menu actions
unc0rr
parents:
1405
diff
changeset
|
1069 |
void HWNewNet::toggleRestrictTeamAdds() |
eece43296890
Send appropriate messages to server on control menu actions
unc0rr
parents:
1405
diff
changeset
|
1070 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
1071 |
RawSendNet(QString("TOGGLE_RESTRICT_TEAMS")); |
1410
eece43296890
Send appropriate messages to server on control menu actions
unc0rr
parents:
1405
diff
changeset
|
1072 |
} |
1592
5ee77ee470a6
Start converting network protocol to no-disconnecting religion
unc0rr
parents:
1591
diff
changeset
|
1073 |
|
8559 | 1074 |
void HWNewNet::toggleRegisteredOnly() |
1075 |
{ |
|
1076 |
RawSendNet(QString("TOGGLE_REGISTERED_ONLY")); |
|
1077 |
} |
|
1078 |
||
2155
d897222d3339
Implement ability for server admin to clear accounts cache
unc0rr
parents:
2149
diff
changeset
|
1079 |
void HWNewNet::clearAccountsCache() |
d897222d3339
Implement ability for server admin to clear accounts cache
unc0rr
parents:
2149
diff
changeset
|
1080 |
{ |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
1081 |
RawSendNet(QString("CLEAR_ACCOUNTS_CACHE")); |
2155
d897222d3339
Implement ability for server admin to clear accounts cache
unc0rr
parents:
2149
diff
changeset
|
1082 |
} |
d897222d3339
Implement ability for server admin to clear accounts cache
unc0rr
parents:
2149
diff
changeset
|
1083 |
|
1592
5ee77ee470a6
Start converting network protocol to no-disconnecting religion
unc0rr
parents:
1591
diff
changeset
|
1084 |
void HWNewNet::partRoom() |
5ee77ee470a6
Start converting network protocol to no-disconnecting religion
unc0rr
parents:
1591
diff
changeset
|
1085 |
{ |
6036 | 1086 |
netClientState = InLobby; |
7732 | 1087 |
m_playersModel->resetRoomFlags(); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2821
diff
changeset
|
1088 |
RawSendNet(QString("PART")); |
1592
5ee77ee470a6
Start converting network protocol to no-disconnecting religion
unc0rr
parents:
1591
diff
changeset
|
1089 |
} |
1671 | 1090 |
|
1091 |
bool HWNewNet::isInRoom() |
|
1092 |
{ |
|
6036 | 1093 |
return netClientState >= InRoom; |
1671 | 1094 |
} |
1925 | 1095 |
|
3283 | 1096 |
void HWNewNet::setServerMessageNew(const QString & msg) |
1097 |
{ |
|
10695 | 1098 |
RawSendNet(QString("SET_SERVER_VAR%1MOTD_NEW%1%2").arg(delimiter).arg(msg)); |
3283 | 1099 |
} |
1100 |
||
1101 |
void HWNewNet::setServerMessageOld(const QString & msg) |
|
1925 | 1102 |
{ |
10695 | 1103 |
RawSendNet(QString("SET_SERVER_VAR%1MOTD_OLD%1%2").arg(delimiter).arg(msg)); |
1925 | 1104 |
} |
3283 | 1105 |
|
1106 |
void HWNewNet::setLatestProtocolVar(int proto) |
|
1107 |
{ |
|
10695 | 1108 |
RawSendNet(QString("SET_SERVER_VAR%1LATEST_PROTO%1%2").arg(delimiter).arg(proto)); |
3283 | 1109 |
} |
1110 |
||
1111 |
void HWNewNet::askServerVars() |
|
1112 |
{ |
|
3697 | 1113 |
RawSendNet(QString("GET_SERVER_VAR")); |
3343
6289df7747c0
Clarify an ambiguity as to what to do here if your name is already taken.
nemo
parents:
3283
diff
changeset
|
1114 |
} |
4879
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
1115 |
|
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
1116 |
void HWNewNet::handleNotice(int n) |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
1117 |
{ |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
1118 |
switch(n) |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
1119 |
{ |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
1120 |
case 0: |
5998
e8f44e9433f0
many many netclient/frondent changes (just the beginning though):
sheepluva
parents:
5959
diff
changeset
|
1121 |
emit NickTaken(mynick); |
4879
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
1122 |
break; |
9549 | 1123 |
case 2: |
1124 |
emit askForRoomPassword(); |
|
1125 |
break; |
|
4879
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
1126 |
} |
55f939e2c19c
Ask for another nickname on collision. Works only with new server.
unc0rr
parents:
4535
diff
changeset
|
1127 |
} |
6732
c906dc78091f
Start switching to rooms list model. To be continued.
unc0rr
parents:
6722
diff
changeset
|
1128 |
|
c906dc78091f
Start switching to rooms list model. To be continued.
unc0rr
parents:
6722
diff
changeset
|
1129 |
RoomsListModel * HWNewNet::roomsListModel() |
c906dc78091f
Start switching to rooms list model. To be continued.
unc0rr
parents:
6722
diff
changeset
|
1130 |
{ |
c906dc78091f
Start switching to rooms list model. To be continued.
unc0rr
parents:
6722
diff
changeset
|
1131 |
return m_roomsListModel; |
c906dc78091f
Start switching to rooms list model. To be continued.
unc0rr
parents:
6722
diff
changeset
|
1132 |
} |
7723 | 1133 |
|
7728 | 1134 |
QAbstractItemModel *HWNewNet::lobbyPlayersModel() |
7723 | 1135 |
{ |
1136 |
return m_lobbyPlayersModel; |
|
1137 |
} |
|
1138 |
||
7728 | 1139 |
QAbstractItemModel *HWNewNet::roomPlayersModel() |
7723 | 1140 |
{ |
1141 |
return m_roomPlayersModel; |
|
8436
b89aacebb9db
- Also pass unknown cmds to the server when in room
unc0rr
parents:
8416
diff
changeset
|
1142 |
} |
9549 | 1143 |
|
1144 |
void HWNewNet::roomPasswordEntered(const QString &password) |
|
1145 |
{ |
|
1146 |
if(!myroom.isEmpty()) |
|
1147 |
JoinRoom(myroom, password); |
|
1148 |
} |
|
10074 | 1149 |
|
1150 |
void HWNewNet::maybeSendPassword() |
|
1151 |
{ |
|
1152 |
/* When we got password hash, and server asked us for a password, perform mutual authentication: |
|
1153 |
* at this point we have salt chosen by server |
|
1154 |
* client sends client salt and hash of secret (password hash) salted with client salt, server salt, |
|
1155 |
* and static salt (predefined string + protocol number) |
|
1156 |
* server should respond with hash of the same set in different order. |
|
1157 |
*/ |
|
1158 |
||
1159 |
if(m_passwordHash.isEmpty() || m_serverSalt.isEmpty()) |
|
1160 |
return; |
|
1161 |
||
10076 | 1162 |
QString hash = QCryptographicHash::hash( |
12902
fc47fc4af6bd
Finish porting. Seems to work, but no thorough testing has been performed
unc0rr
parents:
11870
diff
changeset
|
1163 |
m_clientSalt.toLatin1() |
fc47fc4af6bd
Finish porting. Seems to work, but no thorough testing has been performed
unc0rr
parents:
11870
diff
changeset
|
1164 |
.append(m_serverSalt.toLatin1()) |
10074 | 1165 |
.append(m_passwordHash) |
12902
fc47fc4af6bd
Finish porting. Seems to work, but no thorough testing has been performed
unc0rr
parents:
11870
diff
changeset
|
1166 |
.append(cProtoVer->toLatin1()) |
10074 | 1167 |
.append("!hedgewars") |
10076 | 1168 |
, QCryptographicHash::Sha1).toHex(); |
10074 | 1169 |
|
1170 |
m_serverHash = QCryptographicHash::hash( |
|
12902
fc47fc4af6bd
Finish porting. Seems to work, but no thorough testing has been performed
unc0rr
parents:
11870
diff
changeset
|
1171 |
m_serverSalt.toLatin1() |
fc47fc4af6bd
Finish porting. Seems to work, but no thorough testing has been performed
unc0rr
parents:
11870
diff
changeset
|
1172 |
.append(m_clientSalt.toLatin1()) |
10074 | 1173 |
.append(m_passwordHash) |
12902
fc47fc4af6bd
Finish porting. Seems to work, but no thorough testing has been performed
unc0rr
parents:
11870
diff
changeset
|
1174 |
.append(cProtoVer->toLatin1()) |
10074 | 1175 |
.append("!hedgewars") |
10076 | 1176 |
, QCryptographicHash::Sha1).toHex(); |
10074 | 1177 |
|
10695 | 1178 |
RawSendNet(QString("PASSWORD%1%2%1%3").arg(delimiter).arg(hash).arg(m_clientSalt)); |
10074 | 1179 |
} |