#ifndef CLIENT_H #define CLIENT_H #include "QWClient.h" #include #include #include #include #include "ServerQuery.h" class App; class QTime; class QTimer; class ActiveClient; class Client : public QWClient { public: Client(App* app, ActiveClient* ac); ~Client(); void connect(const char *host, quint16 port); void run(); void disconnect(); void say(const QString& msg); void sayTeam(const QString& msg); void setTeam(const QString& msg); void setSocket(class QTcpSocket* socket); void retryConnection(); //unused bool isOnServer() const; bool isQWMuted() const; bool isSpamMuted() const; void setPlayerList(PlayerList &playerList); void setMaxClients(int maxClients); protected: void onLevelChanged(int playerNum, const char *levelName, float gravity, float stopSpeed, float maxSpeed, float spectatorMaxSpeed, float accelerate, float airAccelerate, float waterAccelerate, float friction, float waterFriction, float entGravity); void onDisconnect(); void onPrint(int level, const char *msg); void onChallenge(); void onConnection(); void onConnected(); void onDownloadStarted(const char *fileName); void onDownloadFinished(); void onDownloadProgress(int percent); void onStuffedCmd(const char *cmd); void onError(const char *description); void onOOBPrint(const char *msg); private: ActiveClient* myActiveClient; App* myApp; int myConnectionRetries; static const int ConnectionRetries = 10; QString myPrintLine; bool myDownloadProgressPrintedFlag; bool myOnServerFlag; bool mySpamMutedFlag; bool myQWMutedFlag; QTimer* myJoinMessageTimer; //after that time the bot will say hi. QTimer* myKeepNickTimer; //interval in which the bot tries to retake his nickname /* flood timers */ QTimer* myFloodTimer; //floodtimer for all commands QTimer* myQWBroadcastFloodTimer; //floodtimer for .qw broadcasts QTimer* mySpamBroadcastFloodTimer; //floodtimer for .spam broadcasts /* time when floodtimer was started for calc time left */ QTime myFloodTimerStart; QTime myQWBroadcastFloodTimerStart; QTime mySpamBroadcastFloodTimerStart; bool myJoinMessagePrinted; bool myFloodMsgPrinted; bool myJoinMessageScheduled; PlayerList myPlayerList; int myMaxClients; void print(const QString& msg); void parsePrintedLine(); int playerCount() const; int maxClients() const; static QString parseNameFun(const QString& string); }; #endif // CLIENT_H