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;
};
{
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,
+ 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();
+
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
+ 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
};
#endif