Merge branch 'singleinstance' into harmattan
authorHeli Hyvättinen <heli.hyvattinen@kymp.net>
Tue, 13 Sep 2011 10:49:59 +0000 (13:49 +0300)
committerHeli Hyvättinen <heli.hyvattinen@kymp.net>
Tue, 13 Sep 2011 10:49:59 +0000 (13:49 +0300)
Single instance works.

Conflicts:
ghostsoverboard.desktop
ghostsoverboard.pro

ghostsoverboard.pro
levelset.cpp [new file with mode: 0644]
levelset.h [new file with mode: 0644]
qtc_packaging/debian_harmattan/control
seascene.cpp
seascene.h

index 6072405..039d296 100644 (file)
@@ -21,7 +21,8 @@ SOURCES += main.cpp\
     timercontrolledgraphicspixmapobject.cpp \
     octopus.cpp \
     level.cpp \
-    seaview.cpp
+    seaview.cpp \
+    levelset.cpp
 
 HEADERS  += \
     orientationcontrolledgraphicspixmapobject.h \
@@ -31,7 +32,8 @@ HEADERS  += \
     timercontrolledgraphicspixmapobject.h \
     octopus.h \
     level.h \
-    seaview.h
+    seaview.h \
+    levelset.h
 
 CONFIG += mobility
 MOBILITY = sensors
@@ -98,3 +100,5 @@ unix:!symbian:!maemo5 {
     INSTALLS += icon
 }
 
+
+
diff --git a/levelset.cpp b/levelset.cpp
new file mode 100644 (file)
index 0000000..66e0bfe
--- /dev/null
@@ -0,0 +1,101 @@
+/**************************************************************************
+        Ghosts Overboard - a game for 'Meego 1.2 Harmattan'
+
+        Copyright (C) 2011  Heli Hyvättinen
+
+        This file is part of Ghosts Overboard
+
+        Ghosts Overboard is free software: you can redistribute it and/or modify
+        it under the terms of the GNU General Public License as published by
+        the Free Software Foundation, either version 2 of the License, or
+        (at your option) any later version.
+
+        This program is distributed in the hope that it will be useful,
+        but WITHOUT ANY WARRANTY; without even the implied warranty of
+        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+        GNU General Public License for more details.
+
+        You should have received a copy of the GNU General Public License
+        along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**************************************************************************/
+
+#include "levelset.h"
+#include <QSettings>
+#include <QDebug>
+
+Levelset::Levelset()
+{
+
+}
+
+Levelset::Levelset(QString name, QList<Level> levelList)
+{
+    name_ = name;
+
+    levels_ = levelList;
+}
+
+
+bool Levelset::isValid()
+{
+    if (name_.isEmpty())
+        return false;
+
+    if (levels_.isEmpty())
+        return false;
+
+    return true;
+}
+
+int Levelset::numberOfLevels()
+{
+    return levels_.length();
+}
+
+Level Levelset::getLevel(int index)
+{
+
+    return levels_.value(index); //Returns a default constructed Level if called with invalid index
+
+}
+
+int Levelset::getTotalHighScore()
+{
+    QSettings settings;
+    settings.beginGroup(name_);
+    return settings.value("TotalHighScore",900*1000*100).toInt();
+}
+
+void Levelset::setTotalHighScore(int highscore)
+{
+    QSettings settings;
+
+    settings.beginGroup(name_);
+    settings.setValue("TotalHighScore", highscore);
+
+}
+
+int Levelset::getLevelHighScore(int index)
+{
+    QSettings settings;
+    QString group = name_;
+    group.append("/LevelHighScore");
+    settings.beginGroup(group);
+
+    qDebug() << group;
+
+    return settings.value(QString(index),900*1000).toInt();
+}
+
+void Levelset::setLevelHighScore(int index, int highScore)
+{
+    QSettings settings;
+    QString group = name_;
+    group.append("/LevelHighScore");
+    settings.beginGroup(group);
+
+    qDebug() << group;
+
+    settings.setValue(QString(index),highScore);
+}
diff --git a/levelset.h b/levelset.h
new file mode 100644 (file)
index 0000000..69e0469
--- /dev/null
@@ -0,0 +1,62 @@
+/**************************************************************************
+        Ghosts Overboard - a game for 'Meego 1.2 Harmattan'
+
+        Copyright (C) 2011  Heli Hyvättinen
+
+        This file is part of Ghosts Overboard
+
+        Ghosts Overboard is free software: you can redistribute it and/or modify
+        it under the terms of the GNU General Public License as published by
+        the Free Software Foundation, either version 2 of the License, or
+        (at your option) any later version.
+
+        This program is distributed in the hope that it will be useful,
+        but WITHOUT ANY WARRANTY; without even the implied warranty of
+        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+        GNU General Public License for more details.
+
+        You should have received a copy of the GNU General Public License
+        along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**************************************************************************/
+
+#ifndef LEVELSET_H
+#define LEVELSET_H
+
+#include "level.h"
+#include <QList>
+#include <QString>
+
+class Levelset
+{
+public:
+    Levelset();
+
+    Levelset(QString name, QList<Level> levelList);
+
+    bool isValid();
+
+    QString getName();
+
+    Level getLevel(int index);
+
+    int numberOfLevels();
+
+    int getTotalHighScore();
+
+    void setTotalHighScore(int highScore);
+
+    int getLevelHighScore(int index);
+
+    void setLevelHighScore(int index, int highScore);
+
+
+private:
+
+    QString name_;
+
+    QList<Level> levels_;
+
+};
+
+#endif // LEVELSET_H
index ff41619..4a64ab9 100644 (file)
@@ -1,7 +1,7 @@
 Source: ghostsoverboard
 Section: user/other
 Priority: optional
-Maintainer: Heli Hyvättinen <heli,hyvattinen@kymp.net>
+Maintainer: Heli Hyvättinen <heli.hyvattinen@kymp.net>
 Build-Depends: debhelper (>= 5), libqt4-dev, libqtm-dev
 Standards-Version: 3.7.3
 Homepage: http://ghostsoverboard.garage.maemo.org/
@@ -12,5 +12,11 @@ Depends: ${shlibs:Depends}, ${misc:Depends}
 Description: Pick up ghosts by tilting the device
  Save the ghosts from the sea back to their ghost ship. Watch for the rocks and the octopuses. Tap screen to pause and access menu.
 XSBC-Maemo-Display-Name: Ghosts Overboard
-XB-Maemo-Icon-26: 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
+XB-Maemo-Icon-26: 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
 Homepage: http://ghostsoverboard.garage.maemo.org/
+XB-Maemo-Upgrade-Description: Pick up ghosts by tilting the device
+ Save the ghosts from the sea back to their ghost ship. Watch for the rocks and the octopuses. Tap screen to pause and access menu.
+XB-Maemo-Flags: visible
+XB-MeeGo-Desktop-Entry-Filename: ghostsoverboard
+
+
index 2f20baa..753e916 100644 (file)
@@ -61,19 +61,25 @@ 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;
 
+    totalScore_ = 0;
+
     //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);
@@ -111,6 +117,8 @@ void SeaScene::setupMap(int ghosts, int rocks, int octopuses, int octopusSpeed)
     createAboutBoxItems();
     createVictoryItems();
 
+    createLevelCompletedItems();
+
 
     //empty the list of moving items
 
@@ -228,8 +236,6 @@ void SeaScene::setupMap(int ghosts, int rocks, int octopuses, int octopusSpeed)
         connect(pOctopus,SIGNAL(droppingGhosts()),pShip,SLOT(dropAllGhosts()));
     }
     delete pPosition;
-
-
 }
 
 void SeaScene::setupMap(Level level)
@@ -363,6 +369,8 @@ void SeaScene::pause(bool paused)
             if (pPausetextItem_)
                 pPausetextItem_->hide();
 
+            scoreCounter_.start();
+
             autopauseTimer.start(); //Start counting towards autopause
         }
 
@@ -379,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
         }
 }
@@ -406,9 +416,22 @@ void SeaScene::handleScreenTapped()
         {
             pAboutBoxItem_->hide();
             pPausetextItem_->show();
+            return;
         }
     }
 
+    //If the game is paused, check if the level completed item is shown
+
+    if (pLevelCompletedItem_)
+    {
+        if (pLevelCompletedItem_->isVisible())
+        {
+            pLevelCompletedItem_->hide();
+            restartLevel(); //Current level has already been set to the next one before showing the level completed item
+            pPauseAction_->setChecked(false); //unpause
+            return;
+        }
+    }
    
     //If the game is paused, check if the victory item is being shown
     if(pVictoryCongratulationsItem_)
@@ -422,6 +445,7 @@ void SeaScene::handleScreenTapped()
         }
     }
 
+
     //If the game is paused and no victory or about box, check if menu item was selected
 
     QList<QGraphicsItem *> items = selectedItems();
@@ -586,10 +610,18 @@ void SeaScene::about()
 
 void SeaScene::restartLevel()
 {
-    setupMap(levelList_.value(currentLevel_));  //value() returns default constructor Level if index is invalid, so no risk of crash
+
+    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
+
+
 }
 
 
@@ -597,26 +629,59 @@ void SeaScene::restartLevel()
 void SeaScene::nextLevel()
 {
 
-    currentLevel_++;
+    //get score for previous level
+    levelScore_ += scoreCounter_.elapsed();
+    totalScore_ += levelScore_;
+    int highscore = levelset_.getLevelHighScore(currentLevel_);
 
-    if (levelList_.empty())
-        setupMap(Level());
+    qDebug() << highscore;
 
+    QString scoretext;
 
-    if ( currentLevel_ < levelList_.size() )
+    if (levelScore_ >= highscore)
     {
-       restartLevel();
+        scoretext = tr("<font size=\"7\" color = darkorange>Your time: %1.%2 s<br>Best time: %3.%4 s").arg(levelScore_/1000).arg((levelScore_%1000)/100).arg(highscore/1000).arg((highscore%1000)/100);
     }
 
-    else //Victory!
+    else //New high score!
+
+    {
+        scoretext = tr("<font size=\"7\" color = darkorange>Your time %1.%2 s is<br>the new best time!").arg(levelScore_/1000).arg((levelScore_%1000)/100);
+        levelset_.setLevelHighScore(currentLevel_,levelScore_);
+    }
+
+    //pause to show the highscore or victory screen
+
+    turnPauseOn();
+    pPausetextItem_->hide();
+
+
+    //Go to the next level if available
+    currentLevel_++;
+
+    if ( currentLevel_ < levelset_.numberOfLevels() )
     {
 
-        pPauseAction_->setChecked(true); //Pause the game while showing the victory dialog
+       pLevelCompletedItem_->setHtml(scoretext);
+       pLevelCompletedItem_->show();
+//       restartLevel();
+    }
 
-        pPausetextItem_->hide();
+    else //Victory!
+    {
+        int totalHighsore = levelset_.getTotalHighScore();
+        if (totalScore_ >= totalHighsore)
+        {
+            scoretext.append(tr("<br>Your total time: %1.%2 s<br>Best total time: %3.%4 s").arg(totalScore_/1000).arg((totalScore_%1000)/100).arg(totalHighsore/1000).arg((totalHighsore%1000)/100));
+        }
+        else //new total high score
+        {
+            scoretext.append(tr("<br>Your total time %1.%2 s is<br>the new best time").arg(totalScore_/1000).arg((totalScore_%1000)/100));
+            levelset_.setTotalHighScore(totalScore_);
+        }
 
+        pVictoryScoreItem_->setHtml(scoretext);
         pVictoryCongratulationsItem_->show();
-
     }
 }
 
@@ -624,6 +689,7 @@ void SeaScene::nextLevel()
 void SeaScene::restartGame()
 {
     currentLevel_ = 0;
+    totalScore_ = 0;
     restartLevel();
 }
 
@@ -648,7 +714,7 @@ void SeaScene::createVictoryItems()
     pVictoryCongratulationsItem_ = new QGraphicsTextItem;
     pVictoryCongratulationsItem_->setHtml("<font size=\"7\" color = darkorange> <b> Victory!");
     pVictoryCongratulationsItem_->hide();
-    pVictoryCongratulationsItem_->setPos(355,50);
+    pVictoryCongratulationsItem_->setPos(315,30);
     pVictoryCongratulationsItem_->setZValue(1000);
     addItem(pVictoryCongratulationsItem_);
 
@@ -657,17 +723,23 @@ void SeaScene::createVictoryItems()
 
     QGraphicsTextItem * pTextItem = new QGraphicsTextItem(pVictoryCongratulationsItem_);
     pTextItem->setHtml("<font size=\"7\" color = darkorange> Congratulations!");
-    pTextItem->setPos(-50,100);
+    pTextItem->setPos(-50,80);
     pTextItem->setZValue(1000);
 
     QGraphicsTextItem * pMiddleTextItem = new QGraphicsTextItem(pVictoryCongratulationsItem_);
     pMiddleTextItem->setHtml("<font size=\"7\" color = darkorange> You have saved all the ghosts.");
-    pMiddleTextItem->setPos(-145,140);
+    pMiddleTextItem->setPos(-145,120);
+    pMiddleTextItem->setZValue(1000);
+
+
+    pVictoryScoreItem_ = new QGraphicsTextItem(pVictoryCongratulationsItem_);
+    pVictoryScoreItem_->setPos(-50,180);
     pMiddleTextItem->setZValue(1000);
+    //Text is set at usetime!
 
     QGraphicsTextItem * pLowestTextItem = new QGraphicsTextItem(pVictoryCongratulationsItem_);
     pLowestTextItem->setHtml("<font size=\"7\" color = darkorange> Tap to play again");
-    pLowestTextItem->setPos(-50,220);
+    pLowestTextItem->setPos(-50,360);
     pLowestTextItem->setZValue(1000);
 }
 
@@ -702,9 +774,29 @@ void SeaScene::setItemPointersNull()
 //    pMinimizeItem_ = NULL; //Fremantle spesific
 
     pAboutBoxItem_ = NULL;
+    pLevelCompletedItem_ = NULL;
+    pVictoryScoreItem_ = NULL;
+
 }
 
 void SeaScene::turnPauseOn()
 {
     pPauseAction_->setChecked(true);
 }
+
+
+
+void SeaScene::createLevelCompletedItems()
+{
+    pLevelCompletedItem_ = new QGraphicsTextItem;
+    addItem(pLevelCompletedItem_);
+    pLevelCompletedItem_->setPos(240,100);
+    pLevelCompletedItem_->setZValue(1000);
+    pLevelCompletedItem_->hide();
+    //The text is set at usetime
+
+    QGraphicsTextItem * pTapForNextLevelItem = new QGraphicsTextItem(pLevelCompletedItem_);
+    pTapForNextLevelItem->setPos(-60,100);
+    pTapForNextLevelItem->setZValue(1000);
+    pTapForNextLevelItem->setHtml("<font size=\"7\" color = darkorange>Tap to start the next level");
+}
index 8de8eb7..c3de5f7 100644 (file)
 #include<QGraphicsItemGroup>
 #include "screenlitkeeper.h"
 #include "level.h"
+#include "levelset.h"
 #include <QAction>
 #include <QTimer>
+#include <QTime>
 
 class SeaScene : public QGraphicsScene
 {
@@ -80,9 +82,6 @@ public slots:
 
     void softContinue();
 
-    void createAboutBoxItems();
-    void createVictoryItems();
-
     void setItemPointersNull();
 
     void turnPauseOn();
@@ -99,6 +98,9 @@ protected:
 
     void createMenuItems();
     void prepareForMenu(QGraphicsItem * pItem);
+    void createAboutBoxItems();
+    void createVictoryItems();
+    void createLevelCompletedItems();
 
     const QString ghostImageFilename_;
     const QString rockImageFilename_;
@@ -126,10 +128,14 @@ protected:
     QGraphicsTextItem * pAboutItem_;
     QGraphicsTextItem * pQuitItem_;
 
+    QGraphicsTextItem * pVictoryScoreItem_;
     QGraphicsTextItem * pAboutBoxItem_;
     QGraphicsTextItem * pVictoryCongratulationsItem_;
 
-    QList<Level> levelList_;
+    QGraphicsTextItem * pLevelCompletedItem_;
+
+
+    Levelset levelset_;
 
     int currentLevel_;
 
@@ -142,6 +148,10 @@ protected:
 
     QTimer autopauseTimer;
 
+
+    QTime scoreCounter_;
+    int totalScore_;
+    int levelScore_;
 };
 
 #endif // SEASCENE_H