Added version number to .pro for mud2
[ghostsoverboard] / seascene.cpp
index 48ca621..dd0eb8b 100644 (file)
@@ -49,6 +49,8 @@ SeaScene::SeaScene(QObject *parent) :
     paused_ = false;
     screenLitKeeper_.keepScreenLit(true);
 
+    QSettings settings;
+
     //set background
 
     QPixmap waves (":/pix/meri.png");
@@ -61,7 +63,7 @@ SeaScene::SeaScene(QObject *parent) :
 
 
 
-//Setup the level list
+//Setup level sets
 
     QList<Level> levelList;
     Level level1(5,10);
@@ -76,38 +78,57 @@ SeaScene::SeaScene(QObject *parent) :
     levelList.append(level5);
 
     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
+    //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,15,5,100);
+    Level set2level3(8,20,5,80);
     levelList.append(set2level3);
-    Level set2level4(8,20,6,100);
+    Level set2level4(8,20,6,120);
     levelList.append(set2level4);
-    Level set2level5(8,20,6,150);
+    Level set2level5(8,25,8,150);
     levelList.append(set2level5);
 
     Levelset set2("Difficult",levelList);
     availableLevelsets_.append(set2);
 
 
+    //Setup starting levelset
 
-    connect(this,SIGNAL(allGhostsPicked()),this,SLOT(nextLevel()));
+    QString levelname = settings.value("levelset","Original").toString();
+    bool found = false;
+    foreach (Levelset levelset, availableLevelsets_)
+    {
+        if (levelset.getName() == levelname)
+        {
+            levelset_ = levelset;
+            found = true;
+            break;
+        }
+    }
 
+    if (!found)  //The last used level is not available
+    {
+        levelset_ = availableLevelsets_.value(0);
+    }
+
+    currentLevel_ = 0;
+
+    totalScore_ = 0;
+
+
+
+    connect(this,SIGNAL(allGhostsPicked()),this,SLOT(nextLevel()));
 
     pVibrateAction_ = new QAction(tr("Vibration effects"),this);
     pVibrateAction_->setCheckable(true);
     connect(pVibrateAction_,SIGNAL(toggled(bool)),this,SLOT(vibrationActivate(bool)));
-    QSettings settings;
+
     pVibrateAction_->setChecked(settings.value("vibration",false).toBool());
 
 
@@ -483,7 +504,9 @@ void SeaScene::handleScreenTapped()
 
     if (items.isEmpty())
     {
+        pSelectLevelsetFromListItem_->hide();
         pPauseAction_->setChecked(false);
+
         return;
 
     }
@@ -555,6 +578,28 @@ void SeaScene::handleScreenTapped()
         pSelectLevelsetFromListItem_->show();
     }
 
+    else
+    {
+        foreach (QGraphicsItem* pLevelItem, levelsetItems_)
+        {
+            if (pItem == pLevelItem)
+            {
+                QVariant variant = pLevelItem->data(0);
+
+                if (variant.canConvert<Levelset>())
+                {
+                    levelset_ = variant.value<Levelset>();
+
+                    QSettings settings;
+                    settings.setValue("levelset",levelset_.getName());
+
+                    restartGame();
+                    pPauseAction_->setChecked(false); //unpause game
+                }
+            }
+        }
+    }
+
 }
 
 
@@ -626,20 +671,19 @@ 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 = 4;
 
 
-
-    int itemsPerRow = 3;
-
     pItem->setParentItem(pPausetextItem_);
     pItem->setZValue(1000);
     pItem->setFlag(QGraphicsItem::ItemIsSelectable);
 
     int row = menuItemCount_/(itemsPerRow);
     pItem->setY(150+row*120);
-    pItem->setX(((menuItemCount_%(itemsPerRow))*180+5));
+    pItem->setX(((menuItemCount_%(itemsPerRow))*180-125));
 
     menuItemCount_++;
+
  }
 
 
@@ -676,7 +720,7 @@ void SeaScene::nextLevel()
     totalScore_ += levelScore_;
     int highscore = levelset_.getLevelHighScore(currentLevel_);
 
-    qDebug() << highscore;
+    //qDebug() << highscore;
 
     QString scoretext;
 
@@ -872,22 +916,43 @@ void SeaScene::createLevelCompletedItems()
     pTapForNextLevelItem->setZValue(1000);
     pTapForNextLevelItem->setHtml("<font size=\"5\" color = darkorange>Tap to start the next level");
 
-
+}
 void SeaScene::createSelectLevelsetFromListItems()
 {
+    if (availableLevelsets_.isEmpty()) //Something is badly wrong in code if this is true...
+            return;
+
+
     pSelectLevelsetFromListItem_ = new QGraphicsTextItem;
     addItem(pSelectLevelsetFromListItem_);
-    pSelectLevelsetFromListItem_->setPos(40,80);
+    pSelectLevelsetFromListItem_->setPos(260,60);
     pSelectLevelsetFromListItem_->setZValue(1000);
     pSelectLevelsetFromListItem_->hide();
 
-    QString list ("<font color = darkorange size = \"7\">");
+    QString fontstring ("<font color = darkorange size = \"5\">");
+
+    pSelectLevelsetFromListItem_->setHtml(tr("Choose a levelset").prepend(fontstring));
+
+    int yPos = 100;
+
+    levelsetItems_.clear();
+
 
     foreach (Levelset set, availableLevelsets_)
     {
-        list.append(set.getName());
-        list.append("<br>");
+        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);
+
     }
 
-    pSelectLevelsetFromListItem_->setHtml(list);
-}
+  }