mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-15 19:47:46 -07:00
some changes
This commit is contained in:
parent
9b1adf2dc1
commit
c8a2ed9415
26 changed files with 243 additions and 613 deletions
|
|
@ -2,12 +2,10 @@
|
|||
#define CLIENT_H
|
||||
|
||||
#include "servereventdata.h"
|
||||
#include "serverresponse.h"
|
||||
#include "servergame.h"
|
||||
#include "serverplayer.h"
|
||||
#include "serverzone.h"
|
||||
#include "serverzonecard.h"
|
||||
#include "pendingcommand.h"
|
||||
#include <QTcpSocket>
|
||||
#include <QColor>
|
||||
|
||||
|
|
@ -19,7 +17,33 @@ class QTimer;
|
|||
enum ProtocolStatus { StatusDisconnected,
|
||||
StatusConnecting,
|
||||
StatusAwaitingWelcome,
|
||||
StatusConnected };
|
||||
StatusLoggingIn,
|
||||
StatusIdle,
|
||||
StatusPlaying };
|
||||
|
||||
enum ServerResponse {
|
||||
RespOk,
|
||||
RespPassword,
|
||||
RespErr
|
||||
};
|
||||
|
||||
class PendingCommand : public QObject {
|
||||
Q_OBJECT
|
||||
private:
|
||||
QString cmd;
|
||||
int msgid;
|
||||
int time;
|
||||
signals:
|
||||
void finished(ServerResponse resp);
|
||||
public slots:
|
||||
void responseReceived(int _msgid, ServerResponse _resp);
|
||||
void checkTimeout();
|
||||
public:
|
||||
int getMsgId() const { return msgid; }
|
||||
QString getCmd() const { return cmd; }
|
||||
bool timeout() { return ++time > 5; }
|
||||
PendingCommand(const QString &_cmd, int _msgid, QObject *parent = 0);
|
||||
};
|
||||
|
||||
class Client : public QObject {
|
||||
Q_OBJECT
|
||||
|
|
@ -30,60 +54,62 @@ signals:
|
|||
void playerListReceived(QList<ServerPlayer *> players);
|
||||
void zoneListReceived(int commandId, QList<ServerZone *> zones);
|
||||
void zoneDumpReceived(int commandId, QList<ServerZoneCard *> cards);
|
||||
void responseReceived(ServerResponse *response);
|
||||
void responseReceived(int msgid, ServerResponse resp);
|
||||
void playerIdReceived(int id, QString name);
|
||||
void gameEvent(const ServerEventData &msg);
|
||||
void serverTimeout();
|
||||
void logSocketError(const QString &errorString);
|
||||
|
||||
void serverError(ServerResponse resp);
|
||||
private slots:
|
||||
void slotConnected();
|
||||
void readLine();
|
||||
void checkTimeout();
|
||||
void timeout();
|
||||
void slotSocketError(QAbstractSocket::SocketError error);
|
||||
|
||||
void ping();
|
||||
void removePendingCommand();
|
||||
void loginResponse(ServerResponse response);
|
||||
void enterGameResponse(ServerResponse response);
|
||||
void leaveGameResponse(ServerResponse response);
|
||||
private:
|
||||
QTimer *timer;
|
||||
QList<PendingCommand *> PendingCommands;
|
||||
QTcpSocket *socket;
|
||||
ProtocolStatus status;
|
||||
QList<QStringList> msgbuf;
|
||||
QString PlayerName;
|
||||
QString password;
|
||||
QString playerName, password;
|
||||
unsigned int MsgId;
|
||||
void msg(const QString &s);
|
||||
int cmd(const QString &s);
|
||||
PendingCommand *cmd(const QString &s);
|
||||
void setStatus(const ProtocolStatus _status);
|
||||
public:
|
||||
Client(QObject *parent = 0);
|
||||
~Client();
|
||||
ProtocolStatus getStatus() const { return status; }
|
||||
QString peerName() const { return socket->peerName(); }
|
||||
|
||||
void connectToServer(const QString &hostname, unsigned int port, const QString &playername, const QString &password);
|
||||
|
||||
void connectToServer(const QString &hostname, unsigned int port, const QString &_playerName, const QString &_password);
|
||||
void disconnectFromServer();
|
||||
int ping();
|
||||
int listGames();
|
||||
int listPlayers();
|
||||
int createGame(const QString &description, const QString &password, unsigned int maxPlayers);
|
||||
int joinGame(int gameId, const QString &password);
|
||||
int leaveGame();
|
||||
int login(const QString &name, const QString &pass);
|
||||
int say(const QString &s);
|
||||
int shuffle();
|
||||
int rollDice(unsigned int sides);
|
||||
int drawCards(unsigned int number);
|
||||
int moveCard(int cardid, const QString &startzone, const QString &targetzone, int x, int y = 0, bool faceDown = false);
|
||||
int createToken(const QString &zone, const QString &name, const QString &powtough, int x, int y);
|
||||
int setCardAttr(const QString &zone, int cardid, const QString &aname, const QString &avalue);
|
||||
int readyStart();
|
||||
int incCounter(const QString &counter, int delta);
|
||||
int addCounter(const QString &counter, QColor color, int value);
|
||||
int setCounter(const QString &counter, int value);
|
||||
int delCounter(const QString &counter);
|
||||
int setActivePlayer(int player);
|
||||
int setActivePhase(int phase);
|
||||
int dumpZone(int player, const QString &zone, int numberCards);
|
||||
PendingCommand *listGames();
|
||||
PendingCommand *listPlayers();
|
||||
PendingCommand *createGame(const QString &description, const QString &password, unsigned int maxPlayers);
|
||||
PendingCommand *joinGame(int gameId, const QString &password);
|
||||
PendingCommand *leaveGame();
|
||||
PendingCommand *login(const QString &name, const QString &pass);
|
||||
PendingCommand *say(const QString &s);
|
||||
PendingCommand *shuffle();
|
||||
PendingCommand *rollDice(unsigned int sides);
|
||||
PendingCommand *drawCards(unsigned int number);
|
||||
PendingCommand *moveCard(int cardid, const QString &startzone, const QString &targetzone, int x, int y = 0, bool faceDown = false);
|
||||
PendingCommand *createToken(const QString &zone, const QString &name, const QString &powtough, int x, int y);
|
||||
PendingCommand *setCardAttr(const QString &zone, int cardid, const QString &aname, const QString &avalue);
|
||||
PendingCommand *readyStart();
|
||||
PendingCommand *incCounter(const QString &counter, int delta);
|
||||
PendingCommand *addCounter(const QString &counter, QColor color, int value);
|
||||
PendingCommand *setCounter(const QString &counter, int value);
|
||||
PendingCommand *delCounter(const QString &counter);
|
||||
PendingCommand *setActivePlayer(int player);
|
||||
PendingCommand *setActivePhase(int phase);
|
||||
PendingCommand *dumpZone(int player, const QString &zone, int numberCards);
|
||||
public slots:
|
||||
void submitDeck(const QStringList &deck);
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue