From 001f1d11e977d5586fe8496821b3a1e4bf76f10c Mon Sep 17 00:00:00 2001 From: manuel Date: Thu, 14 Apr 2011 20:37:53 +0200 Subject: place actors at random positions --- pacman-c++/mainwidget.cpp | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) (limited to 'pacman-c++/mainwidget.cpp') diff --git a/pacman-c++/mainwidget.cpp b/pacman-c++/mainwidget.cpp index a77daab..1fc7687 100644 --- a/pacman-c++/mainwidget.cpp +++ b/pacman-c++/mainwidget.cpp @@ -25,10 +25,12 @@ MainWidget::MainWidget(QWidget *parent) /* call updateMap after m_color ist set! */ createGui(); - Transmission::map_t map = Util::createDemoMap(); - m_scene->updateMap(map); - Util::deleteMap(map); - map = NULL; + + /* wait for the server to send the first map update (initial map) + * WARNING: this will block the gui + */ + m_socket->waitForReadyRead(); + tick(); connect(m_socket, SIGNAL(readyRead()), this, SLOT(tick())); @@ -84,7 +86,7 @@ void MainWidget::createGui() QGraphicsView *window = new QGraphicsView(m_scene, this); window->setFrameStyle(0); - window->setFixedSize(Constants::map_size_pixel.width, Constants::map_size_pixel.height); + window->setFixedSize(m_scene->sceneRect().size().toSize()); window->setWindowFlags(window->windowFlags() & ~Qt::WindowMaximizeButtonHint); window->setFocusPolicy(Qt::NoFocus); layout->addWidget(window, 0, Qt::AlignCenter); @@ -140,27 +142,27 @@ Transmission::field_t MainWidget::translateKey(int key) void MainWidget::tick() { - QSharedPointer data = Util::receivePacket(m_socket); - bool worked = m_updatepacket.ParseFromArray(data->data(), data->size()); - Q_ASSERT(worked); - Q_UNUSED(worked); - Transmission::map_t map = Util::createUninitialisedMap(); - Q_ASSERT(m_updatepacket.field_size() == (int) (Constants::map_size.width * Constants::map_size.height)); - int i = 0; - for (unsigned int x = 0; x < Constants::map_size.width; ++x) + while (m_socket->bytesAvailable() > (qint64)sizeof(qint64)) { - for (unsigned int y = 0; y < Constants::map_size.height; ++y) + QSharedPointer data = Util::receivePacket(m_socket); + bool worked = m_updatepacket.ParseFromArray(data->data(), data->size()); + Q_ASSERT(worked); + Q_UNUSED(worked); + Transmission::map_t map = Util::createUninitialisedMap(); + Q_ASSERT(m_updatepacket.field_size() == (int) (Constants::map_size.width * Constants::map_size.height)); + int i = 0; + for (unsigned int x = 0; x < Constants::map_size.width; ++x) { - map[x][y] = m_updatepacket.field(i); - ++i; + for (unsigned int y = 0; y < Constants::map_size.height; ++y) + { + map[x][y] = m_updatepacket.field(i); + ++i; + } } + m_scene->updateMap(map); + Util::deleteMap(map); + updateScore(m_updatepacket); } - m_scene->updateMap(map); - Util::deleteMap(map); - updateScore(m_updatepacket); - - if (m_socket->bytesAvailable() > (qint64)sizeof(qint64)) - tick(); } void MainWidget::keyPressEvent(QKeyEvent* event) -- cgit v1.2.3