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 |