Updated files under /debian to reflect version 0.2.0
[ghostsoverboard] / mainwindow.cpp
index 20bda4f..58b3cfd 100644 (file)
@@ -1,5 +1,26 @@
+/**************************************************************************
+        Ghosts Overboard - a game for Maemo 5
+
+        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 "mainwindow.h"
-#include "timercontrolledtursas.h"
 #include <QPixmap>
 #include <QTimer>
 #include <QDebug>
@@ -16,7 +37,7 @@
 MainWindow::MainWindow(QWidget *parent)
     : QMainWindow(parent)
 {
-    setWindowIcon(QIcon(":/pix/laiva_10aave.png"));
+    setWindowIcon(QIcon(":/pix/laiva_3aave.png"));
     setWindowTitle("Ghosts Overboard");
 
     pScene_ = new SeaScene ();
@@ -38,6 +59,17 @@ MainWindow::MainWindow(QWidget *parent)
     connect(pRestartLevelAction,SIGNAL(triggered()),this,SLOT(restartLevel()));
     menuBar()->addAction(pRestartLevelAction);
 
+    QAction * pRestartGameAction = new QAction(tr("Restart game"),this);
+    addAction(pRestartGameAction);
+    connect(pRestartGameAction,SIGNAL(triggered()),this,SLOT(restartGame()));
+    menuBar()->addAction(pRestartGameAction);
+
+    QAction * pVibrateAction = new QAction(tr("Vibration effects"),this);
+    pVibrateAction->setCheckable(true);
+    addAction(pVibrateAction);
+    connect(pVibrateAction,SIGNAL(triggered(bool)),pScene_,SLOT(vibrationActivate(bool)));
+    menuBar()->addAction(pVibrateAction);
+
 
     QAction * pAboutAction = new QAction(tr("About"),this);
     addAction(pAboutAction);
@@ -45,6 +77,21 @@ MainWindow::MainWindow(QWidget *parent)
     menuBar()->addAction(pAboutAction);
 
 
+
+    Level level1(5,10);
+    levelList_.append(level1);
+    Level level2(5,10,2,50);
+    levelList_.append(level2);
+    Level level3(5,15,2,50);
+    levelList_.append(level3);
+    Level level4(5,15,4,50);
+    levelList_.append(level4);
+    Level level5(5,15,5,100);
+    levelList_.append(level5);
+
+    currentLevel_ = 0;
+
+
     //the boundaries of the scene are set to match the size of the view window, which is not
     //available in the constructor --> timer needed
     QTimer::singleShot(100,this,SLOT(initializeBoundaries()));
@@ -79,7 +126,7 @@ void MainWindow::initializeBoundaries()
 
 void MainWindow::restartLevel()
 {
-    pScene_->setupMap(5,10,0);
+    pScene_->setupMap(levelList_.at(currentLevel_));
 }
 
 void MainWindow::about()
@@ -99,9 +146,19 @@ void MainWindow::about()
 void MainWindow::nextLevel()
 {
 
-    //for now, just the handling of last level is implemented, and there is just one level
+    currentLevel_++;
+
+    if (levelList_.empty())
+        pScene_->setupMap(Level());
 
 
+    if ( currentLevel_ < levelList_.size() )
+    {
+        pScene_->setupMap(levelList_.at(currentLevel_));
+    }
+
+    else //Victory!
+    {
 
        QDialog* pVictoryDialog = new QDialog(this);
        pVictoryDialog->setWindowTitle(tr("You won!"));
@@ -143,8 +200,8 @@ void MainWindow::nextLevel()
 
         //Never mind if the user cancels the dialog: restart the game anyway
 
-       restartLevel();
-
+       restartGame();
+    }
 }
 
 bool MainWindow::event(QEvent *event)
@@ -182,3 +239,10 @@ bool MainWindow::event(QEvent *event)
     return QMainWindow::event(event);
 
  }
+
+void MainWindow::restartGame()
+{
+    currentLevel_ = 0;
+    pScene_->setupMap(levelList_.value(currentLevel_)); //value() returns default constructor Level, so no need to check if list empty
+
+}