Rev 5231 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5231 | Rev 5232 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | #include "board.h" |
1 | #include "board.h" |
- | 2 | #include "config.h" |
|
Line 2... | Line 3... | ||
2 | 3 | ||
3 | rect base_cell = {0}; |
4 | rect base_cell = {0}; |
Line 4... | Line 5... | ||
4 | tile null_tile = {0}; |
5 | tile null_tile = {0}; |
Line 8... | Line 9... | ||
8 | rect cell_map[BOARD_MAP_SIZE]; // background cells array |
9 | rect cell_map[BOARD_MAP_SIZE]; // background cells array |
9 | tile tile_map[BOARD_MAP_SIZE]; // tiles array |
10 | tile tile_map[BOARD_MAP_SIZE]; // tiles array |
10 | __u16 empty_index[BOARD_MAP_SIZE];// empty cells indexes |
11 | __u16 empty_index[BOARD_MAP_SIZE];// empty cells indexes |
11 | __u16 empty_count; // empty cells count |
12 | __u16 empty_count; // empty cells count |
12 | __u32 score; |
13 | __u32 score; |
- | 14 | __u32 highscore; |
|
13 | } board = {0}; |
15 | } board = {0}; |
Line 14... | Line 16... | ||
14 | 16 | ||
15 | // Get tile index for row and column |
17 | // Get tile index for row and column |
16 | __u16 board_index(__u16 row, __u16 column) { |
18 | __u16 board_index(__u16 row, __u16 column) { |
Line 54... | Line 56... | ||
54 | // Random number generator |
56 | // Random number generator |
55 | __u32 random_u32(__u32 max); |
57 | __u32 random_u32(__u32 max); |
Line 56... | Line 58... | ||
56 | 58 | ||
57 | void board_init(rect* r) |
59 | void board_init(rect* r) |
- | 60 | { |
|
- | 61 | __u32 high = config_load_highscore(); |
|
- | 62 | if (high > board.highscore) |
|
- | 63 | board.highscore = high; |
|
58 | { |
64 | |
59 | // seed for random number generator |
65 | // seed for random number generator |
Line 60... | Line 66... | ||
60 | srand(__menuet__getsystemclock()); |
66 | srand(__menuet__getsystemclock()); |
61 | 67 | ||
Line 90... | Line 96... | ||
90 | board_redraw(); |
96 | board_redraw(); |
91 | } |
97 | } |
Line 92... | Line 98... | ||
92 | 98 | ||
93 | void board_delete() |
99 | void board_delete() |
- | 100 | { |
|
94 | { |
101 | config_save_highscore(board.highscore); |
95 | canvas_delete(); |
102 | canvas_delete(); |
Line 96... | Line 103... | ||
96 | } |
103 | } |
97 | 104 | ||
Line 165... | Line 172... | ||
165 | } |
172 | } |
166 | else if (tile_mergeable(indtile,pretile)) |
173 | else if (tile_mergeable(indtile,pretile)) |
167 | { |
174 | { |
168 | moved = true; |
175 | moved = true; |
169 | board.score += indtile->value * 2; |
176 | board.score += indtile->value * 2; |
- | 177 | if (board.score > board.highscore) |
|
- | 178 | board.highscore = board.score; |
|
170 | tempboard_merge_tile(temp_board,ind,preind); |
179 | tempboard_merge_tile(temp_board,ind,preind); |
171 | row = 0; |
180 | row = 0; |
172 | } |
181 | } |
173 | } |
182 | } |
174 | } |
183 | } |
Line 215... | Line 224... | ||
215 | } |
224 | } |
216 | else if (tile_mergeable(indtile,pretile)) |
225 | else if (tile_mergeable(indtile,pretile)) |
217 | { |
226 | { |
218 | moved = true; |
227 | moved = true; |
219 | board.score += indtile->value * 2; |
228 | board.score += indtile->value * 2; |
- | 229 | if (board.score > board.highscore) |
|
- | 230 | board.highscore = board.score; |
|
220 | tempboard_merge_tile(temp_board,ind,preind); |
231 | tempboard_merge_tile(temp_board,ind,preind); |
221 | row = BOARD_COUNT; |
232 | row = BOARD_COUNT; |
222 | } |
233 | } |
223 | } |
234 | } |
224 | } |
235 | } |
Line 264... | Line 275... | ||
264 | } |
275 | } |
265 | else if (tile_mergeable(indtile,pretile)) |
276 | else if (tile_mergeable(indtile,pretile)) |
266 | { |
277 | { |
267 | moved = true; |
278 | moved = true; |
268 | board.score += indtile->value * 2; |
279 | board.score += indtile->value * 2; |
- | 280 | if (board.score > board.highscore) |
|
- | 281 | board.highscore = board.score; |
|
269 | tempboard_merge_tile(temp_board,ind,preind); |
282 | tempboard_merge_tile(temp_board,ind,preind); |
270 | column = 0; |
283 | column = 0; |
271 | } |
284 | } |
272 | } |
285 | } |
273 | } |
286 | } |
Line 314... | Line 327... | ||
314 | } |
327 | } |
315 | else if (tile_mergeable(indtile,pretile)) |
328 | else if (tile_mergeable(indtile,pretile)) |
316 | { |
329 | { |
317 | moved = true; |
330 | moved = true; |
318 | board.score += indtile->value * 2; |
331 | board.score += indtile->value * 2; |
- | 332 | if (board.score > board.highscore) |
|
- | 333 | board.highscore = board.score; |
|
319 | tempboard_merge_tile(temp_board,ind,preind); |
334 | tempboard_merge_tile(temp_board,ind,preind); |
320 | column = BOARD_COUNT; |
335 | column = BOARD_COUNT; |
321 | } |
336 | } |
322 | } |
337 | } |
323 | } |
338 | } |
Line 394... | Line 409... | ||
394 | __u32 board_score() |
409 | __u32 board_score() |
395 | { |
410 | { |
396 | return board.score; |
411 | return board.score; |
397 | } |
412 | } |
Line -... | Line 413... | ||
- | 413 | ||
- | 414 | __u32 board_highscore() |
|
- | 415 | { |
|
- | 416 | return board.highscore; |
|
- | 417 | } |
|
398 | 418 | ||
399 | void board_update_empty_info() |
419 | void board_update_empty_info() |
400 | { |
420 | { |
Line 401... | Line 421... | ||
401 | board.empty_count = 0; |
421 | board.empty_count = 0; |