diff options
Diffstat (limited to 'pacman-c++/sceneholder.cpp')
| -rw-r--r-- | pacman-c++/sceneholder.cpp | 46 |
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) | |||
| 21 | void SceneHolder::reset() | 23 | void 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 | ||
| 275 | void 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\"/> 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 | |||
| 272 | QPoint SceneHolder::mapPositionToCoord(unsigned int x, unsigned int y) | 318 | QPoint 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); |
