]> Shamusworld >> Repos - warehouse-man-deluxe/blob - src/gameboard.h
229feb7272c564b3769ca46fbe09fe873bd071d5
[warehouse-man-deluxe] / src / gameboard.h
1 #ifndef __GAMEBOARD_H__
2 #define __GAMEBOARD_H__
3
4 enum { GTSpace=0x00, GTWall=0x01, GTBox=0x02, GTBoxSpot=0x04, GTNull=0x08 };
5 enum { PMInvalid, PMWalk, PMPush };
6
7 struct UndoMove
8 {
9         int dx, dy, type;
10 };
11
12 class GameBoard
13 {
14         public:
15                 GameBoard(int);//, int, int, int);
16                 ~GameBoard();
17
18         protected:
19
20         public:
21                 bool GameHasBeenWon(void);
22                 void ResetGame(void);
23                 int MovePlayerN(void);
24                 int MovePlayerS(void);
25                 int MovePlayerE(void);
26                 int MovePlayerW(void);
27                 bool IsBoxNOfPlayer(void);
28                 bool IsBoxSOfPlayer(void);
29                 bool IsBoxEOfPlayer(void);
30                 bool IsBoxWOfPlayer(void);
31                 bool UndoLastMove(int &, int &, int &);
32
33         private:
34                 int Move(int dx, int dy, char, char);
35
36         public:
37                 int playerX, playerY;           // Player X/Y are zero-based
38                 int width, height;
39                 char * board;
40                 const char * name;
41
42         private:
43                 char * initialBoard;
44                 int initialX, initialY;
45                 int boardLength;
46                 int numMoves;
47                 UndoMove undo[8192];            // 8K moves ought to be enough for anybody
48 };
49
50 #endif  // __GAMEBOARD_H__
51