Add Dominosa printout support.
[sgt/puzzles] / puzzles.h
index 57445ab..1c3ae59 100644 (file)
--- a/puzzles.h
+++ b/puzzles.h
@@ -218,6 +218,13 @@ 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);
 
 /*
  * version.c
@@ -265,7 +272,7 @@ struct game {
     int can_configure;
     config_item *(*configure)(game_params *params);
     game_params *(*custom_params)(config_item *cfg);
-    char *(*validate_params)(game_params *params);
+    char *(*validate_params)(game_params *params, int full);
     char *(*new_desc)(game_params *params, random_state *rs,
                      char **aux, int interactive);
     char *(*validate_desc)(game_params *params, char *desc);
@@ -286,8 +293,9 @@ struct game {
     char *(*interpret_move)(game_state *state, game_ui *ui, game_drawstate *ds,
                            int x, int y, int button);
     game_state *(*execute_move)(game_state *state, char *move);
-    void (*size)(game_params *params, game_drawstate *ds, int *x, int *y,
-                 int expand);
+    int preferred_tilesize;
+    void (*compute_size)(game_params *params, int tilesize, int *x, int *y);
+    void (*set_size)(game_drawstate *ds, game_params *params, int tilesize);
     float *(*colours)(frontend *fe, game_state *state, int *ncolours);
     game_drawstate *(*new_drawstate)(game_state *state);
     void (*free_drawstate)(game_drawstate *ds);
@@ -300,7 +308,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;
 };