From e38dea479acf2d02c68af233e07b068f91afe935 Mon Sep 17 00:00:00 2001 From: manuel Date: Mon, 11 Apr 2011 02:53:34 +0200 Subject: make local player always the first player in scoreboard --- pacman-c++/mainwidget.cpp | 16 +++++++++------- pacman-c++/server.cpp | 7 +++---- pacman-c++/server.h | 4 ++-- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/pacman-c++/mainwidget.cpp b/pacman-c++/mainwidget.cpp index bdc2da1..b69e0c0 100644 --- a/pacman-c++/mainwidget.cpp +++ b/pacman-c++/mainwidget.cpp @@ -9,8 +9,6 @@ MainWidget::MainWidget(QWidget *parent) : SceneHolder(parent), m_currentKey(0), m_running(false) { - createGui(); - m_color = connectToServer(); if (m_color == Color::none) { @@ -24,6 +22,7 @@ MainWidget::MainWidget(QWidget *parent) } /* call updateMap after m_color ist set! */ + createGui(); updateMap(Util::createDemoMap()); if (m_socket != NULL) @@ -42,16 +41,14 @@ void MainWidget::createGui() { setFocusPolicy(Qt::StrongFocus); - QVBoxLayout *layout = new QVBoxLayout(this); + /* first one is always the own score */ QHBoxLayout *scoreLayout = new QHBoxLayout(); - for (unsigned int i = 0; Color::order[i] != Color::none ; ++i) { QGroupBox *scoreBox = new QGroupBox(QString("Spieler %1").arg(i + 1), this); scoreBox->setObjectName(QString("actor%1").arg(i + 1)); scoreBox->setCheckable(true); connect(scoreBox, SIGNAL(clicked()), this, SLOT(playerScoreClicked())); - scoreLayout->addWidget(scoreBox); QGridLayout *playerLayout = new QGridLayout(); scoreBox->setLayout(playerLayout); @@ -62,17 +59,22 @@ void MainWidget::createGui() playerLayout->addWidget(new QLabel("", this), 0, 1); playerLayout->addWidget(new QLabel("", this), 1, 1); + if (Color::order[i] == m_color) + scoreLayout->insertWidget(0, scoreBox); + else + scoreLayout->addWidget(scoreBox); m_playerScoreLayouts.append(playerLayout); } + QVBoxLayout *layout = new QVBoxLayout(this); + layout->addLayout(scoreLayout); + QGraphicsView *window = new QGraphicsView(m_scene, this); window->setFrameStyle(0); window->setAlignment(Qt::AlignLeft | Qt::AlignTop); window->setFixedSize(Constants::map_size_pixel.width, Constants::map_size_pixel.height); window->setWindowFlags(window->windowFlags() & ~Qt::WindowMaximizeButtonHint); window->setFocusPolicy(Qt::NoFocus); - - layout->addLayout(scoreLayout); layout->addWidget(window); QFile css(":/stylesheet"); diff --git a/pacman-c++/server.cpp b/pacman-c++/server.cpp index 4715ec6..e7dd943 100644 --- a/pacman-c++/server.cpp +++ b/pacman-c++/server.cpp @@ -118,12 +118,11 @@ void Server::waitForClientConnections() #define SINGLE - Color::Color playerColors[3] = { Color::red, Color::blue, Color::green }; #ifdef SINGLE - for (unsigned int i=0; i < 1; ++i) + for (unsigned int i = 0; i < 1; ++i) { #else - for (unsigned int i=0; i < Color::max; ++i) + for (unsigned int i = 0; Color::order[i] != Color::none; ++i) { #endif bool connectionAvailable = tcpSrv->waitForNewConnection(-1); @@ -132,7 +131,7 @@ void Server::waitForClientConnections() connect(socket, SIGNAL(readyRead()), this, SLOT(keyPressUpdate())); // assign color - Color::Color color = playerColors[i]; + Color::Color color = Color::order[i]; m_clientConnections[color] = socket; // notify player of color ProtoBuf::WhoAmI packet; diff --git a/pacman-c++/server.h b/pacman-c++/server.h index 6ffbb35..8d73d24 100644 --- a/pacman-c++/server.h +++ b/pacman-c++/server.h @@ -33,9 +33,9 @@ protected: QSharedPointer createUpdatePacket(Transmission::map_t); // update client maps - void sendUpdate(QSharedPointer< ProtoBuf::MapUpdate > ); + void sendUpdate(QSharedPointer); - QMap m_clientConnections; + QMap m_clientConnections; // current movements. required to make pacmans continue their movement. QMap m_actorMovements; -- cgit v1.2.3