X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/3ff276f2cd88e6f3a6fe08f95f6147abbe3fcfd4..6c48bdb7986bd0ee81f14424fc5d6ef1ef6dc7fc:/puzzles.h diff --git a/puzzles.h b/puzzles.h index 57b5c33..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; @@ -218,6 +222,23 @@ void obfuscate_bitmap(unsigned char *bmp, int bits, int decode); char *bin2hex(const unsigned char *in, int inlen); unsigned char *hex2bin(const char *in, int outlen); +/* Sets (and possibly dims) background from frontend default colour, + * and auto-generates highlight and lowlight colours too. */ +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 @@ -228,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); @@ -301,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; };