Merge branch 'vibrationrecovery' into harmattan
authorHeli Hyvättinen <heli.hyvattinen@kymp.net>
Mon, 26 Sep 2011 20:00:23 +0000 (23:00 +0300)
committerHeli Hyvättinen <heli.hyvattinen@kymp.net>
Tue, 27 Sep 2011 16:08:49 +0000 (19:08 +0300)
Vibration works again (did not work before with the beta2 firmware).
This time real vibration, not just a "tak tak" sound.

Conflicts:
seascene.cpp

level.h
levelset.cpp
levelset.h
seascene.cpp
seascene.h

diff --git a/level.h b/level.h
index d1bb209..9d8515b 100644 (file)
--- a/level.h
+++ b/level.h
@@ -46,4 +46,5 @@ private:
 
 };
 
+
 #endif // LEVEL_H
index 66e0bfe..2cb04b8 100644 (file)
@@ -48,6 +48,11 @@ bool Levelset::isValid()
     return true;
 }
 
+QString Levelset::getName()
+{
+    return name_;
+}
+
 int Levelset::numberOfLevels()
 {
     return levels_.length();
index 69e0469..faf7e6a 100644 (file)
@@ -26,6 +26,7 @@
 #include "level.h"
 #include <QList>
 #include <QString>
+ #include <QMetaType>
 
 class Levelset
 {
@@ -59,4 +60,6 @@ private:
 
 };
 
+Q_DECLARE_METATYPE(Levelset)
+
 #endif // LEVELSET_H
index d473538..de57ba4 100644 (file)
@@ -60,6 +60,8 @@ SeaScene::SeaScene(QObject *parent) :
 
     qsrand(QTime::currentTime().msec()+2);  //+2 to avoid setting it to 1
 
+
+
 //Setup the level list
 
     QList<Level> levelList;
@@ -76,11 +78,29 @@ SeaScene::SeaScene(QObject *parent) :
 
     Levelset set ("Original",levelList);
     levelset_ = set;
+    availableLevelsets_.append(set);
 
     currentLevel_ = 0;
 
     totalScore_ = 0;
 
+   //Create another set of levels and place it in the available levelsets list
+    levelList.clear();
+    Level set2level1(8,15,4,50);
+    levelList.append(set2level1);
+    Level set2level2(8,20,4,50);
+    levelList.append(set2level2);
+    Level set2level3(8,20,5,100);
+    levelList.append(set2level3);
+    Level set2level4(8,20,6,150);
+    levelList.append(set2level4);
+    Level set2level5(8,25,8,200);
+    levelList.append(set2level5);
+
+    Levelset set2("Difficult",levelList);
+    availableLevelsets_.append(set2);
+
+
     //This ensures that nextlevel will not be called until its safe to delete the Ship object.
     //Leaving out Qt::QueuedConnection or calling nextlevel directly instead of emitting the signal will CRASH
     connect(this,SIGNAL(allGhostsPicked()),this,SLOT(nextLevel()),Qt::QueuedConnection);
@@ -132,6 +152,9 @@ void SeaScene::setupMap(int ghosts, int rocks, int octopuses, int octopusSpeed)
     createMenuItems();
 
     createAboutBoxItems();
+
+    createSelectLevelsetFromListItems();
+
     createVictoryItems();
 
     createLevelCompletedItems();
@@ -475,7 +498,9 @@ void SeaScene::handleScreenTapped()
 
     if (items.isEmpty())
     {
+        pSelectLevelsetFromListItem_->hide();
         pPauseAction_->setChecked(false);
+
         return;
 
     }
@@ -537,6 +562,30 @@ void SeaScene::handleScreenTapped()
         qApp->quit();
     }
 
+    else if (pItem == pChooseLevelsetItem_)
+    {
+        pPausetextItem_->hide();
+        pSelectLevelsetFromListItem_->show();
+    }
+
+    else
+    {
+        foreach (QGraphicsItem* pLevelItem, levelsetItems_)
+        {
+            if (pItem == pLevelItem)
+            {
+                QVariant variant = pLevelItem->data(0);
+
+                if (variant.canConvert<Levelset>())
+                {
+                    levelset_ = variant.value<Levelset>();
+                    restartGame();
+                    pPauseAction_->setChecked(false); //unpause game
+                }
+            }
+        }
+    }
+
 }
 
 
@@ -581,6 +630,10 @@ void SeaScene::createMenuItems()
     pRestartLevelItem_->setHtml(tr("Restart <br> level").prepend(menufonthtml));
     prepareForMenu(pRestartLevelItem_);
 
+    pChooseLevelsetItem_ = new QGraphicsTextItem;
+    pChooseLevelsetItem_->setHtml(tr("Choose <br> levelset").prepend(menufonthtml));
+    prepareForMenu(pChooseLevelsetItem_);
+
     pSettingsItem_ = new QGraphicsTextItem;
     QString vibraText(tr("Turn vibration <br> effects "));
     QString statusText;
@@ -613,12 +666,20 @@ void SeaScene::prepareForMenu(QGraphicsItem * pItem)
     //They are also shown and hidden with it, resulting in the menu being visble when the game is paused
     //Their coordinates are given relative to the parent.
 
+    int itemsPerRow = 3;
 
     pItem->setParentItem(pPausetextItem_);
     pItem->setZValue(1000);
     pItem->setFlag(QGraphicsItem::ItemIsSelectable);
-    pItem->setY(150);
-    pItem->setX(menuItemCount_++*160-150);
+
+    if (menuItemCount_< itemsPerRow)
+    {
+        pItem->setY(120);
+    }
+    else pItem->setY(240);
+
+
+    pItem->setX((menuItemCount_++%itemsPerRow)*180-10);
  }
 
 
@@ -794,9 +855,11 @@ void SeaScene::setItemPointersNull()
     pAboutItem_ = NULL;
     pQuitItem_ = NULL ;
 //    pMinimizeItem_ = NULL; //Fremantle spesific
+    pChooseLevelsetItem_ = NULL;
 
     pAboutBoxItem_ = NULL;
     pLevelCompletedItem_ = NULL;
+    pVictoryCongratulationsItem_ = NULL;
     pVictoryScoreItem_ = NULL;
 
 }
@@ -823,15 +886,58 @@ void SeaScene::createLevelCompletedItems()
     pTapForNextLevelItem->setHtml("<font size=\"7\" color = darkorange>Tap to start the next level");
 }
 
-void SeaScene::resourcesAvailable()
+void SeaScene::createSelectLevelsetFromListItems()
 {
-    qDebug() << "Resources available";
-    vibrationAllowed_ = true;
-}
 
-void SeaScene::resourcesLost()
-{
-    qDebug() << "Resources lost";
-    vibrationAllowed_ = false;
-}
+    if (availableLevelsets_.isEmpty()) //Something is badly wrong in code if this is true...
+            return;
+
+
+    pSelectLevelsetFromListItem_ = new QGraphicsTextItem;
+    addItem(pSelectLevelsetFromListItem_);
+    pSelectLevelsetFromListItem_->setPos(295,60);
+    pSelectLevelsetFromListItem_->setZValue(1000);
+    pSelectLevelsetFromListItem_->hide();
+
+
+    QString fontstring ("<font color = darkorange size = \"7\">");
+
+    pSelectLevelsetFromListItem_->setHtml(tr("Choose a levelset").prepend(fontstring));
+
+    int yPos = 100;
+
+    levelsetItems_.clear();
+
 
+    foreach (Levelset set, availableLevelsets_)
+    {
+        QGraphicsTextItem * pItem = new QGraphicsTextItem(pSelectLevelsetFromListItem_);
+        QString text (fontstring);
+        if (levelset_.getName() == set.getName())
+            text.append("<b>");
+        text.append(set.getName());
+        pItem->setHtml(text);
+        pItem->setPos(65,yPos);
+        yPos+=80;
+        pItem->setZValue(1000);
+        pItem->setFlag(QGraphicsItem::ItemIsSelectable);
+        pItem->setData(0,QVariant::fromValue(set));
+        levelsetItems_.append(pItem);
+
+    }
+
+  }
+
+
+    void SeaScene::resourcesAvailable()
+    {
+        qDebug() << "Resources available";
+        vibrationAllowed_ = true;
+    }
+
+
+    void SeaScene::resourcesLost()
+    {
+        qDebug() << "Resources lost";
+        vibrationAllowed_ = false;
+    }
index 6f77229..2593927 100644 (file)
@@ -94,6 +94,8 @@ public slots:
 
 
 
+
+
 protected:
 
     /*! Gives a pointer to a random position if a free one is found. Otherwise returns NULL.
@@ -107,6 +109,7 @@ protected:
     void createAboutBoxItems();
     void createVictoryItems();
     void createLevelCompletedItems();
+    void createSelectLevelsetFromListItems();
 
     const QString ghostImageFilename_;
     const QString rockImageFilename_;
@@ -133,6 +136,7 @@ protected:
     QGraphicsTextItem * pSettingsItem_;
     QGraphicsTextItem * pAboutItem_;
     QGraphicsTextItem * pQuitItem_;
+    QGraphicsTextItem * pChooseLevelsetItem_;
 
     QGraphicsTextItem * pVictoryScoreItem_;
     QGraphicsTextItem * pAboutBoxItem_;
@@ -140,6 +144,11 @@ protected:
 
     QGraphicsTextItem * pLevelCompletedItem_;
 
+    QGraphicsTextItem * pSelectLevelsetFromListItem_;
+
+    QList<QGraphicsItem *>  levelsetItems_;
+
+    QList<Levelset> availableLevelsets_;
 
     Levelset levelset_;