From 2d3760ee6924d23b1fc428ea57547aeaed98e4d3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Heli=20Hyv=C3=A4ttinen?= Date: Sat, 16 Jul 2011 23:32:30 +0300 Subject: [PATCH] Menu items can be selected Do nothing but give a debug message, though. Also, the game is unpaused when selecting a menu item. --- seascene.cpp | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++------ seascene.h | 10 ++++++++- seaview.cpp | 4 ++++ seaview.h | 2 +- 4 files changed, 76 insertions(+), 9 deletions(-) diff --git a/seascene.cpp b/seascene.cpp index 866fae1..81e4ace 100644 --- a/seascene.cpp +++ b/seascene.cpp @@ -55,6 +55,12 @@ SeaScene::SeaScene(QObject *parent) : + + + + + + } void SeaScene::setupMap(int ghosts, int rocks, int octopuses, int octopusSpeed) @@ -63,6 +69,8 @@ void SeaScene::setupMap(int ghosts, int rocks, int octopuses, int octopusSpeed) clear(); + createMenuItems(); + //empty the list of moving items movingItems_.clear(); @@ -308,13 +316,22 @@ void SeaScene::pause(bool paused) // qDebug() << "starting to move again"; emit pauseOff(); screenLitKeeper_.keepScreenLit(true); + if (pPausetextItem_) + pPausetextItem_->hide(); } else { - // qDebug("about to stop movement"); + qDebug("about to stop movement"); emit pauseOn(); screenLitKeeper_.keepScreenLit(false); + if (pPausetextItem_ != NULL) + { + qDebug() << "about to show the pause text"; + pPausetextItem_->show(); + qDebug() << "showing pause text"; + } + else qDebug() << "No pause text available"; } } @@ -332,26 +349,32 @@ void SeaScene::menuClicked() if (items.isEmpty()) return; + //Tapping the screen unpaused the game, pause it again! + + + //Menu functions - QString menuitem = items.at(0)->data(0).toString(); + QGraphicsItem* pItem = items.at(0); - if (menuitem == "restart game") - { + if (pItem == pRestartGameItem_) + { + qDebug() << "game restart requested"; } - else if (menuitem == "restart level") + else if (pItem == pRestartLevelItem_) { + qDebug() << "Level restart requested"; } - else if (menuitem == "vibration effects") + else if (pItem == pVibrateItem_) { } - else if (menuitem == "about") + else if (pItem == pAboutItem_) { } @@ -372,3 +395,35 @@ void::SeaScene::hideMenu() { menuItems_.hide(); } + +void SeaScene::createMenuItems() +{ + + pPausetextItem_ = addSimpleText("Game paused. Tap to continue."); + pPausetextItem_->setZValue(1000); + + //Menu items have pause text item as their parent and are thus added to scene automatically + //They are also shown and hidden with it, resulting in the menu being visble when the game is paused + + pRestartGameItem_ = new QGraphicsSimpleTextItem("Restart game",pPausetextItem_); + pRestartGameItem_->setPos(0,200); + pRestartGameItem_->setZValue(1000); + pRestartGameItem_->setFlag(QGraphicsItem::ItemIsSelectable); + + pRestartLevelItem_ = new QGraphicsSimpleTextItem("Restart level",pPausetextItem_); + pRestartLevelItem_->setPos(150,200); + pRestartLevelItem_->setZValue(1000); + pRestartLevelItem_->setFlag(QGraphicsItem::ItemIsSelectable); + + QGraphicsRectItem * item = new QGraphicsRectItem(100,100,50,50,pPausetextItem_); + item->setFlag(QGraphicsItem::ItemIsSelectable); + QBrush brush; + brush.setStyle(Qt::SolidPattern); + item->setBrush(brush); + + + + + + +} diff --git a/seascene.h b/seascene.h index 69eeb6d..c9d9a54 100644 --- a/seascene.h +++ b/seascene.h @@ -78,6 +78,8 @@ protected: QPointF* findRandomFreeSlot(); + void createMenuItems(); + const QString ghostImageFilename_; const QString rockImageFilename_; const QString octopusImageFilename_; @@ -93,10 +95,16 @@ protected: ScreenLitKeeper screenLitKeeper_; -private: QGraphicsItemGroup menuItems_; + QGraphicsSimpleTextItem * pPausetextItem_; + + QGraphicsSimpleTextItem * pRestartLevelItem_; + QGraphicsSimpleTextItem * pRestartGameItem_; + QGraphicsSimpleTextItem * pVibrateItem_; + QGraphicsSimpleTextItem * pAboutItem_; + }; diff --git a/seaview.cpp b/seaview.cpp index f03d14e..8d6564e 100644 --- a/seaview.cpp +++ b/seaview.cpp @@ -29,5 +29,9 @@ SeaView::SeaView(QWidget *parent) : void SeaView::mousePressEvent(QMouseEvent *event) { + + QGraphicsView::mousePressEvent(event); emit pauseChanged(); + + } diff --git a/seaview.h b/seaview.h index e6e20ed..dcbd566 100644 --- a/seaview.h +++ b/seaview.h @@ -31,7 +31,7 @@ class SeaView : public QGraphicsView public: explicit SeaView(QWidget *parent = 0); - virtual void mousePressEvent(QMouseEvent *event); + virtual void mousePressEvent(QMouseEvent *event); signals: -- 1.7.9.5