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);
+
+ 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);
connect(pAboutAction,SIGNAL(triggered()),this,SLOT(about()));
menuBar()->addAction(pAboutAction);
- QAction * pRestartGameAction = new QAction(tr("Restart game"),this);
- addAction(pRestartGameAction);
- connect(pRestartGameAction,SIGNAL(triggered()),this,SLOT(restartGame()));
- menuBar()->addAction(pRestartGameAction);
+
Level level1(5,10);
levelList_.append(level1);
Level level2(5,10,2,50);
levelList_.append(level2);
- Level level3(5,15,3,100);
+ Level level3(5,15,2,50);
levelList_.append(level3);
- Level level4(10,15,5,50);
+ Level level4(5,15,4,50);
levelList_.append(level4);
- Level level5(10,15,5,100);
+ 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()));
void MainWindow::restartLevel()
{
- pScene_->setupMap(levelList_.at(currentLevel_));
+ pScene_->setupMap(levelList_.value(currentLevel_)); //value() returns default constructor Level if index is invalid, so no risk of crash
+ pScene_->vibrationActivate(pVibrateAction_->isChecked()); //Vibration effects are lost without this
+ // qDebug() << pVibrateAction_->isChecked();
}
void MainWindow::about()
if ( currentLevel_ < levelList_.size() )
{
- pScene_->setupMap(levelList_.at(currentLevel_));
+ restartLevel();
}
else //Victory!
void MainWindow::restartGame()
{
currentLevel_ = 0;
- pScene_->setupMap(levelList_.value(currentLevel_)); //value() returns default constructor Level, so no need to check if list empty
-
+ restartLevel();
}