X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/937a9efffe3be5ecb6c6b9fb6596644d05aed3d9..056405ec880bda78929d5a163c9de0adfc31341b:/puzzles.h diff --git a/puzzles.h b/puzzles.h index e35bece..4762c7c 100644 --- a/puzzles.h +++ b/puzzles.h @@ -62,6 +62,10 @@ enum { /* Bit flags indicating mouse button priorities */ #define BUTTON_BEATS(x,y) ( 1 << (((x)-LEFT_BUTTON)*3+(y)-LEFT_BUTTON) ) +/* Another random flag that goes in the mouse priorities section for want + * of a better place to put it */ +#define SOLVE_ANIMATES ( 1 << 9 ) + #define IGNOREARG(x) ( (x) = (x) ) typedef struct frontend frontend; @@ -223,6 +227,19 @@ unsigned char *hex2bin(const char *in, int outlen); void game_mkhighlight(frontend *fe, float *ret, int background, int highlight, int lowlight); +/* Randomly shuffles an array of items. */ +void shuffle(void *array, int nelts, int eltsize, random_state *rs); + +/* Draw a rectangle outline, using the frontend's draw_line. */ +void draw_rect_outline(frontend *fe, int x, int y, int w, int h, + int colour); + +/* + * dsf.c + */ +int dsf_canonify(int *dsf, int val); +void dsf_merge(int *dsf, int v1, int v2); + /* * version.c */ @@ -232,6 +249,7 @@ extern char ver[]; * random.c */ random_state *random_init(char *seed, int len); +random_state *random_copy(random_state *tocopy); unsigned long random_bits(random_state *state, int bits); unsigned long random_upto(random_state *state, unsigned long limit); void random_free(random_state *state); @@ -305,7 +323,7 @@ struct game { game_ui *ui); int (*wants_statusbar)(void); int is_timed; - int (*timing_state)(game_state *state); + int (*timing_state)(game_state *state, game_ui *ui); int mouse_priorities; };