Small fix for level numbers.
[evilplumber] / src / game.h
index 88540a1..4fa333d 100644 (file)
@@ -51,7 +51,8 @@ enum Direction
     DirRight,
     DirDown,
     DirDone,
-    DirFailed
+    DirFailed,
+    DirPassed
 };
 
 typedef struct Piece
@@ -82,9 +83,9 @@ static const Piece ppieces[] = {
     {PieceCross, 0, true, 3, 0,              // 7
      {DirLeft, DirRight, DirUp, DirDown}},
     {PieceCorners, 0, true, 4, 0,            // 8
-     {DirLeft, DirUp, DirRight, DirDown}},
+     {DirLeft, DirDown, DirRight, DirUp}},
     {PieceCorners, 90, true, 4, 1,          // 9
-     {DirUp, DirRight, DirLeft, DirDown}},
+     {DirRight, DirDown, DirLeft, DirUp}},
     {PieceStart, 0, false, 0, 0,             // 10
      {DirLeft, DirNone, DirNone, DirNone}},
     {PieceStart, 90, false, 0, 0,            // 11
@@ -170,11 +171,9 @@ private slots:
     void onItemClicked(QTableWidgetItem* item);
 
 private:
-    void initPieceCache();
     static int pieceToId(const Piece* piece);
     static const Piece* idToPiece(int id);
 
-    static QHash<QPair<PieceType, int>, const Piece*> pieceCache;
     QTableWidget* pieceUi;
     QHash<const Piece*, int> pieceCounts;
 };
@@ -193,14 +192,16 @@ signals:
     void levelFailed();
 
 private slots:
+    void onDoneClicked();
     void onCellClicked(int row, int column);
     void onValidPieceSelected(const Piece* piece);
     void onInvalidPieceSelected();
     void onTimeout();
-    void levelEnds();
     void computeFlow();
 
 private:
+    void levelEnds();
+
     AvailablePieces* pieceUi; // Not owned
     GameField* fieldUi; // Not owned
     QLabel* timeLabel; // Not owned
@@ -223,6 +224,7 @@ private:
     Direction flowDir;
     int flowPreplaced;
     int flowScore;
+    bool animate;
 };
 
 class LevelSwitcher : public QObject
@@ -232,7 +234,7 @@ public:
     LevelSwitcher(GameController* gameController,
                   QWidget* levelWidget, QListWidget* levelList, QPushButton* levelStartButton,
                   QWidget* startWidget, QLabel* startTitle, QLabel* startLabel, QPushButton* startButton,
-                  QLabel* levelLabel, QLabel* scoreLabel,
+                  QWidget* gameWidget, QLabel* levelLabel, QLabel* scoreLabel,
                   QStringList levels);
 
 private slots:
@@ -240,10 +242,13 @@ private slots:
     void onStartClicked();
     void onLevelPassed(int score);
     void onLevelFailed();
+    void chooseLevelCollection();
 
 private:
     void initiateLevel();
-    void chooseLevelCollection();
+    void readSavedGames();
+    void writeSavedGames();
+    void readLevelCollections(QStringList collections);
 
     GameController* gameController; // Not owned
     QWidget* levelWidget; // Not owned
@@ -253,13 +258,16 @@ private:
     QLabel* startTitle; // Not owned
     QLabel* startLabel; // Not owned
     QPushButton* startButton; // Not owned
+    QWidget* gameWidget; // Not owned
     QLabel* levelLabel; // Not owned
     QLabel* scoreLabel; // Not owned
 
-    QStringList levelCollections;
+    QString curColl;
     QStringList levels;
     int level;
     int totalScore;
+    QHash<QString, int> savedGames; // level collection -> next level ix
+    QHash<QString, QStringList> levelCollections; // level collection -> level names
 };
 
 #endif