* Make the Bomberman draw itself.
[matthijs/ABM2.git] / ABM2 / Playground.h
1 #pragma once\r
2 \r
3 #include "Engine/engine.h"\r
4 \r
5 #define PLAYGROUND_ROWS 11\r
6 #define PLAYGROUND_COLS 15\r
7 #define PLAYGROUND_BORDER_LEFT 20\r
8 #define PLAYGROUND_BORDER_TOP 66\r
9 #define PLAYGROUND_BORDER_RIGHT 20\r
10 #define PLAYGROUND_BORDER_BOTTOM 18\r
11 #define FIELD_UNIT_WIDTH 40\r
12 #define FIELD_UNIT_HEIGHT 36\r
13 #define BOMBERMAN_BASE_SPEED \r
14 enum TMoveDirection { N,NNE,NE,NEE,E,SEE,SE,SSE,S,SSW,SW,SWW,W,NWW,NW,NNW }; //(0-15 clockwise)\r
15 \r
16 class Bomberman\r
17 {\r
18 public:\r
19         Bomberman(const CMMPointer<Sprite> &sprite, int xloc, int yloc);\r
20         ~Bomberman();\r
21         void Update();\r
22         void move(int xloc, int yloc);\r
23         void move_to(int xloc, int yloc);\r
24         void move_to_direction(TMoveDirection dir);\r
25         int getY();\r
26         int getX();\r
27         int getHeight();\r
28         int getWidth();\r
29         int getCenterX();\r
30         int getCenterY();\r
31         int getOffsetX();\r
32         int getOffsetY();\r
33         int getFieldCenterX();\r
34         int getFieldCenterY();\r
35 private:\r
36         int x,y;\r
37         CMMPointer<Sprite> sprite;\r
38 };\r
39 \r
40 class Tile\r
41 {\r
42 public:\r
43         Tile(const CMMPointer<Sprite> &sprite, int subsprite, int col, int row);\r
44         ~Tile();\r
45         void Draw();\r
46 private:\r
47         CMMPointer<Sprite> sprite;\r
48         int col, row, subsprite;\r
49 };\r
50 \r
51 class Playground : public ITask\r
52 {\r
53 public:\r
54         Playground(CKernel *kernel);\r
55         bool Start();\r
56         void Update();\r
57         void Stop();\r
58         AUTO_SIZE;\r
59 private:\r
60 \r
61         Bomberman *bomberman;\r
62         Tile *field[PLAYGROUND_COLS][PLAYGROUND_ROWS];\r
63 \r
64         void move_up();\r
65         void move_down();\r
66         void move_right();\r
67         void move_left();\r
68 \r
69         DWORD old_counter;\r
70 };\r