summaryrefslogtreecommitdiffstats
path: root/pacman-c++/sceneholder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pacman-c++/sceneholder.cpp')
-rw-r--r--pacman-c++/sceneholder.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/pacman-c++/sceneholder.cpp b/pacman-c++/sceneholder.cpp
index f6b8145..51496ca 100644
--- a/pacman-c++/sceneholder.cpp
+++ b/pacman-c++/sceneholder.cpp
@@ -13,6 +13,8 @@ SceneHolder::SceneHolder(QObject *parent)
13 setSceneRect(0, 0, Constants::map_size_pixel.width, Constants::map_size_pixel.height); 13 setSceneRect(0, 0, Constants::map_size_pixel.width, Constants::map_size_pixel.height);
14 setBackgroundBrush(Qt::black); 14 setBackgroundBrush(Qt::black);
15 15
16 m_overlayText = new QGraphicsTextItem();
17
16 visualMap.resize(Constants::map_size.width); 18 visualMap.resize(Constants::map_size.width);
17 for (int i = 0; i < visualMap.size(); ++i) 19 for (int i = 0; i < visualMap.size(); ++i)
18 visualMap[i].resize(Constants::map_size.height); 20 visualMap[i].resize(Constants::map_size.height);
@@ -21,6 +23,7 @@ SceneHolder::SceneHolder(QObject *parent)
21void SceneHolder::reset() 23void SceneHolder::reset()
22{ 24{
23 processDelayedItems(); 25 processDelayedItems();
26 showEatingText(false);
24 27
25 /* remove actors from scene so they don't get deleted during clear */ 28 /* remove actors from scene so they don't get deleted during clear */
26 foreach(Actor *actor, m_actors) 29 foreach(Actor *actor, m_actors)
@@ -269,6 +272,49 @@ QList<Color::Color> &SceneHolder::eatingOrder()
269 return m_eatingorder; 272 return m_eatingorder;
270} 273}
271 274
275void SceneHolder::showEatingText(bool show)
276{
277 if (!show)
278 {
279 if (m_overlayText->scene() == this)
280 removeItem(m_overlayText);
281 return;
282 }
283
284 m_overlayText->setDefaultTextColor(Qt::black);
285 QString text = QString(
286 "<div style=\"background-color: gray;\" align=\"center\">"
287 "<br />"
288 );
289 unsigned int lines = 1;
290
291 text = text % QString("<b>Your Pacman: <img src=\"%1\"/></b><br /><br />")
292 .arg(m_actors[m_color]->iconStr());
293 lines += 2;
294
295 foreach(Actor *actor, m_actors)
296 {
297 foreach(Actor *other, m_actors)
298 {
299 if (!actor->canEat(other, m_eatingorder))
300 continue;
301 text = text % QString("<img src=\"%1\"/> &nbsp;can eat <img src=\"%2\"/><br />")
302 .arg(actor->iconStr(), other->iconStr());
303 ++lines;
304 }
305 }
306 text = text % "</div>";
307 m_overlayText->setHtml(text);
308 m_overlayText->setTextWidth(150);
309 m_overlayText->setOpacity(0.9);
310
311 QFontMetrics metrics(m_overlayText->font());
312 m_overlayText->setPos((width() - m_overlayText->textWidth()) / 2, (height() - metrics.height() * lines) / 2);
313 m_overlayText->setZValue(100);
314
315 addItem(m_overlayText);
316}
317
272QPoint SceneHolder::mapPositionToCoord(unsigned int x, unsigned int y) 318QPoint SceneHolder::mapPositionToCoord(unsigned int x, unsigned int y)
273{ 319{
274 return QPoint(x * Constants::field_size.width, y * Constants::field_size.height); 320 return QPoint(x * Constants::field_size.width, y * Constants::field_size.height);