From 7667effa9635b0c25088305fe89c15a9805d6dbb Mon Sep 17 00:00:00 2001 From: manuel Date: Mon, 11 Apr 2011 16:58:36 +0200 Subject: - server doesn't neet mainwidget.cpp - removed local mode (doesn't work anyway) - made movement more like orginal pacman --- pacman-c++/server.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'pacman-c++/server.cpp') diff --git a/pacman-c++/server.cpp b/pacman-c++/server.cpp index b054804..c33c559 100644 --- a/pacman-c++/server.cpp +++ b/pacman-c++/server.cpp @@ -43,6 +43,10 @@ Transmission::map_t Server::calculateUpdates() while (i.hasNext()) { i.next(); + int turn = 0; + +invalid_direction: + ++turn; Actor *actor = m_actors.value(i.key()); QPoint mapPosition = CoordToMapPosition(actor->pos().toPoint()); qDebug() << "actor " << i.key() << " is at " << mapPosition << "moving " << i.value(); @@ -108,8 +112,21 @@ Transmission::map_t Server::calculateUpdates() } // + /* movement didn't work - e.g. was blocked */ if (mapPosition == newMapPosition) - m_actorMovements[i.key()] = Actor::None; + { + if (turn == 1) + { + /* set direction back to last known direction and try again */ + m_actorMovements[i.key()] = actor->direction(); + goto invalid_direction; + } + else + { + /* second turn didn't work too -> stop movement */ + m_actorMovements[i.key()] = Actor::None; + } + } map[newMapPosition.x()][newMapPosition.y()] |= Transmission::pacman | i.key() | Util::actorMovementToTransmission(i.value()); -- cgit v1.2.3