From 51a3559e5df31018d7de14357f83c24e7e508d7e Mon Sep 17 00:00:00 2001 From: totycro Date: Mon, 11 Apr 2011 12:37:29 +0200 Subject: progress --- pacman-c++/server.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'pacman-c++/server.cpp') diff --git a/pacman-c++/server.cpp b/pacman-c++/server.cpp index b631345..4656238 100644 --- a/pacman-c++/server.cpp +++ b/pacman-c++/server.cpp @@ -75,20 +75,31 @@ Transmission::map_t Server::calculateUpdates() // // TODO: support actors eating each other + // old item + PixmapItem *oldItem = visualMap[mapPosition.x()][mapPosition.y()]; + if (oldItem != NULL) { + if (oldItem->eaten()) { + map[mapPosition.x()][mapPosition.y()] = Transmission::empty; + } + } + // new item PixmapItem *item = visualMap[newMapPosition.x()][newMapPosition.y()]; - if (item != NULL) { + if (item != NULL && oldItem != item) { if (! item->checkEnter(actor)) { // movement invalid newMapPosition = mapPosition; } else { // apply actions of entering this field - item->enter(actor); + bool survive = item->enter(actor); + if (!survive) { + //map[newMapPosition.x()][newMapPosition.y()] = Transmission::empty; + } } } // 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()) ; } -- cgit v1.2.3