}
pack=0;
- QSettings settings("paul","vexed");
- settings.beginGroup("save");
- QString savedTitle=settings.value("pack","Classic Levels").toString();
- int savedLevelNo=settings.value("level",0).toInt();
- loadPack(savedTitle,savedLevelNo);
+ loadPack(Settings().savedPackName(),Settings().savedLevelNo());
}
MainWindow::~MainWindow()
PlayField *pf=pack->levelAt(levelNo);
ui->playwidget->setPlayField(pf);
QString title;
- QTextStream(&title)<<pf->title<<" ("<<levelNo+1<<"/"<<pack->levels.size()<<")";
+ QTextStream(&title)<<pf->title<<" ("<<levelNo+1<<" of "<<pack->levels.size()<<")";
+ levelHiscore=Settings().getHighscore(pack->getTitle(),pf->title);
ui->levelTitle->setText(title);
+ movesChanged(0);
}
void MainWindow::loadPack(const QString& packName, int levelToLoad)
PlayField *pf=pack->levelAt(levelNo);
const QString sol=pf->getSolution();
int total=sol.length()/2;
- int score=hiscore();
+ //int score=Settings().getHighscore(pack->getTitle(),pf->title);
QString q;
QTextStream movesBanner(&q);
movesBanner<<moves<<"/"<<total;
- if(score!=9999)
- movesBanner<<"<b>"<<score<<"</b>";
-
+ if(levelHiscore!=HS::NO_SCORE)
+ movesBanner<<"(<b>"<<levelHiscore<<"</b>)";
ui->moves->setText(q);
}
void MainWindow::solved(int moves)
{
- hiscore(moves);
- loadNextLevel();
-}
-
-int MainWindow::hiscore(int score)
-{
- QSettings settings("paul","vexed");
PlayField *pf=pack->levelAt(levelNo);
- QString title=pf->title;
- settings.beginGroup("score");
- settings.beginGroup(pack->getTitle());
- QString saved=settings.value(title,"9999").toString();
- bool ok;
- int savedMoves=saved.toInt(&ok);
- if(!ok) savedMoves=9999;
- if(score == -1)
- return savedMoves;
- if(score<savedMoves)
- settings.setValue(title,score);
- return score;
+ Settings().saveHiscore(pack->getTitle(),pf->title, moves);
+ loadNextLevel();
}
void MainWindow::openPreferences()
// TODO: save playfield (and undo?)
void MainWindow::saveState()
{
- QSettings settings("paul","vexed");
- settings.beginGroup("save");
- settings.setValue("pack",pack->getTitle());
- settings.setValue("level",levelNo);
+ Settings().saveGame(pack->getTitle(),levelNo);
+}
+
+void MainWindow::loadNextLevel()
+{
+ if(levelNo<(pack->size()-1))
+ {
+ levelNo++;
+ loadLevel();
+ }
}