QTfrontend/newnetclient.cpp
author unc0rr
Mon, 29 Sep 2008 22:14:23 +0000
changeset 1301 c6fe8a4bfd34
parent 1245 d2eca4a053f5
child 1302 4290ba4a14ca
permissions -rw-r--r--
Fix a bug screwing team selection up in network game (REMOVETEAM message doesn't have teamID, and after removing the team QMap still contains old info, when add and remove team with the same name, total hedgehogs number will be decreased by first team hh number)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
     1
/*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 884
diff changeset
     2
 * Hedgewars, a free turn based strategy game
883
07a568ba44e0 Update copyright info in source files headers
unc0rr
parents: 747
diff changeset
     3
 * Copyright (c) 2006-2008 Ulyanov Igor <iulyanov@gmail.com>
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
     4
 *
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
     8
 *
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    12
 * GNU General Public License for more details.
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    13
 *
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    17
 */
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    18
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    19
#include <QMessageBox>
1189
f66cdbbfc4b6 Fix compile under Ubuntu (why it compiles everywhere else?)
unc0rr
parents: 1083
diff changeset
    20
#include <QDebug>
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    21
697
44f167938201 pre-alpha network weapons selection
displacer
parents: 660
diff changeset
    22
#include "hwconsts.h"
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    23
#include "newnetclient.h"
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    24
#include "proto.h"
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    25
#include "gameuiconfig.h"
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    26
#include "game.h"
334
85eacbd9827f protocol changes
displacer
parents: 332
diff changeset
    27
#include "gamecfgwidget.h"
347
6521e1b2cd40 more correct remove net teams
displacer
parents: 341
diff changeset
    28
#include "teamselect.h"
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    29
1082
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
    30
char delimeter='\n';
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    31
339
7535ab6c3820 Run game message added, team and config info provided for net game
displacer
parents: 338
diff changeset
    32
HWNewNet::HWNewNet(GameUIConfig * config, GameCFGWidget* pGameCFGWidget, TeamSelWidget* pTeamSelWidget) :
334
85eacbd9827f protocol changes
displacer
parents: 332
diff changeset
    33
  config(config),
85eacbd9827f protocol changes
displacer
parents: 332
diff changeset
    34
  m_pGameCFGWidget(pGameCFGWidget),
339
7535ab6c3820 Run game message added, team and config info provided for net game
displacer
parents: 338
diff changeset
    35
  m_pTeamSelWidget(pTeamSelWidget),
383
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 382
diff changeset
    36
  isChief(false),
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 382
diff changeset
    37
  m_game_connected(false)
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    38
{
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    39
  connect(&NetSocket, SIGNAL(readyRead()), this, SLOT(ClientRead()));
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    40
  connect(&NetSocket, SIGNAL(connected()), this, SLOT(OnConnect()));
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    41
  connect(&NetSocket, SIGNAL(disconnected()), this, SLOT(OnDisconnect()));
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    42
  connect(&NetSocket, SIGNAL(error(QAbstractSocket::SocketError)), this,
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    43
	  SLOT(displayError(QAbstractSocket::SocketError)));
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    44
}
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    45
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    46
void HWNewNet::Connect(const QString & hostName, quint16 port, const QString & nick)
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    47
{
655
e58a77556878 - Temporary set delimiter to *, as \t seems to be endline now in Qt
unc0rr
parents: 574
diff changeset
    48
  mynick = nick;
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    49
  NetSocket.connectToHost(hostName, port);
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    50
}
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    51
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    52
void HWNewNet::Disconnect()
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    53
{
407
c7890ba9ed6e lost connection to server warning message
displacer
parents: 401
diff changeset
    54
  m_game_connected=false;
383
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 382
diff changeset
    55
  NetSocket.disconnectFromHost();
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    56
}
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    57
1082
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
    58
void HWNewNet::CreateRoom(const QString & room)
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    59
{
1082
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
    60
	RawSendNet(QString("CREATE%1%2").arg(delimeter).arg(room));
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
    61
}
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
    62
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
    63
void HWNewNet::JoinRoom(const QString & room)
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
    64
{
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
    65
	RawSendNet(QString("JOIN%1%2").arg(delimeter).arg(room));
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    66
}
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    67
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    68
void HWNewNet::AddTeam(const HWTeam & team)
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    69
{
1245
d2eca4a053f5 Send hats info via net. Hats implementation complete now.
unc0rr
parents: 1189
diff changeset
    70
	QString cmd = QString("ADDTEAM:") + delimeter +
382
e7220e48ead1 colors changing config fully working (still need disabling in slaves)
displacer
parents: 373
diff changeset
    71
	     team.TeamName + delimeter +
e7220e48ead1 colors changing config fully working (still need disabling in slaves)
displacer
parents: 373
diff changeset
    72
	     team.teamColor.name() + delimeter +
443
eec37eb7f5db fort, grave and difficulty information for net team
displacer
parents: 431
diff changeset
    73
	     team.Grave + delimeter +
eec37eb7f5db fort, grave and difficulty information for net team
displacer
parents: 431
diff changeset
    74
	     team.Fort + delimeter +
1245
d2eca4a053f5 Send hats info via net. Hats implementation complete now.
unc0rr
parents: 1189
diff changeset
    75
	     QString::number(team.difficulty);
d2eca4a053f5 Send hats info via net. Hats implementation complete now.
unc0rr
parents: 1189
diff changeset
    76
d2eca4a053f5 Send hats info via net. Hats implementation complete now.
unc0rr
parents: 1189
diff changeset
    77
	for(int i = 0; i < 8; ++i)
d2eca4a053f5 Send hats info via net. Hats implementation complete now.
unc0rr
parents: 1189
diff changeset
    78
	{
d2eca4a053f5 Send hats info via net. Hats implementation complete now.
unc0rr
parents: 1189
diff changeset
    79
		cmd.append(delimeter);
d2eca4a053f5 Send hats info via net. Hats implementation complete now.
unc0rr
parents: 1189
diff changeset
    80
		cmd.append(team.HHName[i]);
d2eca4a053f5 Send hats info via net. Hats implementation complete now.
unc0rr
parents: 1189
diff changeset
    81
		cmd.append(delimeter);
d2eca4a053f5 Send hats info via net. Hats implementation complete now.
unc0rr
parents: 1189
diff changeset
    82
		cmd.append(team.HHHat[i]);
d2eca4a053f5 Send hats info via net. Hats implementation complete now.
unc0rr
parents: 1189
diff changeset
    83
	}
d2eca4a053f5 Send hats info via net. Hats implementation complete now.
unc0rr
parents: 1189
diff changeset
    84
	RawSendNet(cmd);
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    85
}
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    86
347
6521e1b2cd40 more correct remove net teams
displacer
parents: 341
diff changeset
    87
void HWNewNet::RemoveTeam(const HWTeam & team)
6521e1b2cd40 more correct remove net teams
displacer
parents: 341
diff changeset
    88
{
6521e1b2cd40 more correct remove net teams
displacer
parents: 341
diff changeset
    89
  RawSendNet(QString("REMOVETEAM:") + delimeter + team.TeamName);
401
bcebe3921740 some colors and network protocol fixes
displacer
parents: 399
diff changeset
    90
  m_networkToLocalteams.remove(m_networkToLocalteams.key(team.TeamName));
347
6521e1b2cd40 more correct remove net teams
displacer
parents: 341
diff changeset
    91
}
6521e1b2cd40 more correct remove net teams
displacer
parents: 341
diff changeset
    92
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    93
void HWNewNet::StartGame()
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    94
{
329
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
    95
  RawSendNet(QString("START:"));
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    96
}
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    97
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    98
void HWNewNet::SendNet(const QByteArray & buf)
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
    99
{
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   100
  QString msg = QString(buf.toBase64());
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   101
329
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   102
  RawSendNet(QString("GAMEMSG:%1%2").arg(delimeter).arg(msg));
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   103
}
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   104
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   105
void HWNewNet::RawSendNet(const QString & str)
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   106
{
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   107
  RawSendNet(str.toUtf8());
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   108
}
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   109
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   110
void HWNewNet::RawSendNet(const QByteArray & buf)
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   111
{
1081
5be338fa4e2c First steps to switch hedgewars to new net protocol
unc0rr
parents: 1066
diff changeset
   112
qDebug() << "Client: " << buf;
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   113
  NetSocket.write(buf);
1082
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   114
  NetSocket.write("\n\n", 2);
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   115
}
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   116
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   117
void HWNewNet::ClientRead()
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   118
{
1082
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   119
	while (NetSocket.canReadLine()) {
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   120
		QString s = QString::fromUtf8(NetSocket.readLine().trimmed());
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   121
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   122
		if (s.size() == 0) {
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   123
			ParseCmd(cmdbuf);
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   124
			cmdbuf.clear();
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   125
		} else
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   126
			cmdbuf << s;
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   127
	}
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   128
}
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   129
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   130
void HWNewNet::OnConnect()
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   131
{
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   132
  RawSendNet(QString("NICK%1%2").arg(delimeter).arg(mynick));
1082
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   133
  RawSendNet(QString("PROTO%1%2").arg(delimeter).arg(*cProtoVer));
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   134
  RawSendNet(QString("CREATE%1%2").arg(delimeter).arg("myroom"));
1083
3448dd03483f Further work on dedicated server
unc0rr
parents: 1082
diff changeset
   135
  RawSendNet(QString("JOIN%1%2").arg(delimeter).arg("myroom"));
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   136
}
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   137
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   138
void HWNewNet::OnDisconnect()
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   139
{
338
d1e75dcd285f multiple teams now available per host (still alpha)
displacer
parents: 335
diff changeset
   140
  //emit ChangeInTeams(QStringList());
383
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 382
diff changeset
   141
  if(m_game_connected) emit Disconnected();
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 382
diff changeset
   142
  m_game_connected=false;
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   143
}
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   144
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   145
void HWNewNet::displayError(QAbstractSocket::SocketError socketError)
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   146
{
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   147
  switch (socketError) {
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   148
  case QAbstractSocket::RemoteHostClosedError:
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   149
    break;
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   150
  case QAbstractSocket::HostNotFoundError:
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   151
    QMessageBox::information(0, tr("Error"),
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   152
			     tr("The host was not found. Please check the host name and port settings."));
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   153
    break;
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   154
  case QAbstractSocket::ConnectionRefusedError:
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   155
    QMessageBox::information(0, tr("Error"),
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   156
			     tr("Connection refused"));
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   157
    break;
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   158
  default:
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   159
    QMessageBox::information(0, tr("Error"),
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   160
			     NetSocket.errorString());
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   161
  }
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   162
}
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   163
1082
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   164
void HWNewNet::ParseCmd(const QStringList & lst)
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   165
{
1082
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   166
qDebug() << "Server: " << lst;
320
1ee7f087195a - HWMapContainer sets and stores the theme
unc0rr
parents: 319
diff changeset
   167
1082
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   168
  if(!lst.size())
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   169
  {
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   170
    qWarning("Net client: Bad message");
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   171
    return;
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   172
  }
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   173
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   174
  if (lst[0] == "ERRONEUSNICKNAME") {
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   175
    QMessageBox::information(0, 0, "Your net nickname is in use or cannot be used");
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   176
    return;
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   177
  }
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   178
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   179
  if (lst[0] == "CONNECTED") {
383
09a8795105a4 some disconnect and remove teams bugfixes
displacer
parents: 382
diff changeset
   180
    m_game_connected=true;
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   181
    emit Connected();
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   182
    emit EnteredGame();
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   183
    return;
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   184
  }
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   185
453
4b1236759402 simple net cha added
displacer
parents: 448
diff changeset
   186
  if (lst[0] == "CHAT_STRING") {
1082
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   187
    if(lst.size() < 3)
573
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   188
    {
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   189
	  qWarning("Net: Empty CHAT_STRING message");
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   190
	  return;
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   191
    }
1082
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   192
    QStringList tmp = lst;
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   193
    tmp.removeFirst();
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   194
    emit chatStringFromNet(tmp);
453
4b1236759402 simple net cha added
displacer
parents: 448
diff changeset
   195
    return;
4b1236759402 simple net cha added
displacer
parents: 448
diff changeset
   196
  }
4b1236759402 simple net cha added
displacer
parents: 448
diff changeset
   197
338
d1e75dcd285f multiple teams now available per host (still alpha)
displacer
parents: 335
diff changeset
   198
  if (lst[0] == "ADDTEAM:") {
1245
d2eca4a053f5 Send hats info via net. Hats implementation complete now.
unc0rr
parents: 1189
diff changeset
   199
    if(lst.size() < 22)
574
1cafd9eb1a21 - Update copyright header
unc0rr
parents: 573
diff changeset
   200
    {
1cafd9eb1a21 - Update copyright header
unc0rr
parents: 573
diff changeset
   201
	  qWarning("Net: Too short ADDTEAM message");
1cafd9eb1a21 - Update copyright header
unc0rr
parents: 573
diff changeset
   202
	  return;
1cafd9eb1a21 - Update copyright header
unc0rr
parents: 573
diff changeset
   203
    }
1082
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   204
    QStringList tmp = lst;
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   205
    tmp.removeFirst();
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   206
    emit AddNetTeam(tmp);
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   207
    return;
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   208
  }
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   209
347
6521e1b2cd40 more correct remove net teams
displacer
parents: 341
diff changeset
   210
  if (lst[0] == "REMOVETEAM:") {
573
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   211
    if(lst.size() < 3)
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   212
    {
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   213
      qWarning("Net: Bad REMOVETEAM message");
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   214
      return;
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   215
    }
352
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 349
diff changeset
   216
    m_pTeamSelWidget->removeNetTeam(HWTeam(lst[1], lst[2].toUInt()));
347
6521e1b2cd40 more correct remove net teams
displacer
parents: 341
diff changeset
   217
    return;
6521e1b2cd40 more correct remove net teams
displacer
parents: 341
diff changeset
   218
  }
6521e1b2cd40 more correct remove net teams
displacer
parents: 341
diff changeset
   219
349
5b37d6a39829 disable widgets if we are slave network client
displacer
parents: 348
diff changeset
   220
  if(lst[0]=="SLAVE") {
5b37d6a39829 disable widgets if we are slave network client
displacer
parents: 348
diff changeset
   221
    m_pGameCFGWidget->setEnabled(false);
362
b28e0dd48269 hedgehogs num modification now allowed to chief client only
displacer
parents: 356
diff changeset
   222
    m_pTeamSelWidget->setNonInteractive();
354
60e4af0a4375 network to local teams map, addteams from server before team config bug, fixed some segfaults
displacer
parents: 352
diff changeset
   223
    return;
349
5b37d6a39829 disable widgets if we are slave network client
displacer
parents: 348
diff changeset
   224
  }
5b37d6a39829 disable widgets if we are slave network client
displacer
parents: 348
diff changeset
   225
455
925891c52e40 hedgehogs num bugfix for netgame
displacer
parents: 453
diff changeset
   226
  if(lst[0]=="JOINED") {
573
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   227
    if(lst.size() < 2)
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   228
    {
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   229
      qWarning("Net: Bad JOINED message");
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   230
      return;
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   231
    }
465
07eca0a2546c chatWidget with nicks ready
displacer
parents: 461
diff changeset
   232
    emit nickAdded(lst[1]);
455
925891c52e40 hedgehogs num bugfix for netgame
displacer
parents: 453
diff changeset
   233
    return;
925891c52e40 hedgehogs num bugfix for netgame
displacer
parents: 453
diff changeset
   234
  }
925891c52e40 hedgehogs num bugfix for netgame
displacer
parents: 453
diff changeset
   235
461
105af110b0e6 chatWidget with layout
displacer
parents: 455
diff changeset
   236
  if(lst[0]=="LEFT") {
573
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   237
    if(lst.size() < 2)
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   238
    {
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   239
      qWarning("Net: Bad LEFT message");
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   240
      return;
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   241
    }
465
07eca0a2546c chatWidget with nicks ready
displacer
parents: 461
diff changeset
   242
    emit nickRemoved(lst[1]);
461
105af110b0e6 chatWidget with layout
displacer
parents: 455
diff changeset
   243
    return;
105af110b0e6 chatWidget with layout
displacer
parents: 455
diff changeset
   244
  }
105af110b0e6 chatWidget with layout
displacer
parents: 455
diff changeset
   245
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   246
  if (lst[0] == "CONFIGASKED") {
334
85eacbd9827f protocol changes
displacer
parents: 332
diff changeset
   247
    isChief=true;
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   248
    ConfigAsked();
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   249
    return;
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   250
  }
320
1ee7f087195a - HWMapContainer sets and stores the theme
unc0rr
parents: 319
diff changeset
   251
339
7535ab6c3820 Run game message added, team and config info provided for net game
displacer
parents: 338
diff changeset
   252
  if (lst[0] == "RUNGAME") {
396
70dfd02845af return after rungame
displacer
parents: 395
diff changeset
   253
    RunGame();
70dfd02845af return after rungame
displacer
parents: 395
diff changeset
   254
    return;
339
7535ab6c3820 Run game message added, team and config info provided for net game
displacer
parents: 338
diff changeset
   255
  }
7535ab6c3820 Run game message added, team and config info provided for net game
displacer
parents: 338
diff changeset
   256
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   257
  if (lst[0] == "CONFIGURED") {
1082
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   258
    QStringList tmp = lst;
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   259
    tmp.removeFirst();
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   260
    if(tmp.size() < 6)
573
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   261
    {
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   262
      qWarning("Net: Bad CONFIGURED message");
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   263
      return;
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   264
    }
1082
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   265
    emit seedChanged(tmp[0]);
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   266
    emit mapChanged(tmp[1]);
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   267
    emit themeChanged(tmp[2]);
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   268
    emit initHealthChanged(tmp[3].toUInt());
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   269
    emit turnTimeChanged(tmp[4].toUInt());
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   270
    emit fortsModeChanged(tmp[5].toInt() != 0);
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   271
    return;
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   272
  }
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   273
354
60e4af0a4375 network to local teams map, addteams from server before team config bug, fixed some segfaults
displacer
parents: 352
diff changeset
   274
  if(lst[0]=="TEAM_ACCEPTED") {
573
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   275
    if(lst.size() < 3)
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   276
    {
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   277
      qWarning("Net: Bad TEAM_ACCEPTED message");
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   278
      return;
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   279
    }
354
60e4af0a4375 network to local teams map, addteams from server before team config bug, fixed some segfaults
displacer
parents: 352
diff changeset
   280
    m_networkToLocalteams.insert(lst[2].toUInt(), lst[1]);
373
df912aab6b7e network team add can be denied by server
displacer
parents: 372
diff changeset
   281
    m_pTeamSelWidget->changeTeamStatus(lst[1]);
354
60e4af0a4375 network to local teams map, addteams from server before team config bug, fixed some segfaults
displacer
parents: 352
diff changeset
   282
    return;
60e4af0a4375 network to local teams map, addteams from server before team config bug, fixed some segfaults
displacer
parents: 352
diff changeset
   283
  }
60e4af0a4375 network to local teams map, addteams from server before team config bug, fixed some segfaults
displacer
parents: 352
diff changeset
   284
329
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   285
  if (lst[0] == "CONFIG_PARAM") {
573
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   286
    if(lst.size() < 3)
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   287
    {
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   288
      qWarning("Net: Bad CONFIG_PARAM message");
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   289
      return;
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   290
    }
329
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   291
  	if (lst[1] == "SEED") {
332
10080f681118 isChiefClient is now correct :)
displacer
parents: 329
diff changeset
   292
	  emit seedChanged(lst[2]);
329
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   293
	  return;
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   294
  	}
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   295
  	if (lst[1] == "MAP") {
332
10080f681118 isChiefClient is now correct :)
displacer
parents: 329
diff changeset
   296
	  emit mapChanged(lst[2]);
329
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   297
	  return;
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   298
  	}
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   299
  	if (lst[1] == "THEME") {
332
10080f681118 isChiefClient is now correct :)
displacer
parents: 329
diff changeset
   300
	  emit themeChanged(lst[2]);
329
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   301
	  return;
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   302
  	}
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   303
  	if (lst[1] == "HEALTH") {
332
10080f681118 isChiefClient is now correct :)
displacer
parents: 329
diff changeset
   304
	  emit initHealthChanged(lst[2].toUInt());
329
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   305
	  return;
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   306
  	}
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   307
  	if (lst[1] == "TURNTIME") {
332
10080f681118 isChiefClient is now correct :)
displacer
parents: 329
diff changeset
   308
	  emit turnTimeChanged(lst[2].toUInt());
329
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   309
	  return;
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   310
  	}
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   311
  	if (lst[1] == "FORTSMODE") {
332
10080f681118 isChiefClient is now correct :)
displacer
parents: 329
diff changeset
   312
	  emit fortsModeChanged(lst[2].toInt() != 0);
329
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   313
	  return;
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   314
  	}
697
44f167938201 pre-alpha network weapons selection
displacer
parents: 660
diff changeset
   315
	if (lst[1] == "AMMO") {
703
424297e3165a weapon names transmitted over network
displacer
parents: 697
diff changeset
   316
	  if(lst.size() < 4) return;
424297e3165a weapon names transmitted over network
displacer
parents: 697
diff changeset
   317
	  emit ammoChanged(lst[3], lst[2]);
697
44f167938201 pre-alpha network weapons selection
displacer
parents: 660
diff changeset
   318
	  return;
44f167938201 pre-alpha network weapons selection
displacer
parents: 660
diff changeset
   319
	}
401
bcebe3921740 some colors and network protocol fixes
displacer
parents: 399
diff changeset
   320
	QStringList hhTmpList=lst[1].split('+');
bcebe3921740 some colors and network protocol fixes
displacer
parents: 399
diff changeset
   321
  	if (hhTmpList[0] == "TEAM_COLOR") {
bcebe3921740 some colors and network protocol fixes
displacer
parents: 399
diff changeset
   322
	  HWTeam tmptm(hhTmpList[1], hhTmpList[2].toUInt());
bcebe3921740 some colors and network protocol fixes
displacer
parents: 399
diff changeset
   323
	  if(m_networkToLocalteams.find(hhTmpList[2].toUInt())!=m_networkToLocalteams.end()) {
bcebe3921740 some colors and network protocol fixes
displacer
parents: 399
diff changeset
   324
	    tmptm=HWTeam(hhTmpList[1]); // local team should be changed
372
4bac77f8cd38 network colors (alpha)
displacer
parents: 362
diff changeset
   325
	  }
401
bcebe3921740 some colors and network protocol fixes
displacer
parents: 399
diff changeset
   326
	  tmptm.teamColor=QColor(lst[2]);
372
4bac77f8cd38 network colors (alpha)
displacer
parents: 362
diff changeset
   327
	  emit teamColorChanged(tmptm);
4bac77f8cd38 network colors (alpha)
displacer
parents: 362
diff changeset
   328
	  return;
4bac77f8cd38 network colors (alpha)
displacer
parents: 362
diff changeset
   329
  	}
401
bcebe3921740 some colors and network protocol fixes
displacer
parents: 399
diff changeset
   330
  	if (hhTmpList[0] == "HHNUM") {
399
c7da1bd32b4e more correct network hhnum
displacer
parents: 396
diff changeset
   331
	  HWTeam tmptm(hhTmpList[1], hhTmpList[2].toUInt());
c7da1bd32b4e more correct network hhnum
displacer
parents: 396
diff changeset
   332
	  if(m_networkToLocalteams.find(hhTmpList[2].toUInt())!=m_networkToLocalteams.end()) {
c7da1bd32b4e more correct network hhnum
displacer
parents: 396
diff changeset
   333
	    tmptm=HWTeam(hhTmpList[1]); // local team should be changed
c7da1bd32b4e more correct network hhnum
displacer
parents: 396
diff changeset
   334
	  }
c7da1bd32b4e more correct network hhnum
displacer
parents: 396
diff changeset
   335
	  tmptm.numHedgehogs=lst[2].toUInt();
c7da1bd32b4e more correct network hhnum
displacer
parents: 396
diff changeset
   336
	  emit hhnumChanged(tmptm);
c7da1bd32b4e more correct network hhnum
displacer
parents: 396
diff changeset
   337
	  return;
c7da1bd32b4e more correct network hhnum
displacer
parents: 396
diff changeset
   338
  	}
1082
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   339
    qWarning() << "Net: Unknown 'CONFIG_PARAM' message:" << lst;
329
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   340
    return;
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   341
  }
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   342
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   343
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   344
  // should be kinda game states, which don't allow "GAMEMSG:" at configure step,
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   345
  // "CONNECTED" at round phase, etc.
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   346
  if (lst[0] == "GAMEMSG:") {
573
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   347
    if(lst.size() < 2)
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   348
    {
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   349
      qWarning("Net: Bad LEFT message");
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   350
      return;
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   351
    }
329
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   352
    QByteArray em = QByteArray::fromBase64(lst[1].toAscii());
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   353
    emit FromNet(em);
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   354
    return;
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   355
  }
573
e0cf483e68d6 - Highlight more undefined behavior of net protocol
unc0rr
parents: 486
diff changeset
   356
1082
596b1dcdc1df - Modify network protocol to use new delimiter
unc0rr
parents: 1081
diff changeset
   357
  qWarning() << "Net: Unknown message:" << lst;
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   358
}
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   359
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   360
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   361
void HWNewNet::ConfigAsked()
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   362
{
574
1cafd9eb1a21 - Update copyright header
unc0rr
parents: 573
diff changeset
   363
  QString map = m_pGameCFGWidget->getCurrentMap();
1cafd9eb1a21 - Update copyright header
unc0rr
parents: 573
diff changeset
   364
  if (map.size())
1cafd9eb1a21 - Update copyright header
unc0rr
parents: 573
diff changeset
   365
    onMapChanged(map);
1cafd9eb1a21 - Update copyright header
unc0rr
parents: 573
diff changeset
   366
335
751348947fce CONFIG_PARAM for storing config
displacer
parents: 334
diff changeset
   367
  onSeedChanged(m_pGameCFGWidget->getCurrentSeed());
751348947fce CONFIG_PARAM for storing config
displacer
parents: 334
diff changeset
   368
  onThemeChanged(m_pGameCFGWidget->getCurrentTheme());
751348947fce CONFIG_PARAM for storing config
displacer
parents: 334
diff changeset
   369
  onInitHealthChanged(m_pGameCFGWidget->getInitHealth());
751348947fce CONFIG_PARAM for storing config
displacer
parents: 334
diff changeset
   370
  onTurnTimeChanged(m_pGameCFGWidget->getTurnTime());
444
e3aaa862a28e forts mode initial state added
displacer
parents: 443
diff changeset
   371
  onFortsModeChanged(m_pGameCFGWidget->getGameFlags() & 0x1);
697
44f167938201 pre-alpha network weapons selection
displacer
parents: 660
diff changeset
   372
  // always initialize with default ammo (also avoiding complicated cross-class dependencies)
703
424297e3165a weapon names transmitted over network
displacer
parents: 697
diff changeset
   373
  onWeaponsNameChanged("Default", cDefaultAmmoStore->mid(10)); 
315
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   374
}
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   375
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   376
void HWNewNet::RunGame()
73003488240b client/server net pre-alpha
displacer
parents:
diff changeset
   377
{
660
7c155e849602 - Simplify net game objects relationship
unc0rr
parents: 655
diff changeset
   378
  emit AskForRunGame();
431
79ac59673df3 - Two more land templates
unc0rr
parents: 407
diff changeset
   379
}
79ac59673df3 - Two more land templates
unc0rr
parents: 407
diff changeset
   380
352
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 349
diff changeset
   381
void HWNewNet::onHedgehogsNumChanged(const HWTeam& team)
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 349
diff changeset
   382
{
455
925891c52e40 hedgehogs num bugfix for netgame
displacer
parents: 453
diff changeset
   383
  RawSendNet(QString("HHNUM%1%2%1%3%1%4").arg(delimeter).arg(team.TeamName)\
354
60e4af0a4375 network to local teams map, addteams from server before team config bug, fixed some segfaults
displacer
parents: 352
diff changeset
   384
	     .arg(team.getNetID() ? team.getNetID() : m_networkToLocalteams.key(team.TeamName))\
60e4af0a4375 network to local teams map, addteams from server before team config bug, fixed some segfaults
displacer
parents: 352
diff changeset
   385
	     .arg(team.numHedgehogs));
352
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 349
diff changeset
   386
}
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 349
diff changeset
   387
372
4bac77f8cd38 network colors (alpha)
displacer
parents: 362
diff changeset
   388
void HWNewNet::onTeamColorChanged(const HWTeam& team)
4bac77f8cd38 network colors (alpha)
displacer
parents: 362
diff changeset
   389
{
401
bcebe3921740 some colors and network protocol fixes
displacer
parents: 399
diff changeset
   390
  RawSendNet(QString("CONFIG_PARAM%1TEAM_COLOR+%2+%3%1%4").arg(delimeter).arg(team.TeamName)\
372
4bac77f8cd38 network colors (alpha)
displacer
parents: 362
diff changeset
   391
	     .arg(team.getNetID() ? team.getNetID() : m_networkToLocalteams.key(team.TeamName))\
4bac77f8cd38 network colors (alpha)
displacer
parents: 362
diff changeset
   392
	     .arg(team.teamColor.name()));
4bac77f8cd38 network colors (alpha)
displacer
parents: 362
diff changeset
   393
}
4bac77f8cd38 network colors (alpha)
displacer
parents: 362
diff changeset
   394
329
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   395
void HWNewNet::onSeedChanged(const QString & seed)
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   396
{
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   397
  RawSendNet(QString("CONFIG_PARAM%1SEED%1%2").arg(delimeter).arg(seed));
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   398
}
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   399
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   400
void HWNewNet::onMapChanged(const QString & map)
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   401
{
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   402
  RawSendNet(QString("CONFIG_PARAM%1MAP%1%2").arg(delimeter).arg(map));
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   403
}
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   404
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   405
void HWNewNet::onThemeChanged(const QString & theme)
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   406
{
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   407
  RawSendNet(QString("CONFIG_PARAM%1THEME%1%2").arg(delimeter).arg(theme));
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   408
}
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   409
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   410
void HWNewNet::onInitHealthChanged(quint32 health)
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   411
{
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   412
  RawSendNet(QString("CONFIG_PARAM%1HEALTH%1%2").arg(delimeter).arg(health));
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   413
}
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   414
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   415
void HWNewNet::onTurnTimeChanged(quint32 time)
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   416
{
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   417
  RawSendNet(QString("CONFIG_PARAM%1TURNTIME%1%2").arg(delimeter).arg(time));
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   418
}
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   419
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   420
void HWNewNet::onFortsModeChanged(bool value)
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   421
{
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   422
  RawSendNet(QString("CONFIG_PARAM%1FORTSMODE%1%2").arg(delimeter).arg(value));
4c3aad46baa5 Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes
unc0rr
parents: 322
diff changeset
   423
}
453
4b1236759402 simple net cha added
displacer
parents: 448
diff changeset
   424
703
424297e3165a weapon names transmitted over network
displacer
parents: 697
diff changeset
   425
void HWNewNet::onWeaponsNameChanged(const QString& name, const QString& ammo)
697
44f167938201 pre-alpha network weapons selection
displacer
parents: 660
diff changeset
   426
{
703
424297e3165a weapon names transmitted over network
displacer
parents: 697
diff changeset
   427
  RawSendNet(QString("CONFIG_PARAM%1AMMO%1%2%1%3").arg(delimeter).arg(ammo).arg(name));
697
44f167938201 pre-alpha network weapons selection
displacer
parents: 660
diff changeset
   428
}
44f167938201 pre-alpha network weapons selection
displacer
parents: 660
diff changeset
   429
453
4b1236759402 simple net cha added
displacer
parents: 448
diff changeset
   430
void HWNewNet::chatLineToNet(const QString& str)
4b1236759402 simple net cha added
displacer
parents: 448
diff changeset
   431
{
4b1236759402 simple net cha added
displacer
parents: 448
diff changeset
   432
  if(str!="") {
4b1236759402 simple net cha added
displacer
parents: 448
diff changeset
   433
    RawSendNet(QString("CHAT_STRING")+delimeter+mynick+delimeter+str);
4b1236759402 simple net cha added
displacer
parents: 448
diff changeset
   434
    emit(chatStringFromNet(QStringList(mynick) << str));
4b1236759402 simple net cha added
displacer
parents: 448
diff changeset
   435
  }
4b1236759402 simple net cha added
displacer
parents: 448
diff changeset
   436
}