You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.4 KiB
63 lines
1.4 KiB
#ifndef __BOARD__LAYOUT_
|
|
#define __BOARD__LAYOUT_
|
|
|
|
#include <tqstring.h>
|
|
#include "KmTypes.h"
|
|
|
|
const TQString layoutMagic1_0 = "kmahjongg-layout-v1.0";
|
|
|
|
class BoardLayout {
|
|
|
|
public:
|
|
BoardLayout();
|
|
~BoardLayout();
|
|
|
|
bool loadBoardLayout(const TQString from);
|
|
bool saveBoardLayout(const TQString where);
|
|
UCHAR getBoardData(short z, short y, short x) {return board[z][y][x];}
|
|
|
|
// is there a tile anywhere above here (top left to bot right quarter)
|
|
bool tileAbove(short z, short y, short x);
|
|
bool tileAbove(POSITION &p) { return(tileAbove(p.e, p.y, p.x)); }
|
|
|
|
// is this tile blocked to the left or right
|
|
bool blockedLeftOrRight(short z, short y, short x);
|
|
|
|
void deleteTile(POSITION &p);
|
|
|
|
bool anyFilled(POSITION &p);
|
|
bool allFilled(POSITION &p);
|
|
void insertTile(POSITION &p);
|
|
bool isTileAt(POSITION &p) { return board[p.e][p.y][p.x] == '1'; }
|
|
|
|
|
|
|
|
const char *getBoardLayout();
|
|
void copyBoardLayout(UCHAR *to , unsigned short &numTiles);
|
|
void clearBoardLayout();
|
|
void shiftLeft();
|
|
void shiftRight();
|
|
void shiftUp();
|
|
void shiftDown();
|
|
|
|
|
|
enum { width = 32,
|
|
height = 16,
|
|
depth = 5 };
|
|
enum { maxTiles = (depth*width*height)/4 };
|
|
|
|
TQString &getFilename() {return filename;}
|
|
|
|
protected:
|
|
|
|
void initialiseBoard();
|
|
|
|
private:
|
|
TQString filename;
|
|
TQString loadedBoard;
|
|
UCHAR board[depth][height][width];
|
|
unsigned short maxTileNum;
|
|
};
|
|
|
|
#endif
|