The levels are now stored in the Levelset class
[ghostsoverboard] / seascene.cpp
index 5d1273f..63b22a0 100644 (file)
@@ -61,16 +61,20 @@ SeaScene::SeaScene(QObject *parent) :
 
 //Setup the level list
 
+    QList<Level> levelList;
     Level level1(5,10);
-    levelList_.append(level1);
+    levelList.append(level1);
     Level level2(5,10,2,50);
-    levelList_.append(level2);
+    levelList.append(level2);
     Level level3(5,15,2,50);
-    levelList_.append(level3);
+    levelList.append(level3);
     Level level4(5,15,4,50);
-    levelList_.append(level4);
+    levelList.append(level4);
     Level level5(5,15,5,100);
-    levelList_.append(level5);
+    levelList.append(level5);
+
+    Levelset set ("Original",levelList);
+    levelset_ = set;
 
     currentLevel_ = 0;
 
@@ -90,6 +94,11 @@ SeaScene::SeaScene(QObject *parent) :
     connect(pPauseAction_,SIGNAL(toggled(bool)),this,SLOT(pause(bool)));
 
 
+    deviceLockPollTimer_.setInterval(20*60);
+    connect(&deviceLockPollTimer_,SIGNAL(timeout()),this,SLOT(pollDeviceLocked()));
+    deviceLockPollTimer_.start();
+
+
     autopauseTimer.setSingleShot(true);
     autopauseTimer.setInterval(15*60*1000);
     connect(&autopauseTimer,SIGNAL(timeout()),this,SLOT(turnPauseOn()));
@@ -364,6 +373,7 @@ void SeaScene::pause(bool paused)
                 pPausetextItem_->hide();
 
             autopauseTimer.start(); //Start counting towards autopause
+            deviceLockPollTimer_.start(); //Start polling whether device is locked
         }
 
         else
@@ -380,6 +390,7 @@ void SeaScene::pause(bool paused)
 //                else qDebug() << "No pause text available";
 
             autopauseTimer.stop(); //No need to count toward autopause when already paused
+            deviceLockPollTimer_.stop(); //No need to check for unlock as no unpause anyway
         }
 }
 
@@ -589,7 +600,7 @@ void SeaScene::about()
 
 void SeaScene::restartLevel()
 {
-    setupMap(levelList_.value(currentLevel_));  //value() returns default constructor Level if index is invalid, so no risk of crash
+    setupMap(levelset_.getLevel(currentLevel_));  //getLevel() returns default constructor Level if index is invalid, so no risk of crash
     vibrationActivate(pVibrateAction_->isChecked());  //Vibration effects are lost without this
    // qDebug() << pVibrateAction_->isChecked();
     autopauseTimer.start();  //reset counting towards autopause
@@ -602,11 +613,11 @@ void SeaScene::nextLevel()
 
     currentLevel_++;
 
-    if (levelList_.empty())
+    if (!levelset_.isValid())
         setupMap(Level());
 
 
-    if ( currentLevel_ < levelList_.size() )
+    if ( currentLevel_ < levelset_.numberOfLevels() )
     {
        restartLevel();
     }
@@ -712,3 +723,32 @@ void SeaScene::turnPauseOn()
 {
     pPauseAction_->setChecked(true);
 }
+
+void SeaScene::handleDeviceLocked(bool isLocked)
+{
+    //pauses if locked but does not unpause if unlocked
+    if(isLocked)
+    {
+        pPauseAction_->setChecked(true);
+    }
+}
+
+void SeaScene::pollDeviceLocked()
+{
+
+    bool locked = deviceInfo_.isDeviceLocked();
+
+    if (locked)
+    {
+        if (!alreadyLocked_)
+        {
+            pPauseAction_->setChecked(true);
+            alreadyLocked_ = true;
+        }
+
+    else
+        {
+            alreadyLocked_ = false;
+        }
+    }
+}