1 /********************************************************************
3 * Copyright (C) 2008 Davide Pesavento
5 * This file is part of GoMoku3D.
7 * GoMoku3D is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
12 * GoMoku3D is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with GoMoku3D. If not, see <http://www.gnu.org/licenses/>.
20 *******************************************************************/
26 #include <QLinkedList>
29 #include <QStringList>
32 #include "ServerSocket.h"
38 class GameServer
: public Network
43 GameServer(QWidget
*gui
, HistoryModel
*history
);
44 virtual ~GameServer();
46 virtual Point
requestMove();
47 virtual void setupChat(ChatWidget
*widget
);
48 virtual void setupGameLoop(GameLoop
*gameLoop
);
51 void broadcastChatMessage(QString sender
, QString message
);
52 virtual void broadcastMove(Move move
);
55 ServerSettings
*_settings
;
56 QTcpServer
*_listener
;
57 QLinkedList
<ServerSocket
*> _pendingConnections
;
58 QList
<ServerSocket
*> _remotePlayers
;
59 QList
<ServerSocket
*> _spectators
;
61 HistoryModel
*_history
;
66 QString _localPlayerName
;
70 void bootstrapClient(StreamSocket
*socket
);
71 void checkStartGame();
72 void handleError(QString errorMessage
);
73 void handleIncomingConnection();
74 void handleJoinRequest(QString mode
, QString name
);
75 void setTurn(int playerId
);
78 void playerJoined(int id
, QString name
, QString type
);
79 void playerLeft(int id
);