class QLabel;
class QWidget;
class QPushButton;
-class QFrame;
+class QListWidget;
enum PieceType
{
DirRight,
DirDown,
DirDone,
- DirFailed
+ DirFailed,
+ DirPassed
};
typedef struct Piece
{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
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;
};
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
Direction flowDir;
int flowPreplaced;
int flowScore;
+ bool animate;
};
class LevelSwitcher : public QObject
{
Q_OBJECT
public:
- LevelSwitcher(GameController* gameController, QLabel* levelLabel,
- QFrame* startFrame, QLabel* startTitle, QLabel* startLabel, QPushButton* startButton,
- QLabel* scoreLabel,
+ LevelSwitcher(GameController* gameController,
+ QWidget* levelWidget, QListWidget* levelList, QPushButton* levelStartButton,
+ QWidget* startWidget, QLabel* startTitle, QLabel* startLabel, QPushButton* startButton,
+ QWidget* gameWidget, QLabel* levelLabel, QLabel* scoreLabel,
QStringList levels);
- void initiateLevel();
private slots:
+ void onLevelCollectionChosen();
void onStartClicked();
void onLevelPassed(int score);
void onLevelFailed();
+ void chooseLevelCollection();
private:
+ void initiateLevel();
+ void readSavedGames();
+ void writeSavedGames();
+ void readLevelCollections(QStringList collections);
+
GameController* gameController; // Not owned
- QLabel* levelLabel; // Not owned
- QFrame* startFrame; // Not owned
+ QWidget* levelWidget; // Not owned
+ QListWidget* levelList; // Not owned
+ QPushButton* levelStartButton; // Not owned
+ QWidget* startWidget; // Not owned
QLabel* startTitle; // Not owned
QLabel* startLabel; // Not owned
QPushButton* startButton; // Not owned
+ QWidget* gameWidget; // Not owned
+ QLabel* levelLabel; // Not owned
QLabel* scoreLabel; // Not owned
+ 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