fileName += (QString("_flow_") + (flow1? "1" : "0") + (flow2? "1" : "0"));
}
- //qDebug() << "need: " << fileName;
return fileName + ".png";
}
Direction flowsTo(const Piece* piece, Direction flowFrom)
{
- //qDebug() << piece->flows[0];
- //qDebug() << piece->flows[1];
- //qDebug() << piece->flows[2];
- //qDebug() << piece->flows[3];
- //qDebug() << "check" << flowFrom;
if (piece->flows[0] == flowFrom)
return piece->flows[1];
if (piece->flows[1] == flowFrom)
bool GameField::setPiece(int row, int col, const Piece* piece, bool fixed)
{
- qDebug() << "set piece" << row << col;
-
if (row < 0 || row >= rows || col < 0 || col >= cols) {
qWarning() << "Invalid piece index";
return false;
int index = toIndex(row, col);
if (field[index].piece->type == PieceNone) {
- qDebug() << "really setting";
field[index].piece = piece;
field[index].fixed = fixed;
// Indicate the flow: fill the piece in question with the
// liquid. (The piece can also be an empty one, or an illegal
// one.)
- qDebug() << "ind flow" << row << col << dir;
+
if (row < 0 || col < 0 || row >= rows || col >= cols) {
return;
}
}
QString iconId = pieceToIconId(field[index].piece, field[index].flow[0], field[index].flow[1]);
- qDebug() << "icon id" << iconId;
QModelIndex mIndex = fieldUi->model()->index(row, col);
QLabel* label = (QLabel*)fieldUi->indexWidget(mIndex);
// Setup ui
- qDebug() << pieceUi->rowCount() << pieceUi->columnCount();
-
for (int i = 0; i < 2; ++i)
pieceUi->setColumnWidth(i, 120);
for (int i = 0; ppieces[i].type != PiecesEnd; ++i) {
if (ppieces[i].userCanAdd == false) continue;
- //qDebug() << ppieces[i].type << ppieces[i].rotation;
QString fileName = pieceToIconId(&(ppieces[i]));
QTableWidgetItem* item = new QTableWidgetItem(QIcon(fileName), "0", QTableWidgetItem::UserType + pieceToId(&(ppieces[i])));
void AvailablePieces::onItemClicked(QTableWidgetItem* item)
{
- qDebug() << "piece clicked";
int id = item->type() - QTableWidgetItem::UserType;
const Piece* piece = idToPiece(id);
gameData >> rows;
gameData >> cols;
- qDebug() << rows << cols;
if (rows < 2 || rows > 10 || cols < 2 || cols > 10)
qFatal("Error reading game file: rows and cols");
void GameController::onCellClicked(int row, int column)
{
- qDebug() << "clicked: " << row << column;
- if (!levelRunning) return;
- if (currentPiece->type == PieceNone) return;
- if (fieldUi->setPiece(row, column, currentPiece))
- emit pieceUsed(currentPiece);
+ if (!levelRunning) return;
+ if (currentPiece->type == PieceNone) return;
+ if (fieldUi->setPiece(row, column, currentPiece))
+ emit pieceUsed(currentPiece);
}
void GameController::onValidPieceSelected(const Piece* piece)
{
- qDebug() << "selected: " << piece->type << piece->rotation;
currentPiece = piece;
}
}
// Now we know the next piece and where the flow comes *from*
- qDebug() << "flow to" << flowRow << flowCol;
// Check which piece is there
const Piece* piece = fieldUi->pieceAt(flowRow, flowCol);
- qDebug() << "there is" << piece->type << piece->rotation;
flowDir = flowsTo(piece, flowDir);
// If the piece was pre-placed, record that the liquid has
// flown through it once
total = levelCollections[collection].size();
}
- newItem->setText(collection + " \tPassed: " +
+ newItem->setText(collection + ", passed: " +
QString::number(passed) + " / " + QString::number(total));
levelList->addItem(newItem); // transfers ownership
if (first && passed < total) {
void LevelSwitcher::onLevelCollectionChosen()
{
levelWidget->hide();
- curColl = levelList->currentItem()->text().split(" ").first();
+ curColl = levelList->currentItem()->text().split(",").first();
if (levelCollections.contains(curColl)) {
levels = levelCollections[curColl];
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()) {
level = 0;
while (!saveData.atEnd()) {
saveData >> collection;
saveData >> level;
- qDebug() << "Got saved game: " << collection << level;
+
if (collection != "")
savedGames.insert(collection, level);
}
{
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);
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();
// TODO:
// --- 0.1 ---
// more levels to the basic collection
-// make fixed pipes look different than non-fixed ones
-// get rid of debug prints
// --- 0.2 ---
// ability to install level sets as different packages
// better graphics
-// color theme
// re-placing pieces
// graphical hints on what to do next
// graphical help, showing the ui elements: demo