IsHogLocal: If there's a mission team, only count members in the clan of that team
This attends to a hack in some missions which use fake human teams in the enemy clans for animation purposes.
+ − #ifndef NET_SESSION_H
+ − #define NET_SESSION_H
+ −
+ − #include <QSharedPointer>
+ − #include <QSslSocket>
+ − #include <QStringList>
+ − #include <QUrl>
+ −
+ − class PlayersListModel;
+ − class RoomsListModel;
+ − class NetSession : public QObject {
+ − Q_OBJECT
+ −
+ − const int cMinServerVersion = 3;
+ − const int cProtocolVersion = 60;
+ −
+ − // clang-format off
+ − Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged)
+ − Q_PROPERTY(QAbstractSocket::SocketState state READ state NOTIFY stateChanged)
+ − Q_PROPERTY(QString nickname READ nickname WRITE setNickname NOTIFY nicknameChanged)
+ − Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged)
+ − Q_PROPERTY(SessionState sessionState READ sessionState NOTIFY sessionStateChanged)
+ − Q_PROPERTY(QString room READ room NOTIFY roomChanged)
+ − // clang-format on
+ −
+ − public:
+ − enum SessionState { NotConnected, Login, Lobby, Room, Game };
+ − Q_ENUMS(SessionState)
+ −
+ − explicit NetSession(QObject *parent = nullptr);
+ − ~NetSession() override;
+ −
+ − QUrl url() const;
+ − QAbstractSocket::SocketState state() const;
+ −
+ − QString nickname() const;
+ − QString password() const;
+ − SessionState sessionState() const;
+ − QString room() const;
+ −
+ − public slots:
+ − void open();
+ − void close();
+ −
+ − void setUrl(const QUrl &url);
+ − void setNickname(const QString &nickname);
+ − void setPassword(const QString &password);
+ −
+ − signals:
+ − void urlChanged(const QUrl url);
+ − void stateChanged(QAbstractSocket::SocketState state);
+ − void nicknameChanged(const QString &nickname);
+ − void passwordChanged(const QString &password);
+ − void sessionStateChanged(SessionState sessionState);
+ − void warning(const QString &message);
+ − void error(const QString &message);
+ − void roomChanged(const QString &room);
+ −
+ − private slots:
+ − void onReadyRead();
+ − void parseNetMessage(const QStringList &message);
+ − void handleConnected(const QStringList ¶meters);
+ − void handlePing(const QStringList ¶meters);
+ − void handleBye(const QStringList ¶meters);
+ − void handleUnknownCommand(const QStringList ¶meters);
+ − void handleAddTeam(const QStringList ¶meters);
+ − void handleAskPassword(const QStringList ¶meters);
+ − void handleBanList(const QStringList ¶meters);
+ − void handleCfg(const QStringList ¶meters);
+ − void handleChat(const QStringList ¶meters);
+ − void handleClientFlags(const QStringList ¶meters);
+ − void handleEm(const QStringList ¶meters);
+ − void handleError(const QStringList ¶meters);
+ − void handleHhNum(const QStringList ¶meters);
+ − void handleInfo(const QStringList ¶meters);
+ − void handleJoined(const QStringList ¶meters);
+ − void handleJoining(const QStringList ¶meters);
+ − void handleKicked(const QStringList ¶meters);
+ − void handleLeft(const QStringList ¶meters);
+ − void handleLobbyJoined(const QStringList ¶meters);
+ − void handleLobbyLeft(const QStringList ¶meters);
+ − void handleNick(const QStringList ¶meters);
+ − void handleNotice(const QStringList ¶meters);
+ − void handlePong(const QStringList ¶meters);
+ − void handleProto(const QStringList ¶meters);
+ − void handleRedirect(const QStringList ¶meters);
+ − void handleRemoveTeam(const QStringList ¶meters);
+ − void handleReplayStart(const QStringList ¶meters);
+ − void handleRoomAbandoned(const QStringList ¶meters);
+ − void handleRoom(const QStringList ¶meters);
+ − void handleRooms(const QStringList ¶meters);
+ − void handleRoundFinished(const QStringList ¶meters);
+ − void handleRunGame(const QStringList ¶meters);
+ − void handleServerAuth(const QStringList ¶meters);
+ − void handleServerMessage(const QStringList ¶meters);
+ − void handleServerVars(const QStringList ¶meters);
+ − void handleTeamAccepted(const QStringList ¶meters);
+ − void handleTeamColor(const QStringList ¶meters);
+ − void handleWarning(const QStringList ¶meters);
+ −
+ − void send(const QString &message);
+ − void send(const QString &message, const QString ¶m);
+ − void send(const QString &message, const QStringList ¶meters);
+ − void send(const QStringList &message);
+ − void setSessionState(SessionState sessionState);
+ − void setRoom(const QString &room);
+ −
+ − private:
+ − QUrl m_url;
+ − QSharedPointer<QTcpSocket> m_socket;
+ − QSharedPointer<PlayersListModel> m_playersModel;
+ − QSharedPointer<RoomsListModel> m_roomsModel;
+ − QString m_nickname;
+ − QString m_password;
+ − QStringList m_buffer;
+ − SessionState m_sessionState;
+ − QString m_serverAuthHash;
+ − QString m_room;
+ −
+ − Q_DISABLE_COPY(NetSession)
+ − };
+ −
+ − #endif // NET_SESSION_H