QTfrontend/netclient.h
changeset 31 99888245a4e8
parent 29 9311259d5242
child 32 78bff13b11c0
equal deleted inserted replaced
30:794e98e11b66 31:99888245a4e8
    35 #define NET_H
    35 #define NET_H
    36 
    36 
    37 #include <QObject>
    37 #include <QObject>
    38 #include <QTcpSocket>
    38 #include <QTcpSocket>
    39 #include <QRegExp>
    39 #include <QRegExp>
       
    40 #include <QStringList>
       
    41 #include "team.h"
       
    42 #include "rndstr.h"
       
    43 
       
    44 #define MAGIC_CHAR "\x02"
       
    45 
       
    46 struct netTeam
       
    47 {
       
    48 	QString nick;
       
    49 	QStringList hhs;
       
    50 };
    40 
    51 
    41 class HWNet : public QObject
    52 class HWNet : public QObject
    42 {
    53 {
    43 	Q_OBJECT
    54 	Q_OBJECT
    44 
    55 
    45 public:
    56 public:
    46     HWNet();
    57     HWNet(int Resolution, bool Fullscreen);
    47 	void Connect(const QString & hostName, quint16 port, const QString & nick);
    58 	void Connect(const QString & hostName, quint16 port, const QString & nick);
    48 	void Disconnect();
    59 	void Disconnect();
    49 	void SendNet(const QString & buf);
    60 	void JoinGame(const QString & game);
    50 	void SendNet(const QByteArray & buf);
    61 	void AddTeam(const HWTeam & team);
       
    62 	void StartGame();
    51 
    63 
    52 signals:
    64 signals:
    53 	void Connected();
    65 	void Connected();
    54 	void AddGame(const QString & chan);
    66 	void AddGame(const QString & chan);
       
    67 	void EnteredGame();
       
    68 	void FromNet(const QByteArray & buf);
       
    69 	void LocalCFG(const QString & team);
       
    70 
       
    71 public slots:
       
    72 	void SendNet(const QByteArray & buf);
    55 
    73 
    56 private:
    74 private:
    57 	enum NetState {
    75 	enum NetState {
    58 		nsDisconnected = 0,
    76 		nsDisconnected	= 0,
    59 		nsConnecting   = 1,
    77 		nsConnecting	= 1,
    60 		nsConnected    = 3,
    78 		nsConnected	= 3,
    61 		nsQuitting     = 5
    79 		nsJoining	= 4,
       
    80 		nsJoined	= 5,
       
    81 		nsStarting	= 6,
       
    82 		nsGaming	= 7,
       
    83 		nsQuitting	= 8
    62 	};
    84 	};
    63 
    85 
    64 	QTcpSocket NetSocket;
    86 	QTcpSocket NetSocket;
    65 	NetState state;
    87 	NetState state;
    66 	QRegExp * IRCmsg_cmd_param;
    88 	QRegExp * IRCmsg_cmd_text;
    67 	QRegExp * IRCmsg_number_param;
    89 	QRegExp * IRCmsg_number_param;
    68 	QRegExp * IRCmsg_who_cmd_param;
    90 	QRegExp * IRCmsg_who_cmd_target;
    69 	QRegExp * IRCmsg_who_cmd_param_text;
    91 	QRegExp * IRCmsg_who_cmd_target_text;
       
    92 	QRegExp * IRCmsg_who_cmd_text;
    70 	QString mynick;
    93 	QString mynick;
    71 	QString opnick;
    94 	QString opnick;
       
    95 	QString channel;
    72 	bool isOp;
    96 	bool isOp;
    73 	quint32 opCount;
    97 	quint32 opCount;
       
    98 	netTeam teams[5];
       
    99 	quint8 teamsCount;
       
   100 	int gameResolution;
       
   101 	bool gameFullscreen;
       
   102 	RNDStr seedgen;
       
   103 	int playerscnt;
       
   104 	int configasks;
       
   105 
       
   106 	void RawSendNet(const QString & buf);
       
   107 	void RawSendNet(const QByteArray & buf);
    74 
   108 
    75 	void ParseLine(const QString & msg);
   109 	void ParseLine(const QString & msg);
    76 	void msgcmd_paramHandler(const QString & msg);
   110 	void msgcmd_textHandler(const QString & msg);
    77 	void msgnumber_paramHandler(const QString & msg);
   111 	void msgnumber_paramHandler(const QString & msg);
    78 	void msgwho_cmd_paramHandler(const QString & msg);
   112 	void msgwho_cmd_targetHandler(const QString & msg);
    79 	void msgwho_cmd_param_textHandler(const QString & msg);
   113 	void msgwho_cmd_textHandler(const QString & msg);
       
   114 	void msgwho_cmd_target_textHandler(const QString & msg);
       
   115 
       
   116 	void hwp_opmsg(const QString & who, const QString & msg);
       
   117 	void hwp_chanmsg(const QString & who, const QString & msg);
       
   118 	void ConfigAsked();
       
   119 	void NetTeamAdded(const QString & msg);
       
   120 
       
   121 	void RunGame(const QString & seed);
       
   122 
    80 
   123 
    81 private slots:
   124 private slots:
    82 	void ClientRead();
   125 	void ClientRead();
    83 	void OnConnect();
   126 	void OnConnect();
    84 	void OnDisconnect();
   127 	void OnDisconnect();
    85 	void Perform();
   128 	void Perform();
    86 	void displayError(QAbstractSocket::SocketError socketError);
   129 	void displayError(QAbstractSocket::SocketError socketError);
    87 };
   130 };
    88 
   131 
       
   132 #define SENDCFGSTRNET(a)   {\
       
   133 							QByteArray strmsg; \
       
   134 							strmsg.append(a); \
       
   135 							quint8 sz = strmsg.size(); \
       
   136 							QByteArray enginemsg = QByteArray((char *)&sz, 1) + strmsg; \
       
   137 							emit FromNet(enginemsg); \
       
   138 							RawSendNet(QString("PRIVMSG %1 :"MAGIC_CHAR MAGIC_CHAR"%2").arg(channel, QString(enginemsg.toBase64()))); \
       
   139 						}
       
   140 
       
   141 #define SENDCFGSTRLOC(a)   {\
       
   142 							QByteArray strmsg; \
       
   143 							strmsg.append(a); \
       
   144 							quint8 sz = strmsg.size(); \
       
   145 							QByteArray enginemsg = QByteArray((char *)&sz, 1) + strmsg; \
       
   146 							emit FromNet(enginemsg); \
       
   147 						}
       
   148 
    89 #endif
   149 #endif