From 817dcc4e4493fb89c6d52b5e5ce1548b6a047d08 Mon Sep 17 00:00:00 2001 From: manuel Date: Sun, 10 Apr 2011 21:34:29 +0200 Subject: - first round of coding cleanup - small sound fix --- pacman-c++/actor.cpp | 22 +++++++++++++ pacman-c++/actor.h | 15 ++++----- pacman-c++/audio.cpp | 7 ++--- pacman-c++/block.h | 4 +-- pacman-c++/bonuspoint.h | 3 +- pacman-c++/client.cpp | 2 +- pacman-c++/mainwidget.cpp | 57 +++++++++++++++++++--------------- pacman-c++/mainwidget.h | 2 +- pacman-c++/pacman.proto | 1 + pacman-c++/pixmapitem.h | 4 ++- pacman-c++/point.h | 3 +- pacman-c++/sceneholder.cpp | 29 ++++++++++++----- pacman-c++/sceneholder.h | 7 +++-- pacman-c++/server.cpp | 77 +++++++++++++++++++++++++++++----------------- pacman-c++/util.cpp | 52 +++++++++++++++++-------------- pacman-c++/util.h | 7 ++--- 16 files changed, 183 insertions(+), 109 deletions(-) diff --git a/pacman-c++/actor.cpp b/pacman-c++/actor.cpp index 8184c6f..e34d338 100644 --- a/pacman-c++/actor.cpp +++ b/pacman-c++/actor.cpp @@ -202,3 +202,25 @@ void Actor::eatingCherry() return; AudioManager::self()->play(Sound::EatingCherry); } + +unsigned int Actor::getRoundPoints() +{ + return m_roundPoints; +} + +unsigned int Actor::getGamePoints() +{ + return m_gamePoints; +} + +void Actor::addRoundPoints(unsigned int amount) +{ + m_roundPoints += amount; +} + +void Actor::finishRound() +{ + m_gamePoints += m_roundPoints; + m_roundPoints = 0; +} + diff --git a/pacman-c++/actor.h b/pacman-c++/actor.h index 78b7c01..19d672b 100644 --- a/pacman-c++/actor.h +++ b/pacman-c++/actor.h @@ -23,7 +23,8 @@ public: }; Actor(Color::Color color, bool local = false, QGraphicsItem *parent = 0); - virtual ~Actor() {}; + virtual ~Actor() + {}; QSequentialAnimationGroup *setupEatingAnimation(Actor::Movement direction); Color::Color getColor(); @@ -34,11 +35,10 @@ public: void die(); void eatingCherry(); - unsigned int getRoundPoints() { return m_roundPoints; } - unsigned int getGamePoints() { return m_gamePoints; } - - void addRoundPoints(unsigned int amount) { m_roundPoints += amount; } - void finishRound() { m_gamePoints += m_roundPoints; m_roundPoints = 0; } + unsigned int getRoundPoints(); + unsigned int getGamePoints(); + void addRoundPoints(unsigned int amount); + void finishRound(); private: QPixmap m_pix; @@ -48,7 +48,8 @@ private: bool m_local; AudioPlayer *m_player; - unsigned int m_roundPoints, m_gamePoints; + unsigned int m_roundPoints; + unsigned int m_gamePoints; QList m_images; QList m_eating; diff --git a/pacman-c++/audio.cpp b/pacman-c++/audio.cpp index 0692cd1..ebeda2b 100644 --- a/pacman-c++/audio.cpp +++ b/pacman-c++/audio.cpp @@ -22,6 +22,8 @@ AudioManager::AudioManager() m_players.append(firstplayer); m_muted = false; +#else + qDebug() << "Server has no sound" #endif // SERVER } @@ -61,7 +63,6 @@ void AudioManager::pause() { if (!isWorking()) return; - qDebug() << "pause"; for(int i = 0; i < m_players.count(); ++i) m_players.at(i)->pause(); } @@ -70,7 +71,6 @@ void AudioManager::stop() { if (!isWorking()) return; - qDebug() << "stop"; for(int i = 0; i < m_players.count(); ++i) m_players.at(i)->stop(); } @@ -79,7 +79,6 @@ void AudioManager::clear() { if (!isWorking()) return; - qDebug() << "clear"; for(int i = 0; i < m_players.count(); ++i) m_players.at(i)->clear(); } @@ -105,7 +104,6 @@ void AudioManager::play(Sound::Type sound) return; } - qDebug() << "play"; AudioPlayer *player = audioPlayer(); player->setCurrentSource(Phonon::MediaSource(m_sounds[sound])); player->play(); @@ -115,7 +113,6 @@ void AudioManager::enqueue(Sound::Type sound) { if (!isWorking()) return; - qDebug() << "manager enqueue"; audioPlayer()->enqueue(Phonon::MediaSource(m_sounds[sound])); } diff --git a/pacman-c++/block.h b/pacman-c++/block.h index 851f45c..17f1813 100644 --- a/pacman-c++/block.h +++ b/pacman-c++/block.h @@ -19,8 +19,8 @@ public: public: Block(Color::Color color, unsigned int neighbours = None, QGraphicsItem *parent = 0); - virtual ~Block() {}; - + virtual ~Block() + {}; void setNeighbours(unsigned int neighbours); diff --git a/pacman-c++/bonuspoint.h b/pacman-c++/bonuspoint.h index f0fc550..d204f72 100644 --- a/pacman-c++/bonuspoint.h +++ b/pacman-c++/bonuspoint.h @@ -8,7 +8,8 @@ class BonusPoint { public: BonusPoint(QGraphicsItem *parent=0); - virtual ~BonusPoint() {}; + virtual ~BonusPoint() + {}; }; #endif // BONUSPOINT_H diff --git a/pacman-c++/client.cpp b/pacman-c++/client.cpp index 394b446..d885e49 100644 --- a/pacman-c++/client.cpp +++ b/pacman-c++/client.cpp @@ -26,7 +26,7 @@ void Client::createMenu() toggleSound->setAlignment(Qt::AlignBottom); bool sound = AudioManager::self()->isWorking(); - bool muted = !(sound && m_settings->value("muted", false).toBool()); + bool muted = !sound || m_settings->value("muted", false).toBool(); AudioManager::self()->setMuted(muted); QImage img(muted ? ":/soundoff" : ":/soundon"); diff --git a/pacman-c++/mainwidget.cpp b/pacman-c++/mainwidget.cpp index ebd0f02..f5d4b7f 100644 --- a/pacman-c++/mainwidget.cpp +++ b/pacman-c++/mainwidget.cpp @@ -10,26 +10,27 @@ MainWidget::MainWidget(QWidget *parent) : SceneHolder(parent), m_currentKey(0), m_running(false) { createGui(); - updateMap(Util::createDummyMap()); - - //connect(AudioPlayer::self(), SIGNAL(finished()), this, SLOT(startGame())); - //AudioPlayer::self()->play(AudioPlayer::Intro); + updateMap(Util::createDemoMap()); Color::Color myColor = connectToServer(); - if (myColor == Color::none) { + if (myColor == Color::none) + { QMessageBox::critical(this, "Error", "Failed to connect to server, falling back to local test mode"); // TODO: quit application here or sth m_socket = NULL; QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(tick())); timer->start(Constants::tick); - } else { - connect(m_socket, SIGNAL(readyRead()), this, SLOT(tick())); } + else + connect(m_socket, SIGNAL(readyRead()), this, SLOT(tick())); // TODO: use mycolor - qDebug() << "myc" << myColor; + qDebug() << "mycolor=" << myColor; + //TODO: play intro as soon as there are enough players + //connect(AudioPlayer::self(), SIGNAL(finished()), this, SLOT(startGame())); + //AudioPlayer::self()->play(AudioPlayer::Intro); startGame(); } @@ -82,6 +83,7 @@ void MainWidget::updateScore(const ProtoBuf::MapUpdate& packet) QLabel *turnPointsLbl; QLabel *allPointsLbl; + //TODO: change proto and move that inside an array turnPointsLbl = dynamic_cast(m_playerScoreLayouts.at(0)->itemAtPosition(0,1)->widget()); allPointsLbl = dynamic_cast(m_playerScoreLayouts.at(0)->itemAtPosition(1,1)->widget()); turnPointsLbl->setText(QString::number(packet.round_points_red())); @@ -98,7 +100,7 @@ void MainWidget::updateScore(const ProtoBuf::MapUpdate& packet) allPointsLbl->setText(QString::number(packet.game_points_green())); } -Transmission::field_t MainWidget::translateKey(int key, int def) +Transmission::field_t MainWidget::translateKey(int key) { switch(key) { @@ -119,16 +121,16 @@ Transmission::field_t MainWidget::translateKey(int key, int def) return Transmission::direction_right; break; default: - return def; + return Transmission::direction_none; } } void MainWidget::tick() { - if (m_socket == NULL) { + if (m_socket == NULL) + { // OLD TEST MODE Actor::Movement mov = Util::transmissionMovementToActor(m_currentKey, Actor::None); - QMapIterator i(m_actors); while (i.hasNext()) { @@ -142,7 +144,9 @@ void MainWidget::tick() list.at(j)->setOpacity(0.6); } } - } else { + } + else + { std::string dataStr; Util::QByteArrayToStdString(m_socket->readAll(), dataStr); @@ -152,8 +156,10 @@ void MainWidget::tick() Transmission::map_t map = Util::createUninitialisedMap(); Q_ASSERT(packet.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) { - for (unsigned int y = 0; y < Constants::map_size.height; ++y) { + for (unsigned int x = 0; x < Constants::map_size.width; ++x) + { + for (unsigned int y = 0; y < Constants::map_size.height; ++y) + { map[x][y] = packet.field(i); ++i; } @@ -169,23 +175,23 @@ void MainWidget::keyPressEvent(QKeyEvent* event) return; QWidget::keyPressEvent(event); - Transmission::field_t newKey = translateKey(event->key(), -1); - if (m_currentKey == newKey || newKey == -1) { + Transmission::field_t newKey = translateKey(event->key()); + if (m_currentKey == newKey || newKey == Transmission::direction_none) return; - } m_currentKey = newKey; - if (m_socket != NULL) { + if (m_socket != NULL) + { // send to server ProtoBuf::KeyPressUpdate packet; packet.set_newkey(m_currentKey); Util::sendPacket(packet, m_socket); qDebug() << "send key: " << m_currentKey; - } else { - + } + else + { // test stuff Actor::Movement mov = Util::transmissionMovementToActor(m_currentKey, Actor::None); - QMapIterator i(m_actors); while (i.hasNext()) { @@ -229,11 +235,13 @@ Color::Color MainWidget::connectToServer() m_socket = new QTcpSocket(this); m_socket->connectToHost("127.0.0.1", Constants::port); bool worked = m_socket->waitForConnected(Constants::connection_timeout); - if (worked) { + if (worked) + { // additional init // first packet is our color worked = m_socket->waitForReadyRead(); - if (worked) { + if (worked) + { std::string data; Util::QByteArrayToStdString(m_socket->readAll(), data); ProtoBuf::WhoAmI packet; @@ -243,4 +251,3 @@ Color::Color MainWidget::connectToServer() } return Color::none; } - diff --git a/pacman-c++/mainwidget.h b/pacman-c++/mainwidget.h index bd83d5f..ede3ecf 100644 --- a/pacman-c++/mainwidget.h +++ b/pacman-c++/mainwidget.h @@ -43,7 +43,7 @@ private: Transmission::field_t m_currentKey; // translate Qt::Key to our key format - Transmission::field_t translateKey(int key, int def=0); + Transmission::field_t translateKey(int key); // game running bool m_running; diff --git a/pacman-c++/pacman.proto b/pacman-c++/pacman.proto index 129d07f..3a09702 100644 --- a/pacman-c++/pacman.proto +++ b/pacman-c++/pacman.proto @@ -4,6 +4,7 @@ message KeyPressUpdate { required uint32 newKey = 1; } +//TODO move points inside array message MapUpdate { repeated uint32 field = 1 [packed=true]; required uint32 round_points_red = 2; diff --git a/pacman-c++/pixmapitem.h b/pacman-c++/pixmapitem.h index cff976f..f57c22a 100644 --- a/pacman-c++/pixmapitem.h +++ b/pacman-c++/pixmapitem.h @@ -13,7 +13,9 @@ public: PixmapItem(const QString &fileName, QGraphicsScene *scene); PixmapItem(const QPixmap &pix, QGraphicsItem *parent = 0); PixmapItem(const QPixmap &pix, QGraphicsScene *scene); - virtual ~PixmapItem() {}; + virtual ~PixmapItem() + {}; + void setPixmap(const QPixmap &pix); void setSprite(int x, int y, int width, int height); QSizeF size() const; diff --git a/pacman-c++/point.h b/pacman-c++/point.h index 1b5863a..ad1cf77 100644 --- a/pacman-c++/point.h +++ b/pacman-c++/point.h @@ -8,7 +8,8 @@ class Point { public: Point(QGraphicsItem *parent=0); - virtual ~Point() {}; + virtual ~Point() + {}; }; #endif // POINT_H diff --git a/pacman-c++/sceneholder.cpp b/pacman-c++/sceneholder.cpp index 515d5ec..0236470 100644 --- a/pacman-c++/sceneholder.cpp +++ b/pacman-c++/sceneholder.cpp @@ -14,9 +14,8 @@ SceneHolder::SceneHolder(QWidget* parent): QWidget(parent) m_scene->setBackgroundBrush(Qt::black); visualMap.resize(Constants::map_size.width); - for (int i=0; i > visualMap; @@ -32,7 +34,6 @@ protected: QMap m_actors; QGraphicsScene *m_scene; - }; #endif // SCENEHOLDER_H diff --git a/pacman-c++/server.cpp b/pacman-c++/server.cpp index c83c70d..144043b 100644 --- a/pacman-c++/server.cpp +++ b/pacman-c++/server.cpp @@ -13,7 +13,7 @@ Server::Server(QWidget *parent) waitForClientConnections(); qDebug() << "clients connected"; - updateMap(Util::createDummyMap()); + updateMap(Util::createDemoMap()); QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(tick())); @@ -35,33 +35,51 @@ Transmission::map_t Server::calculateUpdates() Transmission::map_t map = Util::createEmptyMap(); QMapIterator i(m_actorMovements); - while (i.hasNext()) { + while (i.hasNext()) + { i.next(); - Actor *actor = m_actors.value( i.key() ); - QPoint mapPosition = CoordToMapPosition(actor->x(), actor->y()); + Actor *actor = m_actors.value(i.key()); + QPoint mapPosition = actor->pos().toPoint(); + mapPosition = CoordToMapPosition(actor->pos().toPoint()); qDebug() << "actor " << i.key() << " is at " << mapPosition; QPoint newMapPosition = mapPosition; - switch (i.value()) { - case Actor::Up: newMapPosition += QPoint(0, -1); break; - case Actor::Down: newMapPosition += QPoint(0, 1); break; - case Actor::Left: newMapPosition += QPoint(-1, 0); break; - case Actor::Right: newMapPosition += QPoint(1, 0); break; - case Actor::None: break; - default: Q_ASSERT(false); + switch (i.value()) + { + case Actor::Up: + newMapPosition += QPoint(0, -1); + break; + case Actor::Down: + newMapPosition += QPoint(0, 1); + break; + case Actor::Left: + newMapPosition += QPoint(-1, 0); + break; + case Actor::Right: + newMapPosition += QPoint(1, 0); + break; + case Actor::None: + break; + default: + Q_ASSERT(false); } - if (newMapPosition.x() < 0) newMapPosition.setX(0); - if (newMapPosition.x() >= visualMap.size()) newMapPosition.setX(visualMap.size()-1); - if (newMapPosition.y() < 0) newMapPosition.setY(0); - if (newMapPosition.y() >= visualMap[newMapPosition.x()].size()) newMapPosition.setY(visualMap[newMapPosition.x()].size()-1); + + if (newMapPosition.x() < 0) + newMapPosition.setX(0); + if (newMapPosition.x() >= visualMap.size()) + newMapPosition.setX(visualMap.size() - 1); + if (newMapPosition.y() < 0) + newMapPosition.setY(0); + if (newMapPosition.y() >= visualMap[newMapPosition.x()].size()) + newMapPosition.setY(visualMap[newMapPosition.x()].size() - 1); // - if(dynamic_cast(visualMap[newMapPosition.x()][newMapPosition.y()]) != 0) { + if(dynamic_cast(visualMap[newMapPosition.x()][newMapPosition.y()]) != 0) continue; - } // - if (mapPosition != newMapPosition) { + if (mapPosition != newMapPosition) + { map[mapPosition.x()][mapPosition.y()] = Transmission::empty; map[newMapPosition.x()][newMapPosition.y()] = Transmission::pacman | i.key() | @@ -76,10 +94,10 @@ QSharedPointer< ProtoBuf::MapUpdate > Server::createUpdatePacket(Transmission::m QSharedPointer updatePacket = QSharedPointer(new ProtoBuf::MapUpdate); - for (unsigned int x = 0; x < Constants::map_size.width; ++x) { - for (unsigned int y = 0; y < Constants::map_size.height; ++y) { + for (unsigned int x = 0; x < Constants::map_size.width; ++x) + { + for (unsigned int y = 0; y < Constants::map_size.height; ++y) updatePacket->add_field(map[x][y]); - } } updatePacket->set_round_points_red(m_actors.value(Color::red)->getRoundPoints()); updatePacket->set_game_points_red(m_actors.value(Color::red)->getGamePoints()); @@ -101,9 +119,11 @@ void Server::waitForClientConnections() 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; iwaitForNewConnection(-1); Q_ASSERT(connectionAvailable); @@ -124,21 +144,22 @@ void Server::sendUpdate(QSharedPointer< ProtoBuf::MapUpdate > packet) { std::string dataStr = packet->SerializeAsString(); const char *data = dataStr.c_str(); - foreach(QTcpSocket *socket, m_clientConnections) { + foreach(QTcpSocket *socket, m_clientConnections) Util::sendPacket(data, dataStr.length(), socket); - } } void Server::keyPressUpdate() { qDebug() << "kpress"; QMapIterator i(m_clientConnections); - while (i.hasNext()) { + while (i.hasNext()) + { i.next(); Color::Color color = i.key(); QTcpSocket *socket = i.value(); qDebug() << "data?"; - if (socket->bytesAvailable() > 0) { + if (socket->bytesAvailable() > 0) + { qDebug() << "data!"; std::string dataStr; Util::QByteArrayToStdString(socket->readAll(), dataStr); @@ -146,7 +167,7 @@ void Server::keyPressUpdate() packet.ParseFromString(dataStr); Transmission::field_t direction = packet.newkey(); qDebug() << "data:" << direction; - m_actorMovements[ color ] = Util::transmissionMovementToActor(direction); + m_actorMovements[color] = Util::transmissionMovementToActor(direction); } } } diff --git a/pacman-c++/util.cpp b/pacman-c++/util.cpp index 23826f7..3d04d9f 100644 --- a/pacman-c++/util.cpp +++ b/pacman-c++/util.cpp @@ -2,9 +2,10 @@ #include -namespace Util { - - Transmission::map_t createUninitialisedMap() { +namespace Util +{ + Transmission::map_t createUninitialisedMap() + { Transmission::map_t map; map = new Transmission::field_t*[Constants::map_size.width]; for (unsigned int i = 0; i < Constants::map_size.width; ++i) @@ -12,7 +13,8 @@ namespace Util { return map; } - Transmission::map_t createEmptyMap() { + Transmission::map_t createEmptyMap() + { Transmission::map_t map = createUninitialisedMap(); for (unsigned int x = 0; x < Constants::map_size.width; ++x) { @@ -24,8 +26,9 @@ namespace Util { } return map; } + // temporary - Transmission::map_t createDummyMap() + Transmission::map_t createDemoMap() { Transmission::map_t map = createEmptyMap(); @@ -86,9 +89,10 @@ namespace Util { return map; } - - Transmission::field_t actorMovementToTransmission(Actor::Movement mov, Transmission::field_t def) { - switch (mov) { + Transmission::field_t actorMovementToTransmission(Actor::Movement mov, Transmission::field_t def) + { + switch (mov) + { case Actor::None: return Transmission::direction_none; break; @@ -105,17 +109,18 @@ namespace Util { return Transmission::direction_down; break; default: - if (def == static_cast(-1)) { + if (def == static_cast(-1)) Q_ASSERT(false); - } else { + else return def; - } } return 0; // for pleasing the compiler } - Actor::Movement transmissionMovementToActor(Transmission::field_t field, Actor::Movement def) { - switch (field) { + Actor::Movement transmissionMovementToActor(Transmission::field_t field, Actor::Movement def) + { + switch (field) + { case Transmission::direction_none: return Actor::None; break; @@ -132,39 +137,40 @@ namespace Util { return Actor::Down; break; default: - if (def == Actor::Movement(-1)) { + if (def == Actor::Movement(-1)) Q_ASSERT(false); - } else { + else return def; - } } return Actor::None; // for pleasing the compiler } - void QByteArrayToStdString(const QByteArray& arr, std::string& str) { + void QByteArrayToStdString(const QByteArray& arr, std::string& str) + { // TODO: normal conversion to std::string won't work, // probably due to \0-bytes. //std::string dataStr = std::string(data.constData()); //std::string dataStr = QString(data).toStdString(); - for (int i=0; iwrite(data, length); - if (bytesWritten != length) { + if (bytesWritten != length) + { qDebug() << "written: " << bytesWritten; qDebug() << "strl: " << length; } Q_ASSERT(bytesWritten == length); socket->flush(); } - } diff --git a/pacman-c++/util.h b/pacman-c++/util.h index 4c0ccb0..1422dee 100644 --- a/pacman-c++/util.h +++ b/pacman-c++/util.h @@ -7,11 +7,10 @@ class QTcpSocket; -namespace Util { +namespace Util +{ Transmission::map_t createUninitialisedMap(); - - Transmission::map_t createDummyMap(); - + Transmission::map_t createDemoMap(); Transmission::map_t createEmptyMap(); // default is to assert false with -1 -- cgit v1.2.3