diff options
-rw-r--r-- | gamestate.cpp | 50 | ||||
-rw-r--r-- | gamestate.h | 2 |
2 files changed, 31 insertions, 21 deletions
diff --git a/gamestate.cpp b/gamestate.cpp index 40229ba..39d589d 100644 --- a/gamestate.cpp +++ b/gamestate.cpp | |||
@@ -10,6 +10,7 @@ GameState::GameState() | |||
10 | info.playerx = 1; | 10 | info.playerx = 1; |
11 | info.playery = 1; | 11 | info.playery = 1; |
12 | info.level = Level(); | 12 | info.level = Level(); |
13 | info.doneMaking = false; | ||
13 | board = Board(&info); | 14 | board = Board(&info); |
14 | 15 | ||
15 | SDL_WM_SetCaption("Maze Of Life - Level 1", NULL); | 16 | SDL_WM_SetCaption("Maze Of Life - Level 1", NULL); |
@@ -17,35 +18,39 @@ GameState::GameState() | |||
17 | 18 | ||
18 | void GameState::input(SDLKey key) | 19 | void GameState::input(SDLKey key) |
19 | { | 20 | { |
20 | switch (key) | 21 | if (info.doneMaking) |
21 | { | 22 | { |
22 | case SDLK_LEFT: | 23 | switch (key) |
23 | move(info.playerx-1, info.playery); | 24 | { |
25 | case SDLK_LEFT: | ||
26 | move(info.playerx-1, info.playery); | ||
24 | 27 | ||
25 | break; | 28 | break; |
26 | case SDLK_RIGHT: | 29 | case SDLK_RIGHT: |
27 | move(info.playerx+1, info.playery); | 30 | move(info.playerx+1, info.playery); |
28 | 31 | ||
29 | break; | 32 | break; |
30 | case SDLK_UP: | 33 | case SDLK_UP: |
31 | move(info.playerx, info.playery-1); | 34 | move(info.playerx, info.playery-1); |
32 | 35 | ||
33 | break; | 36 | break; |
34 | case SDLK_DOWN: | 37 | case SDLK_DOWN: |
35 | move(info.playerx, info.playery+1); | 38 | move(info.playerx, info.playery+1); |
36 | 39 | ||
37 | break; | 40 | break; |
38 | case SDLK_ESCAPE: | 41 | case SDLK_ESCAPE: |
39 | newGame = false; | 42 | newGame = false; |
40 | 43 | ||
41 | info.playerx = 1; | 44 | info.playerx = 1; |
42 | info.playery = 1; | 45 | info.playery = 1; |
43 | info.level = Level(); | 46 | info.level = Level(); |
44 | board = Board(&info); | 47 | info.doneMaking = false; |
48 | board = Board(&info); | ||
45 | 49 | ||
46 | SDL_WM_SetCaption("Maze Of Life - Level 1", NULL); | 50 | SDL_WM_SetCaption("Maze Of Life - Level 1", NULL); |
47 | 51 | ||
48 | break; | 52 | break; |
53 | } | ||
49 | } | 54 | } |
50 | } | 55 | } |
51 | 56 | ||
@@ -62,6 +67,7 @@ void GameState::tick() | |||
62 | } | 67 | } |
63 | 68 | ||
64 | info.level.incrementLevel(); | 69 | info.level.incrementLevel(); |
70 | info.doneMaking = false; | ||
65 | board = Board(&info); | 71 | board = Board(&info); |
66 | newGame = false; | 72 | newGame = false; |
67 | 73 | ||
@@ -252,6 +258,8 @@ void GameState::Board::tick() | |||
252 | } | 258 | } |
253 | } | 259 | } |
254 | } | 260 | } |
261 | |||
262 | if (!info->doneMaking && ++gens > 100) info->doneMaking = true; | ||
255 | } | 263 | } |
256 | 264 | ||
257 | void GameState::Board::incrementIfNeighbor(int x, int y, bool temp[WIDTH][HEIGHT], int* tick) | 265 | void GameState::Board::incrementIfNeighbor(int x, int y, bool temp[WIDTH][HEIGHT], int* tick) |
diff --git a/gamestate.h b/gamestate.h index 5537b51..7d9d798 100644 --- a/gamestate.h +++ b/gamestate.h | |||
@@ -28,6 +28,7 @@ class GameState : public State { | |||
28 | struct Info { | 28 | struct Info { |
29 | int playerx, playery; | 29 | int playerx, playery; |
30 | Level level; | 30 | Level level; |
31 | bool doneMaking; | ||
31 | }; | 32 | }; |
32 | 33 | ||
33 | class Board | 34 | class Board |
@@ -36,6 +37,7 @@ class GameState : public State { | |||
36 | bool blocks[WIDTH][HEIGHT]; | 37 | bool blocks[WIDTH][HEIGHT]; |
37 | void incrementIfNeighbor(int x, int y, bool temp[WIDTH][HEIGHT], int* tick); | 38 | void incrementIfNeighbor(int x, int y, bool temp[WIDTH][HEIGHT], int* tick); |
38 | GameState::Info* info; | 39 | GameState::Info* info; |
40 | int gens; | ||
39 | 41 | ||
40 | public: | 42 | public: |
41 | Board(); | 43 | Board(); |