diff -r 83773ccf4f09 -r 73003488240b QTfrontend/newnetclient.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QTfrontend/newnetclient.h Wed Jan 10 23:24:55 2007 +0000 @@ -0,0 +1,98 @@ +/* + * Hedgewars, a worms-like game + * Copyright (c) 2006 Ulyanov Igor + * + * 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 _NEW_NETCLIENT_INCLUDED +#define _NEW_NETCLIENT_INCLUDED + +#include +#include +#include + +#include "team.h" + +class GameUIConfig; + +extern char delimeter; + +class HWNewNet : public QObject +{ + Q_OBJECT + + public: + HWNewNet(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(); + + private: + GameUIConfig* config; + + QString mynick; + QTcpSocket NetSocket; + QString seed; + + void ConfigAsked(); + void RunGame(); + + template + void SendCfgStrNet(T a) { + QByteArray strmsg; + strmsg.append(a); + quint8 sz = strmsg.size(); + QByteArray enginemsg = QByteArray((char *)&sz, 1) + strmsg; + QString _msg = delimeter + QString(enginemsg.toBase64()); + RawSendNet(_msg); + } + + template + void SendCfgStrLoc(T a) { + QByteArray strmsg; + strmsg.append(QString(a).toUtf8()); + quint8 sz = strmsg.size(); + QByteArray enginemsg = QByteArray((char *)&sz, 1) + strmsg; + emit FromNet(enginemsg); + } + + void RawSendNet(const QString & buf); + void RawSendNet(const QByteArray & buf); + void ParseLine(const QByteArray & line); + + signals: + void Connected(); + void Disconnected(); + void AddGame(const QString & chan); + void EnteredGame(); + void FromNet(const QByteArray & buf); + void LocalCFG(const QString & team); + void ChangeInTeams(const QStringList & teams); + + public slots: + void SendNet(const QByteArray & buf); + + private slots: + void ClientRead(); + void OnConnect(); + void OnDisconnect(); + //void Perform(); + void displayError(QAbstractSocket::SocketError socketError); + //void FlushNetBuf(); +}; + +#endif // _NEW_NETCLIENT_INCLUDED