16 Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged) |
18 Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged) |
17 Q_PROPERTY(QAbstractSocket::SocketState state READ state NOTIFY stateChanged) |
19 Q_PROPERTY(QAbstractSocket::SocketState state READ state NOTIFY stateChanged) |
18 Q_PROPERTY(QString nickname READ nickname WRITE setNickname NOTIFY nicknameChanged) |
20 Q_PROPERTY(QString nickname READ nickname WRITE setNickname NOTIFY nicknameChanged) |
19 Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged) |
21 Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged) |
20 Q_PROPERTY(SessionState sessionState READ sessionState NOTIFY sessionStateChanged) |
22 Q_PROPERTY(SessionState sessionState READ sessionState NOTIFY sessionStateChanged) |
|
23 Q_PROPERTY(QString room READ room NOTIFY roomChanged) |
21 // clang-format on |
24 // clang-format on |
22 |
25 |
23 public: |
26 public: |
24 enum SessionState { NotConnected, Login, Lobby, Room, Game }; |
27 enum SessionState { NotConnected, Login, Lobby, Room, Game }; |
25 Q_ENUMS(SessionState) |
28 Q_ENUMS(SessionState) |
26 |
29 |
27 explicit NetSession(QObject *parent = nullptr); |
30 explicit NetSession(QObject *parent = nullptr); |
|
31 ~NetSession() override; |
28 |
32 |
29 QUrl url() const; |
33 QUrl url() const; |
30 QAbstractSocket::SocketState state() const; |
34 QAbstractSocket::SocketState state() const; |
31 |
35 |
32 Q_INVOKABLE void open(); |
|
33 |
|
34 QString nickname() const; |
36 QString nickname() const; |
35 QString password() const; |
37 QString password() const; |
36 SessionState sessionState() const; |
38 SessionState sessionState() const; |
|
39 QString room() const; |
37 |
40 |
38 public slots: |
41 public slots: |
|
42 void open(); |
|
43 void close(); |
|
44 |
39 void setUrl(const QUrl &url); |
45 void setUrl(const QUrl &url); |
40 void setNickname(const QString &nickname); |
46 void setNickname(const QString &nickname); |
41 void setPassword(const QString &password); |
47 void setPassword(const QString &password); |
42 void close(); |
|
43 |
48 |
44 signals: |
49 signals: |
45 void urlChanged(const QUrl url); |
50 void urlChanged(const QUrl url); |
46 void stateChanged(QAbstractSocket::SocketState state); |
51 void stateChanged(QAbstractSocket::SocketState state); |
47 void nicknameChanged(const QString &nickname); |
52 void nicknameChanged(const QString &nickname); |
48 void passwordChanged(const QString &password); |
53 void passwordChanged(const QString &password); |
49 void sessionStateChanged(SessionState sessionState); |
54 void sessionStateChanged(SessionState sessionState); |
50 void warning(const QString &message); |
55 void warning(const QString &message); |
51 void error(const QString &message); |
56 void error(const QString &message); |
|
57 void roomChanged(const QString &room); |
52 |
58 |
53 private slots: |
59 private slots: |
54 void onReadyRead(); |
60 void onReadyRead(); |
55 void parseNetMessage(const QStringList &message); |
61 void parseNetMessage(const QStringList &message); |
56 void handleConnected(const QStringList ¶meters); |
62 void handleConnected(const QStringList ¶meters); |
95 void send(const QString &message); |
101 void send(const QString &message); |
96 void send(const QString &message, const QString ¶m); |
102 void send(const QString &message, const QString ¶m); |
97 void send(const QString &message, const QStringList ¶meters); |
103 void send(const QString &message, const QStringList ¶meters); |
98 void send(const QStringList &message); |
104 void send(const QStringList &message); |
99 void setSessionState(SessionState sessionState); |
105 void setSessionState(SessionState sessionState); |
|
106 void setRoom(const QString &room); |
100 |
107 |
101 private: |
108 private: |
102 QUrl m_url; |
109 QUrl m_url; |
103 QSharedPointer<QTcpSocket> m_socket; |
110 QSharedPointer<QTcpSocket> m_socket; |
|
111 QSharedPointer<PlayersListModel> m_playersModel; |
|
112 QSharedPointer<RoomsListModel> m_roomsModel; |
104 QString m_nickname; |
113 QString m_nickname; |
105 QString m_password; |
114 QString m_password; |
106 QStringList m_buffer; |
115 QStringList m_buffer; |
107 SessionState m_sessionState; |
116 SessionState m_sessionState; |
|
117 QString m_serverAuthHash; |
|
118 QString m_room; |
|
119 |
|
120 Q_DISABLE_COPY(NetSession) |
108 }; |
121 }; |
109 |
122 |
110 #endif // NET_SESSION_H |
123 #endif // NET_SESSION_H |