added "passthrough" option for clickable global animations
[rocksndiamonds.git] / src / libgame / system.h
index 88df586da83d553995800bd2767552197b33418e..e396a369212db4e87817f1a6f8b7e8d5e063ff80 100644 (file)
 #define STYLE_INNER_CORNERS    (1 << 1)
 #define STYLE_REVERSE          (1 << 2)
 
+/* values for special event handling style (used for global animation) */
+#define STYLE_PASSTHROUGH      (1 << 3)
+
 #define STYLE_DEFAULT          STYLE_NONE
 
 /* values for special global animation events */
 
 #define ANIM_EVENT_DEFAULT     ANIM_EVENT_NONE
 
+/* values for special global animation event actions */
+#define ANIM_EVENT_ACTION_NONE -1
+
 /* values for fade mode */
 #define FADE_TYPE_NONE         0
 #define FADE_TYPE_FADE_IN      (1 << 0)
                                                GRID_REAL_HEIGHT),      \
                                            MAX_GRID_YSIZE)
 
-#define DEFAULT_GRID_XSIZE(n)          (n == 0 ? DEFAULT_GRID_XSIZE_0 : \
+#define DEFAULT_GRID_XSIZE(n)          ((n) == 0 ? DEFAULT_GRID_XSIZE_0 : \
                                         DEFAULT_GRID_XSIZE_1)
-#define DEFAULT_GRID_YSIZE(n)          (n == 0 ? DEFAULT_GRID_YSIZE_0 : \
+#define DEFAULT_GRID_YSIZE(n)          ((n) == 0 ? DEFAULT_GRID_YSIZE_0 : \
                                         DEFAULT_GRID_YSIZE_1)
 
 #define GRID_ACTIVE_NR()               (video.screen_width >   \
 #define CHAR_GRID_BUTTON_SNAP          '1'
 #define CHAR_GRID_BUTTON_DROP          '2'
 
+#define GET_ACTION_FROM_GRID_BUTTON(c) ((c) == CHAR_GRID_BUTTON_LEFT ?  \
+                                        JOY_LEFT :                      \
+                                        (c) == CHAR_GRID_BUTTON_RIGHT ? \
+                                        JOY_RIGHT :                     \
+                                        (c) == CHAR_GRID_BUTTON_UP ?    \
+                                        JOY_UP :                        \
+                                        (c) == CHAR_GRID_BUTTON_DOWN ?  \
+                                        JOY_DOWN :                      \
+                                        (c) == CHAR_GRID_BUTTON_SNAP ?  \
+                                        JOY_BUTTON_1 :                  \
+                                        (c) == CHAR_GRID_BUTTON_DROP ?  \
+                                        JOY_BUTTON_2 :                  \
+                                        JOY_NO_ACTION)
+
 /* default name for empty highscore entry */
 #define EMPTY_PLAYER_NAME      "no name"
 
@@ -1025,6 +1045,8 @@ struct OverlayInfo
 
   char grid_button[MAX_GRID_XSIZE][MAX_GRID_YSIZE];
   char grid_button_highlight;
+
+  int grid_button_action;
 };
 
 struct JoystickInfo
@@ -1060,6 +1082,8 @@ struct SetupTouchInfo
   char grid_button[2][MAX_GRID_XSIZE][MAX_GRID_YSIZE];
 
   int transparency;            /* in percent (0 == opaque, 100 == invisible) */
+  boolean draw_outlined;
+  boolean draw_pressed;
 
   boolean grid_initialized;
 };