From da481762bded855ffd709114ee3a16ec4dbaaeb6 Mon Sep 17 00:00:00 2001 From: totycro Date: Sun, 10 Apr 2011 00:55:13 +0200 Subject: Tell player about their color minor cleanup --- pacman-c++/server.cpp | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) (limited to 'pacman-c++/server.cpp') diff --git a/pacman-c++/server.cpp b/pacman-c++/server.cpp index bbe4ad6..422f7e0 100644 --- a/pacman-c++/server.cpp +++ b/pacman-c++/server.cpp @@ -77,14 +77,21 @@ void Server::waitForClientConnections() // server must stay alive as long as sockets (qt parent mem mechanism) tcpSrv->listen(QHostAddress::Any, Constants::port); + Color::Color playerColors[3] = { Color::red, Color::blue, Color::green }; //for (unsigned int i=0; iwaitForNewConnection(-1); Q_ASSERT(connectionAvailable); QTcpSocket *socket = tcpSrv->nextPendingConnection(); - // TODO: color assignment - m_clientConnections[Color::red] = socket; connect(socket, SIGNAL(readyRead()), this, SLOT(keyPressUpdate())); + + // assign color + Color::Color color = playerColors[i]; + m_clientConnections[color] = socket; + // notify player of color + ProtoBuf::WhoAmI packet; + packet.set_color(color); + Util::sendPacket(packet, socket); } } @@ -93,16 +100,7 @@ void Server::sendUpdate(QSharedPointer< ProtoBuf::MapUpdate > packet) std::string dataStr = packet->SerializeAsString(); const char *data = dataStr.c_str(); foreach(QTcpSocket *socket, m_clientConnections) { - //qDebug() << "sending str len: " << dataStr.length(); - int bytesWritten = socket->write(data, dataStr.length()); - if (bytesWritten != dataStr.length()) { - qDebug() << "written: " << bytesWritten; - qDebug() << "strl: " << dataStr.length(); - } - Q_ASSERT(bytesWritten == dataStr.length()); - } - foreach(QTcpSocket *socket, m_clientConnections) { - socket->flush(); + Util::sendPacket(data, dataStr.length(), socket); } } @@ -117,12 +115,8 @@ void Server::keyPressUpdate() qDebug() << "data?"; if (socket->bytesAvailable() > 0) { qDebug() << "data!"; - QByteArray data = socket->readAll(); - // see mainwidget.cpp:153 std::string dataStr; - for (int i = 0; i < data.size(); ++i) { - dataStr += data[i]; - } + Util::QByteArrayToStdString(socket->readAll(), dataStr); ProtoBuf::KeyPressUpdate packet; packet.ParseFromString(dataStr); Transmission::field_t direction = packet.newkey(); @@ -130,10 +124,8 @@ void Server::keyPressUpdate() m_actorMovements[ color ] = Util::transmissionMovementToActor(direction); } } - } - int main(int argc, char ** argv) { GOOGLE_PROTOBUF_VERIFY_VERSION; -- cgit v1.2.3