From c68e77cac9558316ac16d58c0f6b888599ab021a Mon Sep 17 00:00:00 2001 From: manuel Date: Mon, 11 Apr 2011 14:15:59 +0200 Subject: - make moving animation a bit smoother (on my computer at least) - make animation stop after getting blocked --- pacman-c++/server.cpp | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'pacman-c++/server.cpp') diff --git a/pacman-c++/server.cpp b/pacman-c++/server.cpp index 965517e..8b07882 100644 --- a/pacman-c++/server.cpp +++ b/pacman-c++/server.cpp @@ -35,10 +35,11 @@ Transmission::map_t Server::calculateUpdates() { Transmission::map_t map = Util::createEmptyMap(); - m_actorMovements[Color::blue] = Actor::Movement( (qrand() % 4) + 1 ); - m_actorMovements[Color::green] = Actor::Movement( (qrand() % 4) + 1 ); + //TODO: ai + //m_actorMovements[Color::blue] = Actor::Movement((qrand() % 4) + 1); + //m_actorMovements[Color::green] = Actor::Movement((qrand() % 4) + 1); - QMapIterator i(m_actorMovements); + QMutableMapIterator i(m_actorMovements); while (i.hasNext()) { i.next(); @@ -90,10 +91,11 @@ Transmission::map_t Server::calculateUpdates() PixmapItem *item = visualMap[newMapPosition.x()][newMapPosition.y()]; if (item != NULL && oldItem != item) { - if (! item->checkEnter(actor)) + if (!item->checkEnter(actor)) { - // movement invalid + /* movement invalid. e.g. move against wall */ newMapPosition = mapPosition; + m_actorMovements[i.key()] = Actor::None; } else { @@ -107,12 +109,17 @@ Transmission::map_t Server::calculateUpdates() } // - if (mapPosition != newMapPosition) - { - //map[mapPosition.x()][mapPosition.y()] = Transmission::empty; - map[newMapPosition.x()][newMapPosition.y()] |= + + //map[mapPosition.x()][mapPosition.y()] = Transmission::empty; + map[newMapPosition.x()][newMapPosition.y()] |= Transmission::pacman | i.key() | - Util::actorMovementToTransmission(i.value()) ; + Util::actorMovementToTransmission(i.value()); + + if (i.value() == Actor::None) + { + /* set actor to non-moving */ + m_actorMovements[i.key()] = Actor::None; + i.remove(); } } return map; -- cgit v1.2.3