fileName += (QString("_flow_") + (flow1? "1" : "0") + (flow2? "1" : "0"));
}
-
- qDebug() << "need: " << fileName;
+ //qDebug() << "need: " << fileName;
return fileName + ".png";
}
QWidget* startWidget, QLabel* startTitle,
QLabel* startLabel, QPushButton* startButton,
QLabel* levelLabel, QLabel* scoreLabel,
- QStringList levelCollections)
+ QStringList collections)
: gameController(gameController),
levelWidget(levelWidget), levelList(levelList), levelStartButton(levelStartButton),
startWidget(startWidget), startTitle(startTitle), startLabel(startLabel), startButton(startButton),
levelLabel(levelLabel), scoreLabel(scoreLabel),
- levelCollections(levelCollections), curColl(0), level(0), totalScore(0)
+ curColl(""), level(0), totalScore(0)
{
connect(levelStartButton, SIGNAL(clicked()), this, SLOT(onLevelCollectionChosen()));
connect(gameController, SIGNAL(levelPassed(int)), this, SLOT(onLevelPassed(int)));
connect(gameController, SIGNAL(levelFailed()), this, SLOT(onLevelFailed()));
readSavedGames();
+ readLevelCollections(collections);
chooseLevelCollection();
}
{
levelList->clear();
bool first = true;
- foreach (const QString& collection, levelCollections) {
+ foreach (const QString& collection, levelCollections.keys()) {
QListWidgetItem *newItem = new QListWidgetItem();
// Check how many levels the user has already passed
if (savedGames.contains(collection)) {
passed = savedGames[collection];
}
+ int total = 0;
+ if (levelCollections.contains(collection)) {
+ total = levelCollections[collection].size();
+ }
- newItem->setText(collection + " " + QString::number(passed) + " / " /*+ y*/);
+ newItem->setText(collection + " " +
+ QString::number(passed) + " / " + QString::number(total));
levelList->addItem(newItem); // transfers ownership
- if (first) { // TODO: and passed < total
+ if (first && passed < total) {
levelList->setCurrentItem(newItem);
first = false;
}
{
levelWidget->hide();
curColl = levelList->currentItem()->text().split(" ").first();
- QFile file(QString(LEVDIR) + "/" + curColl + ".dat");
- qDebug() << "Trying to read" << file.fileName();
- if (!file.exists())
- qFatal("Error reading game file: doesn't exist");
- file.open(QIODevice::ReadOnly);
- QTextStream levelData(&file);
- levels.clear();
-
- while (!levelData.atEnd())
- levels << levelData.readLine();
+
+ if (levelCollections.contains(curColl)) {
+ levels = levelCollections[curColl];
+ }
+ else
+ qFatal("Error choosing a level collection: unrecognized");
level = 0;
// Go to the level the user has not yet passed
if (savedGames.contains(curColl)) {
+ qDebug() << "going to saved level" << savedGames[curColl];
level = savedGames[curColl];
- if (level >= levels.size() - 1) {
+ if (level >= levels.size()) {
level = 0;
}
}
totalScore = 0;
startTitle->setText("Starting a new game.");
scoreLabel->setText("0");
- file.close();
initiateLevel();
}
startButton->disconnect();
connect(startButton, SIGNAL(clicked()), this, SLOT(chooseLevelCollection()));
// Record that all levels have been passed
- savedGames.insert(curColl, levels.size() - 1);
+ savedGames.insert(curColl, levels.size());
writeSavedGames();
level = 0;
file.close();
}
+void LevelSwitcher::readLevelCollections(QStringList collections)
+{
+ foreach (const QString& coll, collections) {
+ QFile file(QString(LEVDIR) + "/" + coll + ".dat");
+ qDebug() << "Trying to read" << file.fileName();
+ if (!file.exists())
+ qFatal("Error reading level collection: doesn't exist");
+ file.open(QIODevice::ReadOnly);
+ QTextStream levelData(&file);
+ QStringList readLevels;
+ while (!levelData.atEnd())
+ readLevels << levelData.readLine();
+
+ levelCollections.insert(coll, readLevels);
+ file.close();
+ }
+}
+
void LevelSwitcher::writeSavedGames()
{
QFile file(QDir::homePath() + "/.evilplumber");
file.open(QIODevice::Truncate | QIODevice::WriteOnly);
QTextStream saveData(&file);
foreach (const QString& collection, savedGames.keys()) {
+ qDebug() << "writing" << collection << savedGames[collection];
saveData << collection << " " << savedGames[collection] << endl;
}
file.close();