]> Shamusworld >> Repos - warehouse-man-deluxe/blob - src/gameboard.h
Added/fixed editor, added play level functionality.
[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, GTMan=0x10 };
5 enum { PMInvalid, PMWalk, PMPush };
6
7 struct UndoMove
8 {
9         int dx, dy, type;
10 };
11
12 class Level;
13
14 class GameBoard
15 {
16         public:
17                 GameBoard(int);//, int, int, int);
18                 GameBoard(Level *);
19                 ~GameBoard();
20
21         protected:
22
23         public:
24                 bool GameHasBeenWon(void);
25                 void ResetGame(void);
26                 int MovePlayerN(void);
27                 int MovePlayerS(void);
28                 int MovePlayerE(void);
29                 int MovePlayerW(void);
30                 bool IsBoxNOfPlayer(void);
31                 bool IsBoxSOfPlayer(void);
32                 bool IsBoxEOfPlayer(void);
33                 bool IsBoxWOfPlayer(void);
34                 bool UndoLastMove(int &, int &, int &);
35
36         private:
37                 int Move(int dx, int dy, char, char);
38
39         public:
40                 int playerX, playerY;           // Player X/Y are zero-based
41                 int width, height;
42                 char * board;
43                 const char * name;
44
45         private:
46                 char * initialBoard;
47                 int initialX, initialY;
48                 int boardLength;
49                 int numMoves;
50                 UndoMove undo[8192];            // 8K moves ought to be enough for anybody
51 };
52
53 #endif  // __GAMEBOARD_H__
54