From 8135626bfe58cf605eda793122c049e8ec7ef31d Mon Sep 17 00:00:00 2001 From: manuel Date: Mon, 11 Apr 2011 14:53:08 +0200 Subject: minor movement improvements --- pacman-c++/actor.cpp | 19 ++++++++++++++----- pacman-c++/actor.h | 8 ++++++-- pacman-c++/point.cpp | 7 +++---- pacman-c++/server.cpp | 13 ++++++------- 4 files changed, 29 insertions(+), 18 deletions(-) diff --git a/pacman-c++/actor.cpp b/pacman-c++/actor.cpp index ab860bc..43368d6 100644 --- a/pacman-c++/actor.cpp +++ b/pacman-c++/actor.cpp @@ -96,16 +96,21 @@ QSequentialAnimationGroup *Actor::setupEatingAnimation(Actor::Movement direction return eating; } -Color::Color Actor::getColor() +Color::Color Actor::color() { return m_color; } -PixmapItem &Actor::getIcon() +PixmapItem &Actor::icon() { return m_icon; } +Actor::Movement Actor::direction() +{ + return m_direction; +} + bool Actor::isLocal() { return m_local; @@ -113,9 +118,8 @@ bool Actor::isLocal() void Actor::move(Actor::Movement direction) { - //TODO: remove? - //if (isMoving()) - // return; + /*if (Constants::server) + return moveByServer(direction);*/ /* stop current animation */ if (direction != m_direction) @@ -224,3 +228,8 @@ void Actor::finishRound() m_roundPoints = 0; } +void Actor::moveByServer(Actor::Movement direction) +{ + qDebug() << "move by server"; + m_direction = direction; +} diff --git a/pacman-c++/actor.h b/pacman-c++/actor.h index 19d672b..d1875f1 100644 --- a/pacman-c++/actor.h +++ b/pacman-c++/actor.h @@ -27,8 +27,9 @@ public: {}; QSequentialAnimationGroup *setupEatingAnimation(Actor::Movement direction); - Color::Color getColor(); - PixmapItem &getIcon(); + Color::Color color(); + PixmapItem &icon(); + Movement direction(); bool isLocal(); void move(Movement direction); bool isMoving(); @@ -40,6 +41,9 @@ public: void addRoundPoints(unsigned int amount); void finishRound(); +private: + void moveByServer(Movement direction); + private: QPixmap m_pix; Color::Color m_color; diff --git a/pacman-c++/point.cpp b/pacman-c++/point.cpp index b4eae4e..4f76007 100644 --- a/pacman-c++/point.cpp +++ b/pacman-c++/point.cpp @@ -13,17 +13,16 @@ Point::Point(QGraphicsItem *parent) if (pixmap == NULL) pixmap = new QPixmap(":/points"); setPixmap(*pixmap); - - //setSprite(rand * 20 + Constants::sprite_margin, Constants::sprite_margin, Constants::field_size.width, Constants::field_size.height); } -bool Point::enter(Actor* actor) +bool Point::enter(Actor *actor) { actor->addRoundPoints(Constants::Game::point_value); m_eaten = true; return false; } -void Point::onDie(Actor* actor) +void Point::onDie(Actor *actor) { + //TODO } diff --git a/pacman-c++/server.cpp b/pacman-c++/server.cpp index 8b07882..b054804 100644 --- a/pacman-c++/server.cpp +++ b/pacman-c++/server.cpp @@ -44,8 +44,7 @@ Transmission::map_t Server::calculateUpdates() { i.next(); Actor *actor = m_actors.value(i.key()); - QPoint mapPosition = actor->pos().toPoint(); - mapPosition = CoordToMapPosition(actor->pos().toPoint()); + QPoint mapPosition = CoordToMapPosition(actor->pos().toPoint()); qDebug() << "actor " << i.key() << " is at " << mapPosition << "moving " << i.value(); QPoint newMapPosition = mapPosition; @@ -87,6 +86,7 @@ Transmission::map_t Server::calculateUpdates() if (oldItem->eaten()) map[mapPosition.x()][mapPosition.y()] = Transmission::empty; } + // new item PixmapItem *item = visualMap[newMapPosition.x()][newMapPosition.y()]; if (item != NULL && oldItem != item) @@ -95,7 +95,6 @@ Transmission::map_t Server::calculateUpdates() { /* movement invalid. e.g. move against wall */ newMapPosition = mapPosition; - m_actorMovements[i.key()] = Actor::None; } else { @@ -109,11 +108,11 @@ Transmission::map_t Server::calculateUpdates() } // + if (mapPosition == newMapPosition) + m_actorMovements[i.key()] = Actor::None; - //map[mapPosition.x()][mapPosition.y()] = Transmission::empty; - map[newMapPosition.x()][newMapPosition.y()] |= - Transmission::pacman | i.key() | - Util::actorMovementToTransmission(i.value()); + map[newMapPosition.x()][newMapPosition.y()] |= Transmission::pacman | + i.key() | Util::actorMovementToTransmission(i.value()); if (i.value() == Actor::None) { -- cgit v1.2.3