#ifndef SERVER_H #define SERVER_H #include #include #include class Server_Game; class Server_ChatChannel; class Server_ProtocolHandler; enum AuthenticationResult { PasswordWrong = 0, PasswordRight = 1, UnknownUser = 2 }; class Server : public QObject { Q_OBJECT private slots: void gameClosing(); void broadcastChannelUpdate(); public: Server(QObject *parent = 0); ~Server(); virtual AuthenticationResult checkUserPassword(const QString &user, const QString &password) = 0; QList getGames() const { return games.values(); } Server_Game *getGame(int gameId) const; const QMap &getChatChannels() { return chatChannels; } void broadcastGameListUpdate(Server_Game *game); void addClient(Server_ProtocolHandler *player); void removeClient(Server_ProtocolHandler *player); virtual QStringList getLoginMessage() const = 0; Server_Game *createGame(const QString &description, const QString &password, int maxPlayers, bool spectatorsAllowed, const QString &playerName); private: QMap games; QList clients; QMap chatChannels; protected: int nextGameId; void addChatChannel(Server_ChatChannel *newChannel); }; #endif