From 197708500f3adaaa50bc1a5a94aec0db8ea621e5 Mon Sep 17 00:00:00 2001 From: manuel Date: Thu, 14 Apr 2011 19:18:48 +0200 Subject: add dynamic player count for client. currently works only with 1 player as server doesn't send the initial map to the clients --- pacman-c++/server.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'pacman-c++/server.cpp') diff --git a/pacman-c++/server.cpp b/pacman-c++/server.cpp index 50ee3b7..e09d126 100644 --- a/pacman-c++/server.cpp +++ b/pacman-c++/server.cpp @@ -17,6 +17,9 @@ Server::Server(QWidget *parent) bool Server::run() { + qDebug() << "[Server] Running server..."; + qDebug() << "[Server] Max players:" << m_maxplayers; + qDebug() << "[Server] Number of bots:" << m_numbots; if (!waitForClientConnections()) return false; @@ -164,20 +167,14 @@ bool Server::waitForClientConnections() qCritical() << "Error while creating socket:" << qPrintable(tcpSrv->errorString()); return false; } - qDebug() << "[Server] Listening on:" << qPrintable(QString("%1:%2").arg(tcpSrv->serverAddress().toString()) .arg(tcpSrv->serverPort())); + qDebug() << "[Server] Waiting for clients"; - ProtoBuf::WhoAmI packet; -#define SINGLE -#ifdef SINGLE - for (unsigned int i = 0; i < 1; ++i) - { -#else - for (unsigned int i = 0; Color::order[i] != Color::none; ++i) + ProtoBuf::Init packet; + for (unsigned int i = 0; i < m_maxplayers; ++i) { -#endif bool connectionAvailable = tcpSrv->waitForNewConnection(-1); Q_ASSERT(connectionAvailable); Q_UNUSED(connectionAvailable); @@ -189,6 +186,7 @@ bool Server::waitForClientConnections() m_clientConnections[color] = socket; /* notify player of color */ packet.set_color(color); + packet.set_maxplayers(m_maxplayers); Util::sendPacket(packet, socket); qDebug() << "[Connect] New Player: color=" << color; @@ -208,7 +206,7 @@ void Server::sendUpdate(Transmission::map_t map) m_updatepacket.add_field(map[x][y]); } - for(unsigned i = 0; Color::order[i] != Color::none; ++i) + for(unsigned i = 0; i < m_maxplayers; ++i) { m_updatepacket.add_round_points(m_actors.value(Color::order[i])->getRoundPoints()); m_updatepacket.add_game_points(m_actors.value(Color::order[i])->getGamePoints()); -- cgit v1.2.3