diff options
Diffstat (limited to 'pacman-c++/common/sceneholder.cpp')
| -rw-r--r-- | pacman-c++/common/sceneholder.cpp | 60 |
1 files changed, 37 insertions, 23 deletions
diff --git a/pacman-c++/common/sceneholder.cpp b/pacman-c++/common/sceneholder.cpp index bd9b01b..d429445 100644 --- a/pacman-c++/common/sceneholder.cpp +++ b/pacman-c++/common/sceneholder.cpp | |||
| @@ -23,7 +23,7 @@ SceneHolder::SceneHolder(QObject *parent) | |||
| 23 | void SceneHolder::reset() | 23 | void SceneHolder::reset() |
| 24 | { | 24 | { |
| 25 | processDelayedItems(); | 25 | processDelayedItems(); |
| 26 | showEatingText(false); | 26 | hideOverlayText(); |
| 27 | 27 | ||
| 28 | /* 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 */ |
| 29 | foreach(Actor *actor, m_actors) | 29 | foreach(Actor *actor, m_actors) |
| @@ -272,15 +272,22 @@ QList<Color::Color> &SceneHolder::eatingOrder() | |||
| 272 | return m_eatingorder; | 272 | return m_eatingorder; |
| 273 | } | 273 | } |
| 274 | 274 | ||
| 275 | void SceneHolder::showEatingText(bool show) | 275 | void SceneHolder::hideOverlayText() |
| 276 | { | 276 | { |
| 277 | if (!show) | 277 | if (m_overlayText->scene() == this) |
| 278 | { | 278 | removeItem(m_overlayText); |
| 279 | if (m_overlayText->scene() == this) | 279 | } |
| 280 | removeItem(m_overlayText); | 280 | |
| 281 | return; | 281 | void SceneHolder::centerOverlayText(unsigned int lines) |
| 282 | } | 282 | { |
| 283 | QFontMetrics metrics(m_overlayText->font()); | ||
| 284 | m_overlayText->setPos((width() - m_overlayText->textWidth()) / 2, (height() - metrics.height() * lines) / 2); | ||
| 285 | m_overlayText->setZValue(100); | ||
| 286 | } | ||
| 283 | 287 | ||
| 288 | void SceneHolder::showEatingText() | ||
| 289 | { | ||
| 290 | hideOverlayText(); | ||
| 284 | m_overlayText->setDefaultTextColor(Qt::black); | 291 | m_overlayText->setDefaultTextColor(Qt::black); |
| 285 | QString text = QString( | 292 | QString text = QString( |
| 286 | "<div style=\"background-color: gray;\" align=\"center\">" | 293 | "<div style=\"background-color: gray;\" align=\"center\">" |
| @@ -307,23 +314,14 @@ void SceneHolder::showEatingText(bool show) | |||
| 307 | m_overlayText->setHtml(text); | 314 | m_overlayText->setHtml(text); |
| 308 | m_overlayText->setTextWidth(150); | 315 | m_overlayText->setTextWidth(150); |
| 309 | m_overlayText->setOpacity(0.9); | 316 | m_overlayText->setOpacity(0.9); |
| 310 | 317 | centerOverlayText(lines); | |
| 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 | 318 | ||
| 315 | addItem(m_overlayText); | 319 | addItem(m_overlayText); |
| 316 | } | 320 | } |
| 317 | 321 | ||
| 318 | void SceneHolder::showWaitingForPlayers(bool show) | 322 | void SceneHolder::showWaitingForPlayers() |
| 319 | { | 323 | { |
| 320 | if (!show) | 324 | hideOverlayText(); |
| 321 | { | ||
| 322 | if (m_overlayText->scene() == this) | ||
| 323 | removeItem(m_overlayText); | ||
| 324 | return; | ||
| 325 | } | ||
| 326 | |||
| 327 | m_overlayText->setDefaultTextColor(Qt::black); | 325 | m_overlayText->setDefaultTextColor(Qt::black); |
| 328 | QString text = QString( | 326 | QString text = QString( |
| 329 | "<div style=\"background-color: gray;\" align=\"center\">" | 327 | "<div style=\"background-color: gray;\" align=\"center\">" |
| @@ -335,10 +333,26 @@ void SceneHolder::showWaitingForPlayers(bool show) | |||
| 335 | m_overlayText->setHtml(text); | 333 | m_overlayText->setHtml(text); |
| 336 | m_overlayText->setTextWidth(150); | 334 | m_overlayText->setTextWidth(150); |
| 337 | m_overlayText->setOpacity(0.9); | 335 | m_overlayText->setOpacity(0.9); |
| 336 | centerOverlayText(lines); | ||
| 338 | 337 | ||
| 339 | QFontMetrics metrics(m_overlayText->font()); | 338 | addItem(m_overlayText); |
| 340 | m_overlayText->setPos((width() - m_overlayText->textWidth()) / 2, (height() - metrics.height() * lines) / 2); | 339 | } |
| 341 | m_overlayText->setZValue(100); | 340 | |
| 341 | void SceneHolder::showWonLost(bool won) | ||
| 342 | { | ||
| 343 | hideOverlayText(); | ||
| 344 | m_overlayText->setDefaultTextColor(Qt::black); | ||
| 345 | QString text = QString( | ||
| 346 | "<div style=\"background-color: gray;\" align=\"center\">" | ||
| 347 | "<br />" | ||
| 348 | "You %1!<br />" | ||
| 349 | "</div>" | ||
| 350 | ).arg((won) ? "won" : "lost"); | ||
| 351 | unsigned int lines = 3; | ||
| 352 | m_overlayText->setHtml(text); | ||
| 353 | m_overlayText->setTextWidth(150); | ||
| 354 | m_overlayText->setOpacity(0.9); | ||
| 355 | centerOverlayText(lines); | ||
| 342 | 356 | ||
| 343 | addItem(m_overlayText); | 357 | addItem(m_overlayText); |
| 344 | } | 358 | } |
