CURSOR_DOWN_RIGHT
};
+#define IS_MOUSE_DOWN(m) ( (unsigned)((m) - LEFT_BUTTON) <= \
+ (unsigned)(RIGHT_BUTTON - LEFT_BUTTON))
+#define IS_MOUSE_DRAG(m) ( (unsigned)((m) - LEFT_DRAG) <= \
+ (unsigned)(RIGHT_DRAG - LEFT_DRAG))
+#define IS_MOUSE_RELEASE(m) ( (unsigned)((m) - LEFT_RELEASE) <= \
+ (unsigned)(RIGHT_RELEASE - LEFT_RELEASE))
+
#define IGNOREARG(x) ( (x) = (x) )
typedef struct frontend frontend;
/*
* For one-game-at-a-time platforms, there's a single structure
- * like the above, under a fixed name.
+ * like the above, under a fixed name. For all-at-once platforms,
+ * there's a list of all available puzzles in array form.
*/
-#ifndef COMBINED
+#ifdef COMBINED
+extern const game *gamelist[];
+extern const int gamecount;
+#else
extern const game thegame;
#endif