316
316
typedef void (*egc_callback)(void *, struct grid_square *);
318
static void enum_grid_squares(game_params *params, egc_callback callback, void *ctx)
318
static void enum_grid_squares(const game_params *params, egc_callback callback,
320
321
const struct solid *solid = solids[params->solid];
481
482
return d1*d1 + d2*d2 + 4*d1*d2;
484
static config_item *game_configure(game_params *params)
485
static config_item *game_configure(const game_params *params)
486
487
config_item *ret = snewn(4, config_item);
597
598
data->squareindex++;
600
static char *new_game_desc(game_params *params, random_state *rs,
601
static char *new_game_desc(const game_params *params, random_state *rs,
601
602
char **aux, int interactive)
603
604
struct grid_data data;
848
static char *validate_desc(game_params *params, char *desc)
849
static char *validate_desc(const game_params *params, const char *desc)
850
851
int area = grid_area(params->d1, params->d2, solids[params->solid]->order);
876
static game_state *new_game(midend *me, game_params *params, char *desc)
877
static game_state *new_game(midend *me, const game_params *params,
878
880
game_grid *grid = snew(game_grid);
879
881
game_state *state = snew(game_state);
1004
static char *solve_game(game_state *state, game_state *currstate,
1005
char *aux, char **error)
1006
static char *solve_game(const game_state *state, const game_state *currstate,
1007
const char *aux, char **error)
1010
static int game_can_format_as_text_now(game_params *params)
1012
static int game_can_format_as_text_now(const game_params *params)
1015
static char *game_text_format(game_state *state)
1017
static char *game_text_format(const game_state *state)
1020
static game_ui *new_ui(game_state *state)
1022
static game_ui *new_ui(const game_state *state)
1029
static char *encode_ui(game_ui *ui)
1031
static char *encode_ui(const game_ui *ui)
1034
static void decode_ui(game_ui *ui, char *encoding)
1036
static void decode_ui(game_ui *ui, const char *encoding)
1038
static void game_changed_state(game_ui *ui, game_state *oldstate,
1039
game_state *newstate)
1040
static void game_changed_state(game_ui *ui, const game_state *oldstate,
1041
const game_state *newstate)
1049
1051
* Code shared between interpret_move() and execute_move().
1051
static int find_move_dest(game_state *from, int direction,
1053
static int find_move_dest(const game_state *from, int direction,
1052
1054
int *skey, int *dkey)
1054
1056
int mask, dest, i, j;
1103
static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds,
1104
int x, int y, int button)
1105
static char *interpret_move(const game_state *state, game_ui *ui,
1106
const game_drawstate *ds,
1107
int x, int y, int button)
1106
1109
int direction, mask, i;
1107
1110
int skey[2], dkey[2];
1484
1487
#define YSIZE(gs, bb, solid) \
1485
1488
((int)(((bb).d - (bb).u + 2*(solid)->border) * gs))
1487
static void game_compute_size(game_params *params, int tilesize,
1490
static void game_compute_size(const game_params *params, int tilesize,
1490
1493
struct bbox bb = find_bbox(params);
1496
1499
static void game_set_size(drawing *dr, game_drawstate *ds,
1497
game_params *params, int tilesize)
1500
const game_params *params, int tilesize)
1499
1502
struct bbox bb = find_bbox(params);
1524
static game_drawstate *game_new_drawstate(drawing *dr, game_state *state)
1527
static game_drawstate *game_new_drawstate(drawing *dr, const game_state *state)
1526
1529
struct game_drawstate *ds = snew(struct game_drawstate);
1539
static void game_redraw(drawing *dr, game_drawstate *ds, game_state *oldstate,
1540
game_state *state, int dir, game_ui *ui,
1542
static void game_redraw(drawing *dr, game_drawstate *ds,
1543
const game_state *oldstate, const game_state *state,
1544
int dir, const game_ui *ui,
1541
1545
float animtime, float flashtime)
1544
1548
struct bbox bb = find_bbox(&state->params);
1545
1549
struct solid *poly;
1550
const int *pkey, *gkey;
1699
static float game_anim_length(game_state *oldstate,
1700
game_state *newstate, int dir, game_ui *ui)
1703
static float game_anim_length(const game_state *oldstate,
1704
const game_state *newstate, int dir, game_ui *ui)
1702
1706
return ROLLTIME;
1705
static float game_flash_length(game_state *oldstate,
1706
game_state *newstate, int dir, game_ui *ui)
1709
static float game_flash_length(const game_state *oldstate,
1710
const game_state *newstate, int dir, game_ui *ui)
1711
static int game_status(game_state *state)
1715
static int game_status(const game_state *state)
1713
1717
return state->completed ? +1 : 0;
1716
static int game_timing_state(game_state *state, game_ui *ui)
1720
static int game_timing_state(const game_state *state, game_ui *ui)
1721
static void game_print_size(game_params *params, float *x, float *y)
1725
static void game_print_size(const game_params *params, float *x, float *y)
1725
static void game_print(drawing *dr, game_state *state, int tilesize)
1729
static void game_print(drawing *dr, const game_state *state, int tilesize)