summaryrefslogtreecommitdiffstats
path: root/pacman-c++/sceneholder.cpp
diff options
context:
space:
mode:
authormanuel <manuel@mausz.at>2011-04-12 16:22:19 +0200
committermanuel <manuel@mausz.at>2011-04-12 16:22:19 +0200
commitfae7c3377c8995b217e620c5cf1e963b3ab1e84a (patch)
tree61a091e2799dda061c227be54c39a61a7b83daca /pacman-c++/sceneholder.cpp
parentdbeba838ea813b620ec571265c8ea417403fc81c (diff)
downloadfoop-fae7c3377c8995b217e620c5cf1e963b3ab1e84a.tar.gz
foop-fae7c3377c8995b217e620c5cf1e963b3ab1e84a.tar.bz2
foop-fae7c3377c8995b217e620c5cf1e963b3ab1e84a.zip
finding out which actor has eaten which element didn't work correctly. instead of checking that on client side the server now just sends the id of the actor withing the explicit empty id data field
Diffstat (limited to 'pacman-c++/sceneholder.cpp')
-rw-r--r--pacman-c++/sceneholder.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/pacman-c++/sceneholder.cpp b/pacman-c++/sceneholder.cpp
index b788a49..fc638f7 100644
--- a/pacman-c++/sceneholder.cpp
+++ b/pacman-c++/sceneholder.cpp
@@ -33,25 +33,28 @@ void SceneHolder::updateMap(const Transmission::map_t& map)
33 33
34 if (cur & Transmission::empty) 34 if (cur & Transmission::empty)
35 { 35 {
36 /* special handling for purging field */
37 PixmapItem *oldItem = visualMap[x][y]; 36 PixmapItem *oldItem = visualMap[x][y];
38 /* remove elements (in case it's not an actor) */ 37 /* special handling for purging field
39 if (oldItem != NULL && dynamic_cast<Actor *>(item) == NULL) 38 * remove elements (in case it's not an actor)
39 */
40 if (oldItem != NULL && dynamic_cast<Actor *>(oldItem) == NULL)
40 { 41 {
41 removeItem(oldItem); 42 removeItem(oldItem);
42 visualMap[x][y] = NULL; 43 visualMap[x][y] = NULL;
43 Actor *actor = NULL; 44 Actor *actor = NULL;
44 foreach (Actor *i, m_actors) 45 foreach (Actor *tmp, m_actors)
45 { 46 {
46 if (CoordToMapPosition(i->pos().toPoint()) == QPoint(x, y)) 47 if (cur & tmp->color())
47 { 48 {
48 actor = i; 49 actor = tmp;
49 break; 50 break;
50 } 51 }
51 } 52 }
53
54 /* no actor removed that item */
55 if (actor == NULL)
56 Q_ASSERT(false);
52 oldItem->onDie(actor); 57 oldItem->onDie(actor);
53 delete oldItem;
54 //qDebug() << "deleting " << x << y;
55 } 58 }
56 } 59 }
57 60
@@ -112,11 +115,14 @@ void SceneHolder::updateMap(const Transmission::map_t& map)
112 Q_ASSERT(false); 115 Q_ASSERT(false);
113 } 116 }
114 117
118 /* add new created item to scene
119 * remove old item on that location if there's one
120 */
115 if (item != NULL) 121 if (item != NULL)
116 { 122 {
117 addItem(item); 123 addItem(item);
118 item->setPos(mapPositionToCoord(x, y)); 124 item->setPos(mapPositionToCoord(x, y));
119 PixmapItem* oldItem = visualMap[x][y]; 125 PixmapItem *oldItem = visualMap[x][y];
120 visualMap[x][y] = item; 126 visualMap[x][y] = item;
121 if (oldItem != NULL) 127 if (oldItem != NULL)
122 { 128 {
@@ -126,7 +132,6 @@ void SceneHolder::updateMap(const Transmission::map_t& map)
126 } 132 }
127 } 133 }
128 } 134 }
129
130} 135}
131 136
132void SceneHolder::setColor(Color::Color color) 137void SceneHolder::setColor(Color::Color color)
@@ -147,7 +152,6 @@ unsigned int SceneHolder::pointsLeft()
147void SceneHolder::decrementPoints() 152void SceneHolder::decrementPoints()
148{ 153{
149 --m_pointsLeft; 154 --m_pointsLeft;
150 qDebug() << "points left=" << m_pointsLeft;
151} 155}
152 156
153QPoint SceneHolder::mapPositionToCoord(unsigned int x, unsigned int y) 157QPoint SceneHolder::mapPositionToCoord(unsigned int x, unsigned int y)