Subversion Repositories Kolibri OS

Rev

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;