- Remove unneeded files
authorunc0rr
Wed, 21 Feb 2007 19:43:26 +0000
changeset 472 11fd3cefe1a8
parent 471 e1eb64ba5e9c
child 473 c10887c17be6
- Remove unneeded files - set svn:eol-style to native
QTfrontend/netclient.cpp
QTfrontend/netclient.h
--- a/QTfrontend/netclient.cpp	Wed Feb 21 19:40:06 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,490 +0,0 @@
-/*
- * Hedgewars, a worms-like game
- * Copyright (c) 2005, 2006 Andrey Korotaev <unC0Rr@gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-
-#include <QMessageBox>
-#include <QUuid>
-#include "netclient.h"
-#include "game.h"
-#include "gameuiconfig.h"
-#include "proto.h"
-
-HWNet::HWNet(GameUIConfig * config)
-	: QObject()
-{
-	this->config = config;
-	state = nsDisconnected;
-	IRCmsg_cmd_text = new QRegExp("^[A-Z]+ :.+$");
-	IRCmsg_number_param = new QRegExp("^:\\S+ [0-9]{3} .+$");
-	IRCmsg_who_cmd_target = new QRegExp("^:\\S+ [A-Z]+ \\S+$"); // last \\S should mean 'the 1st char is not ":"'
-	IRCmsg_who_cmd_text = new QRegExp("^:\\S+ [A-Z]+ :.+$");
-	IRCmsg_who_cmd_target_text = new QRegExp("^:\\S+ [A-Z]+ \\S+ :.+$");
-	isOp = false;
-	teamsCount = 0;
-
-	connect(&NetSocket, SIGNAL(readyRead()), this, SLOT(ClientRead()));
-	connect(&NetSocket, SIGNAL(connected()), this, SLOT(OnConnect()));
-	connect(&NetSocket, SIGNAL(disconnected()), this, SLOT(OnDisconnect()));
-	connect(&NetSocket, SIGNAL(error(QAbstractSocket::SocketError)), this,
-			SLOT(displayError(QAbstractSocket::SocketError)));
-}
-
-void HWNet::ClientRead()
-{
-	while (NetSocket.canReadLine())
-	{
-		ParseLine(NetSocket.readLine().trimmed());
-	}
-}
-
-void HWNet::displayError(QAbstractSocket::SocketError socketError)
-{
-	switch (socketError)
-	{
-		case QAbstractSocket::RemoteHostClosedError:
-			break;
-		case QAbstractSocket::HostNotFoundError:
-			QMessageBox::information(0, tr("Error"),
-					tr("The host was not found. Please check the host name and port settings."));
-			break;
-		case QAbstractSocket::ConnectionRefusedError:
-			QMessageBox::information(0, tr("Error"),
-					tr("Connection refused"));
-			break;
-		default:
-			QMessageBox::information(0, tr("Error"),
-					NetSocket.errorString());
-    }
-}
-
-void HWNet::Connect(const QString & hostName, quint16 port, const QString & nick)
-{
-	state = nsConnecting;
-	NetSocket.connectToHost(hostName, port);
-	mynick = nick;
-	opnick = "";
-	opCount = 0;
-}
-
-
-void HWNet::OnConnect()
-{
-	state = nsConnected;
-	RawSendNet(QString("USER hwgame 1 2 Hedgewars game"));
-	RawSendNet(QString("NICK %1").arg(mynick));
-}
-
-void HWNet::OnDisconnect()
-{
-	state = nsDisconnected;
-}
-
-void HWNet::Perform()
-{
-
-}
-
-void HWNet::JoinGame(const QString & game)
-{
-	state = nsJoining;
-	RawSendNet(QString("JOIN %1").arg(game));
-}
-
-void HWNet::Disconnect()
-{
-	switch (state)
-	{
-		case nsDisconnected:
-		{
-			break;
-		}
-		case nsConnecting:
-		case nsQuitting:
-		{
-			NetSocket.disconnect();
-			break;
-		}
-		default:
-		{
-			state = nsQuitting;
-			RawSendNet(QString("QUIT :oops"));
-		}
-	}
-}
-
-void HWNet::RawSendNet(const QString & str)
-{
-	RawSendNet(str.toUtf8());
-}
-
-void HWNet::RawSendNet(const QByteArray & buf)
-{
-	if (buf.size() > 510) return;
-	NetSocket.write(buf);
-	NetSocket.write("\x0d\x0a", 2);
-}
-
-void HWNet::SendNet(const QByteArray & buf)
-{
-	if ((state == nsGaming) || (state == nsStarting))
-	{
-		QString msg = QString(buf.toBase64());
-		if ((msg == "AUM=") && (mynick == opnick))
-		{
-			ConfigAsked();
-		} else
-		if (msg == "AT8=")
-		{
-			// its ping ("?")
-		} else
-		{
-			if (state == nsGaming)
-			{
-				NetBuffer += buf;
-			} else
-			{
-				RawSendNet(QString("PRIVMSG %1 :"MAGIC_CHAR MAGIC_CHAR"%2").arg(channel, msg));
-			}
-		}
-	}
-}
-
-void HWNet::FlushNetBuf()
-{
-	if (NetBuffer.size() > 0)
-	{
-		RawSendNet(QString("PRIVMSG %1 :"MAGIC_CHAR MAGIC_CHAR"%2").arg(channel, QString(NetBuffer.toBase64())));
-		NetBuffer.clear();
-	}
-}
-
-void HWNet::ParseLine(const QByteArray & line)
-{
-	QString msg = QString::fromUtf8 (line.data(), line.size());
-	//QMessageBox::information(0, "", msg);
-	if (IRCmsg_cmd_text->exactMatch(msg))
-	{
-		msgcmd_textHandler(msg);
-	} else
-	if (IRCmsg_number_param->exactMatch(msg))
-	{
-		msgnumber_paramHandler(msg);
-	} else
-	if (IRCmsg_who_cmd_text->exactMatch(msg))
-	{
-		msgwho_cmd_textHandler(msg);
-	} else
-	if (IRCmsg_who_cmd_target->exactMatch(msg))
-	{
-		msgwho_cmd_targetHandler(msg);
-	} else
-	if (IRCmsg_who_cmd_target_text->exactMatch(msg))
-	{
-		msgwho_cmd_target_textHandler(msg);
-	}
-}
-
-void HWNet::msgcmd_textHandler(const QString & msg)
-{
-	QStringList list = msg.split(" :");
-	if (list[0] == "PING")
-	{
-		RawSendNet(QString("PONG %1").arg(list[1]));
-	}
-}
-
-void HWNet::msgnumber_paramHandler(const QString & msg)
-{
-	int pos = msg.indexOf(" :");
-	QString text = msg.mid(pos + 2);
-	QStringList list = msg.mid(0, pos).split(" ");
-	bool ok;
-	quint16 number = list[1].toInt(&ok);
-	if (!ok)
-		return ;
-	switch (number)
-	{
-		case 001 :
-		{
-			Perform();
-			emit Connected();
-			break;
-		}
-		case 322 : // RPL_LIST
-		{
-			emit AddGame(list[3]);
-			break;
-		}
-		case 353 : // RPL_NAMREPLY
-		{
-			QStringList ops = text.split(" ").filter(QRegExp("^@\\S+$"));
-			opCount += ops.size();
-			if (ops.size() == 1)
-			{
-				opnick = ops[0].mid(1);
-			}
-			break;
-		}
-		case 366 : // RPL_ENDOFNAMES
-		{
-			if (opCount != 1)
-			{
-				opnick = "";
-			}
-			opCount = 0;
-			break;
-		}
-		case 432 : // ERR_ERRONEUSNICKNAME
-		case 433 : // ERR_NICKNAMEINUSE
-		{
-			QMessageBox::information(0, "Your net nickname is in use or cannot be used", msg);
-			// ask for another nick
-		}
-	}
-}
-
-void HWNet::msgwho_cmd_targetHandler(const QString & msg)
-{
-	QStringList list = msg.split(" ");
-	QString who = list[0].mid(1).split("!")[0];
-	if (list[1] == "NICK")
-	{
-		if (mynick == who)
-			mynick = list[2];
-		if (opnick == who)
-			opnick = list[2];
-	}
-}
-
-void HWNet::msgwho_cmd_textHandler(const QString & msg)
-{
-	int pos = msg.indexOf(" :");
-	QString text = msg.mid(pos + 2);
-	QStringList list = msg.mid(0, pos).split(" ");
-	QString who = list[0].mid(1).split("!")[0];
-	if (list[1] == "JOIN")
-	{
-		if (who == mynick)
-		{
-			channel = text;
-			state = nsJoined;
-			emit EnteredGame();
-			RawSendNet(QString("PRIVMSG %1 :Hello!").arg(channel));
-		}
-	}
-}
-void HWNet::msgwho_cmd_target_textHandler(const QString & msg)
-{
-	int pos = msg.indexOf(" :");
-	QString text = msg.mid(pos + 2);
-	QStringList list = msg.mid(0, pos).split(" ");
-	QString who = list[0].mid(1).split("!")[0];
-	if (list[1] == "PRIVMSG")
-	{
-		if (list[2] == opnick)
-		{
-			hwp_opmsg(who, text);
-		} else
-		if (list[2] == channel)
-		{
-			hwp_chanmsg(who, text);
-		}
-	}
-}
-
-void HWNet::hwp_opmsg(const QString & who, const QString & msg)
-{
-	if (state != nsJoined)
-		return ;
-	if (!msg.startsWith(MAGIC_CHAR))
-		return ;
-	QStringList list = msg.split(MAGIC_CHAR, QString::SkipEmptyParts);
-	if (list[0] == "A")
-	{
-		list.removeFirst();
-		if (list.size() != 9)
-			return ;
-		if (teamsCount < 5)
-		{
-			teams[teamsCount].nick = who;
-			teams[teamsCount].hhs = list;
-			teamsCount++;
-			QString teamnames;
-			for(int i = 0; i < teamsCount; i++)
-			{
-				teamnames += MAGIC_CHAR;
-				teamnames += teams[i].hhs[0];
-			}
-			QString tmsg = QString(MAGIC_CHAR"=%2").arg(teamnames);
-			RawSendNet(QString("PRIVMSG %1 :").arg(channel) + tmsg);
-			hwp_chanmsg(mynick, tmsg);
-		}
-	}
-}
-
-void HWNet::ConfigAsked()
-{
-	configasks++;
-	if (configasks == playerscnt)
-	{
-		quint32 color = 65535;
-		{
-			QByteArray cache;
-			HWProto::addStringToBuffer(cache, "eseed " + seed);
-			HWProto::addStringToBuffer(cache, "e$gmflags 0");
-			HWProto::addStringToBuffer(cache, QString("etheme steel"));
-			QString _msg = MAGIC_CHAR MAGIC_CHAR + QString(cache.toBase64());
-			RawSendNet(QString("PRIVMSG %1 :%2").arg(channel, _msg));
-			hwp_chanmsg(mynick, _msg);
-		}
-		for (int i = 0; i < teamsCount; i++)
-		{
-			QString msg;
-			msg = MAGIC_CHAR "T" MAGIC_CHAR + teams[i].nick + MAGIC_CHAR + teams[i].hhs.join(MAGIC_CHAR);
-			RawSendNet(QString("PRIVMSG %1 :%2").arg(channel, msg));
-			hwp_chanmsg(mynick, msg);
-			QByteArray cache;
-			HWProto::addStringToBuffer(cache, QString("ecolor %1").arg(color));
-			HWProto::addStringToBuffer(cache, "eadd hh0 0");
-			HWProto::addStringToBuffer(cache, "eadd hh1 0");
-			HWProto::addStringToBuffer(cache, "eadd hh2 0");
-			HWProto::addStringToBuffer(cache, "eadd hh3 0");
-			HWProto::addStringToBuffer(cache, "eadd hh4 0");
-			QString _msg = MAGIC_CHAR MAGIC_CHAR + QString(cache.toBase64());
-			RawSendNet(QString("PRIVMSG %1 :%2").arg(channel, _msg));
-			hwp_chanmsg(mynick, _msg);
-			color <<= 8;
-		}
-		SENDCFGSTRNET("!");
-	}
-}
-
-void HWNet::hwp_chanmsg(const QString & who, const QString & msg)
-{
-	if ((state < nsJoined) || (state > nsGaming))
-	{
-		return ;
-	}
-	if (state == nsJoined)
-	{
-		if (msg.startsWith(MAGIC_CHAR"Start!") && (who == opnick))
-		{
-			state = nsStarting;
-			RunGame();
-			return ;
-		}
-		if (msg.startsWith(MAGIC_CHAR"="MAGIC_CHAR) && (who == opnick))
-		{
-			emit ChangeInTeams(msg.mid(3).split(MAGIC_CHAR));
-		}
-	}
-	if (state == nsStarting)
-	{
-		if (msg == MAGIC_CHAR MAGIC_CHAR "AUM=")
-		{
-			if (mynick == opnick) ConfigAsked();
-			return ;
-		}
-		if (msg == MAGIC_CHAR MAGIC_CHAR "ASE=")
-		{
-			state = nsGaming;
-			TimerFlusher = new QTimer();
-			connect(TimerFlusher, SIGNAL(timeout()), this, SLOT(FlushNetBuf()));
-			TimerFlusher->start(2000);
-		}
-		if (msg.startsWith(MAGIC_CHAR"T"MAGIC_CHAR))
-		{
-			NetTeamAdded(msg.mid(3));
-		}
-	}
-	if ((state < nsStarting) || (state > nsGaming))
-	{
-		return;
-	}
-	if (msg.startsWith(MAGIC_CHAR MAGIC_CHAR)) // HWP message
-	{
-		QByteArray em = QByteArray::fromBase64(msg.mid(2).toAscii());
-		emit FromNet(em);
-	} else // smth other
-	{
-
-	}
-}
-
-void HWNet::NetTeamAdded(const QString & msg)
-{
-	QStringList list = msg.split(MAGIC_CHAR, QString::SkipEmptyParts);
-	if (list.size() != 10)
-		return ;
-	SENDCFGSTRLOC("eaddteam");
-	if (list[0] == mynick)
-	{
-		emit LocalCFG(list[1]);
-	} else
-	{
-		SENDCFGSTRLOC("erdriven");
-		SENDCFGSTRLOC(QString("ename team %1").arg(list[1]));
-		for (int i = 0; i < 8; i++)
-		{
-			SENDCFGSTRLOC(QString("ename hh%1 ").arg(i) + list[i + 2]);
-		}
-	}
-}
-
-void HWNet::AddTeam(const HWTeam & team)
-{
-	if (state != nsJoined)
-	{
-		return ;
-	}
-	RawSendNet(QString("PRIVMSG %1 :").arg(opnick) + MAGIC_CHAR "A" MAGIC_CHAR +
-			team.TeamName + MAGIC_CHAR + team.HHName[0] + MAGIC_CHAR + team.HHName[1] + MAGIC_CHAR +
-			team.HHName[2] + MAGIC_CHAR + team.HHName[3] + MAGIC_CHAR + team.HHName[4] + MAGIC_CHAR +
-			team.HHName[5] + MAGIC_CHAR + team.HHName[6] + MAGIC_CHAR + team.HHName[7]);
-}
-
-void HWNet::StartGame()
-{
-	if ((opnick != mynick) || (state != nsJoined))
-	{
-		return ;
-	}
-	QStringList players;
-	for (int i = 0; i < teamsCount; i++)
-	{
-		if (!players.contains(teams[i].nick))
-		{
-			players.append(teams[i].nick);
-		}
-	}
-	playerscnt = players.size();
-	configasks = 0;
-
-	seed = QUuid::createUuid().toString();
-	QString msg = QString(MAGIC_CHAR"Start!");
-	RawSendNet(QString("PRIVMSG %1 :%2").arg(channel, msg));
-	hwp_chanmsg(mynick, msg);
-}
-
-void HWNet::RunGame()
-{
-	HWGame * game = new HWGame(config, 0);
-	connect(game, SIGNAL(SendNet(const QByteArray &)), this, SLOT(SendNet(const QByteArray &)));
-	connect(this, SIGNAL(FromNet(const QByteArray &)), game, SLOT(FromNet(const QByteArray &)));
-	connect(this, SIGNAL(LocalCFG(const QString &)), game, SLOT(LocalCFG(const QString &)));
-	game->StartNet();
-}
--- a/QTfrontend/netclient.h	Wed Feb 21 19:40:06 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-/*
- * Hedgewars, a worms-like game
- * Copyright (c) 2005 Andrey Korotaev <unC0Rr@gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-
-#ifndef NET_H
-#define NET_H
-
-#include <QObject>
-#include <QTcpSocket>
-#include <QRegExp>
-#include <QStringList>
-#include <QTimer>
-#include "team.h"
-
-#define MAGIC_CHAR "\x2f"
-
-struct netTeam
-{
-	QString nick;
-	QStringList hhs;
-};
-
-class GameUIConfig;
-
-class HWNet : public QObject
-{
-	Q_OBJECT
-
-public:
-    HWNet(GameUIConfig * config);
-	void Connect(const QString & hostName, quint16 port, const QString & nick);
-	void Disconnect();
-	void JoinGame(const QString & game);
-	void AddTeam(const HWTeam & team);
-	void StartGame();
-
-signals:
-	void Connected();
-	void AddGame(const QString & chan);
-	void EnteredGame();
-	void FromNet(const QByteArray & buf);
-	void ChangeInTeams(const QStringList & teams);
-
-public slots:
-	void SendNet(const QByteArray & buf);
-
-private:
-	enum NetState {
-		nsDisconnected	= 0,
-		nsConnecting	= 1,
-		nsConnected	= 3,
-		nsJoining	= 4,
-		nsJoined	= 5,
-		nsStarting	= 6,
-		nsGaming	= 7,
-		nsQuitting	= 8
-	};
-
-	QTcpSocket NetSocket;
-	NetState state;
-	QRegExp * IRCmsg_cmd_text;
-	QRegExp * IRCmsg_number_param;
-	QRegExp * IRCmsg_who_cmd_target;
-	QRegExp * IRCmsg_who_cmd_target_text;
-	QRegExp * IRCmsg_who_cmd_text;
-	QString mynick;
-	QString opnick;
-	QString channel;
-	QString seed;
-	bool isOp;
-	quint32 opCount;
-	netTeam teams[5];
-	quint8 teamsCount;
-	int playerscnt;
-	int configasks;
-	QByteArray NetBuffer;
-	QTimer * TimerFlusher;
-	GameUIConfig * config;
-
-	void RawSendNet(const QString & buf);
-	void RawSendNet(const QByteArray & buf);
-
-	void ParseLine(const QByteArray & line);
-	void msgcmd_textHandler(const QString & msg);
-	void msgnumber_paramHandler(const QString & msg);
-	void msgwho_cmd_targetHandler(const QString & msg);
-	void msgwho_cmd_textHandler(const QString & msg);
-	void msgwho_cmd_target_textHandler(const QString & msg);
-
-	void hwp_opmsg(const QString & who, const QString & msg);
-	void hwp_chanmsg(const QString & who, const QString & msg);
-	void ConfigAsked();
-	void NetTeamAdded(const QString & msg);
-
-	void RunGame();
-
-
-private slots:
-	void ClientRead();
-	void OnConnect();
-	void OnDisconnect();
-	void Perform();
-	void displayError(QAbstractSocket::SocketError socketError);
-	void FlushNetBuf();
-};
-
-#define SENDCFGSTRNET(a)   {\
-							QByteArray strmsg; \
-							strmsg.append(a); \
-							quint8 sz = strmsg.size(); \
-							QByteArray enginemsg = QByteArray((char *)&sz, 1) + strmsg; \
-							QString _msg = MAGIC_CHAR MAGIC_CHAR + QString(enginemsg.toBase64()); \
-							hwp_chanmsg(mynick, _msg); \
-							RawSendNet(QString("PRIVMSG %1 :").arg(channel) + _msg); \
-						}
-
-#define SENDCFGSTRLOC(a)   {\
-							QByteArray strmsg; \
-							strmsg.append(QString(a).toUtf8()); \
-							quint8 sz = strmsg.size(); \
-							QByteArray enginemsg = QByteArray((char *)&sz, 1) + strmsg; \
-							emit FromNet(enginemsg); \
-						}
-
-#endif