New end-game approach to Black Box. Instead of revealing the ball
[sgt/puzzles] / puzzles.h
index d41d964..c5eabc2 100644 (file)
--- 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,17 @@ 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);
 
 /*
  * version.c
@@ -265,7 +280,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);
@@ -301,7 +316,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;
 };