The score counting now stops during pauses
authorHeli Hyvättinen <heli.hyvattinen@kymp.net>
Mon, 12 Sep 2011 17:28:03 +0000 (20:28 +0300)
committerHeli Hyvättinen <heli.hyvattinen@kymp.net>
Mon, 12 Sep 2011 17:28:03 +0000 (20:28 +0300)
Also moved the starting of the score counting to restart level from
setupmap (changes nothing, just a more logical place).

Conflicts:

seascene.h

seascene.cpp
seascene.h

index 0ba763c..8ed546a 100644 (file)
@@ -236,10 +236,6 @@ void SeaScene::setupMap(int ghosts, int rocks, int octopuses, int octopusSpeed)
         connect(pOctopus,SIGNAL(droppingGhosts()),pShip,SLOT(dropAllGhosts()));
     }
     delete pPosition;
-
-    scoreCounter_.start();
-
-
 }
 
 void SeaScene::setupMap(Level level)
@@ -373,6 +369,8 @@ void SeaScene::pause(bool paused)
             if (pPausetextItem_)
                 pPausetextItem_->hide();
 
+            scoreCounter_.start();
+
             autopauseTimer.start(); //Start counting towards autopause
         }
 
@@ -389,6 +387,8 @@ void SeaScene::pause(bool paused)
             }
 //                else qDebug() << "No pause text available";
 
+            levelScore_ += scoreCounter_.elapsed();
+
             autopauseTimer.stop(); //No need to count toward autopause when already paused
         }
 }
@@ -610,10 +610,18 @@ void SeaScene::about()
 
 void SeaScene::restartLevel()
 {
+
+    levelScore_ = 0;
+
     setupMap(levelset_.getLevel(currentLevel_));  //getLevel() returns default constructor Level if index is invalid, so no risk of crash
+
+    scoreCounter_.start();
+
     vibrationActivate(pVibrateAction_->isChecked());  //Vibration effects are lost without this
    // qDebug() << pVibrateAction_->isChecked();
     autopauseTimer.start();  //reset counting towards autopause
+
+
 }
 
 
@@ -622,23 +630,23 @@ void SeaScene::nextLevel()
 {
 
     //get score for previous level
-    int score = scoreCounter_.elapsed();
-    totalScore_ += score;
+    levelScore_ += scoreCounter_.elapsed();
+    totalScore_ += levelScore_;
     int highscore = levelset_.getLevelHighScore(currentLevel_);
     qDebug() << highscore;
 
     QString scoretext;
 
-    if (score >= highscore)
+    if (levelScore_ >= highscore)
     {
-        scoretext = tr("<font size=\"5\" color = darkorange>Your time: %1.%2 s<br>Best time: %3.%4 s<br><br>Tap to start the next level").arg(score/1000).arg((score%1000)/100).arg(highscore/1000).arg((highscore%1000)/100);
+        scoretext = tr("<font size=\"5\" color = darkorange>Your time: %1.%2 s<br>Best time: %3.%4 s<br><br>Tap to start the next level").arg(levelScore_/1000).arg((levelScore_%1000)/100).arg(highscore/1000).arg((highscore%1000)/100);
     }
 
     else //New high score!
 
     {
-        scoretext = tr("<font size=\"5\" color = darkorange>Your time %1.%2 s is the new best time!<br>br> Tap to start the next level").arg(score/1000).arg((score%1000)/100);
-        levelset_.setLevelHighScore(currentLevel_,score);
+        scoretext = tr("<font size=\"5\" color = darkorange>Your time %1.%2 s is the new best time!<br>br> Tap to start the next level").arg(levelScore_/1000).arg((levelScore_%1000)/100);
+        levelset_.setLevelHighScore(currentLevel_,levelScore_);
     }
 
     //pause to show the highscore or victory screen
index 022b71d..7393c1a 100644 (file)
@@ -150,6 +150,7 @@ protected:
 
     QTime scoreCounter_;
     int totalScore_;
+    int levelScore_;
 };
 
 #endif // SEASCENE_H