4
1
mirror of https://github.com/QuasarApp/Snake.git synced 2025-05-02 12:39:43 +00:00

52 lines
1.4 KiB
C
Raw Normal View History

2019-08-07 22:15:26 +03:00
#ifndef MAINCLIENT_H
#define MAINCLIENT_H
#include <client.h>
class PlayerClientData;
enum OnlineStatus: int {
Success = 0x0,
AuthorizationRequired,
WaitForAnswer,
AuthorizationFail,
2019-08-08 19:11:17 +03:00
ClientIsOffline,
OfflineMode
};
2019-08-07 22:15:26 +03:00
class MainClient: public ClientProtocol::Client
{
Q_OBJECT
private:
QHash<int, QSharedPointer<PlayerClientData>> _users;
OnlineStatus _onlineStatus = ClientIsOffline;
void setOnlineStatus(OnlineStatus onlineStatus);
void clientStatusChanged();
void pushNotify(OnlineStatus onlineStatus);
2019-08-07 22:15:26 +03:00
private slots:
void handleReceivePackage(ClientProtocol::Command cmd, const QByteArray& obj);
void handleLoginChanged(bool);
void handleOnlineChanged(bool);
public:
MainClient(const QString& addrress = LOCAL_SNAKE_SERVER,
unsigned short port = DEFAULT_SNAKE_PORT,
QObject * ptr = nullptr);
bool login(const QString& gmail, const QByteArray &pass, bool registerNewUser = false) override;
bool registration(const QString& gmail,
const QByteArray &pass) override;
2019-08-08 19:11:17 +03:00
void playOffline();
void tryConnect(const QString &addrress, unsigned short port);
~MainClient() override;
OnlineStatus onlineStatus() const;
2019-08-07 22:15:26 +03:00
signals:
void sigOnlineStatusChanged(OnlineStatus);
2019-08-09 21:20:33 +03:00
void currentUserDataChanged(QSharedPointer<PlayerClientData>);
2019-08-07 22:15:26 +03:00
};
#endif // MAINCLIENT_H