added new animation mode "level_nr" to select frame according to level
[rocksndiamonds.git] / src / libgame / system.h
index 02e58143fbb6668351aa67cc480da745574f1a45..f321f217c0d16e71d044d25d017bb08df390d50d 100644 (file)
 // values for drawing stages for global animations
 #define DRAW_GLOBAL_ANIM_STAGE_1       1
 #define DRAW_GLOBAL_ANIM_STAGE_2       2
+#define DRAW_GLOBAL_ANIM_STAGE_3       3
+#define DRAW_GLOBAL_ANIM_STAGE_RESTART 4
 
 // values for drawing target (various functions)
 #define DRAW_TO_BACKBUFFER             0
 #define ANIM_CE_DELAY          (1 << 7)
 #define ANIM_REVERSE           (1 << 8)
 #define ANIM_OPAQUE_PLAYER     (1 << 9)
+#define ANIM_LEVEL_NR          (1 << 10)
 
 // values for special (non game element) animation modes
 // (not stored in level files -- can be changed, if needed)
-#define ANIM_HORIZONTAL                (1 << 10)
-#define ANIM_VERTICAL          (1 << 11)
-#define ANIM_CENTERED          (1 << 12)
-#define ANIM_STATIC_PANEL      (1 << 13)
-#define ANIM_ALL               (1 << 14)
-#define ANIM_ONCE              (1 << 15)
-#define ANIM_TILED             (1 << 16)
-#define ANIM_RANDOM_STATIC     (1 << 17)
+#define ANIM_HORIZONTAL                (1 << 11)
+#define ANIM_VERTICAL          (1 << 12)
+#define ANIM_CENTERED          (1 << 13)
+#define ANIM_STATIC_PANEL      (1 << 14)
+#define ANIM_ALL               (1 << 15)
+#define ANIM_ONCE              (1 << 16)
+#define ANIM_TILED             (1 << 17)
+#define ANIM_RANDOM_STATIC     (1 << 18)
 
 #define ANIM_DEFAULT           ANIM_LOOP
 
+// values for special global animation events
+#define ANIM_EVENT_UNDEFINED   -1
+#define ANIM_EVENT_NONE                0
+#define ANIM_EVENT_SELF                (1 << 0)
+#define ANIM_EVENT_ANY         (1 << 1)
+#define ANIM_EVENT_CLICK       (1 << 2)
+#define ANIM_EVENT_INIT                (1 << 3)
+#define ANIM_EVENT_START       (1 << 4)
+#define ANIM_EVENT_END         (1 << 5)
+#define ANIM_EVENT_POST                (1 << 6)
+#define ANIM_EVENT_UNCLICK_ANY (1 << 7)
+#define ANIM_EVENT_CE_CHANGE   (1 << 8)
+
+// event mask:  bits 0-15
+// CE number:   bits 16-23
+// anim number: bits 16-23
+// page number: bits 24-31
+// part number: bits 24-31
+#define ANIM_EVENT_CE_BIT      16
+#define ANIM_EVENT_ANIM_BIT    16
+#define ANIM_EVENT_PAGE_BIT    24
+#define ANIM_EVENT_PART_BIT    24
+
+#define ANIM_EVENT_CE_MASK     (0xff << ANIM_EVENT_CE_BIT)
+#define ANIM_EVENT_ANIM_MASK   (0xff << ANIM_EVENT_ANIM_BIT)
+#define ANIM_EVENT_PAGE_MASK   (0xff << ANIM_EVENT_PAGE_BIT)
+#define ANIM_EVENT_PART_MASK   (0xff << ANIM_EVENT_PART_BIT)
+
+#define ANIM_EVENT_DEFAULT     ANIM_EVENT_NONE
+
+// values for special global animation event actions
+#define ANIM_EVENT_ACTION_NONE -1
+
+// values for special global animation delay types
+#define ANIM_DELAY_UNDEFINED   -1
+#define ANIM_DELAY_NONE                0
+#define ANIM_DELAY_INIT                1
+#define ANIM_DELAY_ANIM                2
+#define ANIM_DELAY_POST                3
+
+// values for special global animation delay actions
+#define ANIM_DELAY_ACTION_NONE -1
+
 // values for special drawing styles and event handling
 #define STYLE_NONE             0
 
 #define STYLE_BLOCK            (1 << 4)
 #define STYLE_PASSTHROUGH      (1 << 5)
 #define STYLE_MULTIPLE_ACTIONS (1 << 6)
+#define STYLE_CONSUME_CE_EVENT (1 << 7)
 
 #define STYLE_DEFAULT          STYLE_NONE
 
-// values for special global animation delay types
-#define ANIM_DELAY_UNDEFINED   -1
-#define ANIM_DELAY_NONE                0
-#define ANIM_DELAY_INIT                1
-#define ANIM_DELAY_ANIM                2
-#define ANIM_DELAY_POST                3
-
-// values for special global animation delay actions
-#define ANIM_DELAY_ACTION_NONE -1
-
-// values for special global animation events
-#define ANIM_EVENT_UNDEFINED   -1
-#define ANIM_EVENT_NONE                0
-#define ANIM_EVENT_SELF                (1 << 16)
-#define ANIM_EVENT_ANY         (1 << 17)
-#define ANIM_EVENT_CLICK       (1 << 18)
-#define ANIM_EVENT_INIT                (1 << 19)
-#define ANIM_EVENT_START       (1 << 20)
-#define ANIM_EVENT_END         (1 << 21)
-#define ANIM_EVENT_POST                (1 << 22)
-#define ANIM_EVENT_UNCLICK_ANY (1 << 23)
-
-// anim number: bits 0-7
-// part number: bits 8-15
-#define ANIM_EVENT_ANIM_BIT    0
-#define ANIM_EVENT_PART_BIT    8
-
-#define ANIM_EVENT_ANIM_MASK   (0xff << ANIM_EVENT_ANIM_BIT)
-#define ANIM_EVENT_PART_MASK   (0xff << ANIM_EVENT_PART_BIT)
-
-#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)
 #define POS_LOWER              5
 #define POS_BOTTOM             6
 #define POS_ANY                        7
-#define POS_LAST               8
+#define POS_CE                 8
+#define POS_LAST               9
 
 // values for text alignment
 #define ALIGN_LEFT             (1 << 0)
@@ -1232,6 +1245,7 @@ struct GfxInfo
   void (*draw_global_anim_function)(int, int);
   void (*draw_global_border_function)(int);
   void (*draw_tile_cursor_function)(int);
+  void (*draw_envelope_request_function)(int);
 
   int cursor_mode;
   int cursor_mode_override;
@@ -1966,6 +1980,7 @@ void InitGfxDrawBusyAnimFunction(void (*draw_busy_anim_function)(boolean));
 void InitGfxDrawGlobalAnimFunction(void (*draw_global_anim_function)(int, int));
 void InitGfxDrawGlobalBorderFunction(void (*draw_global_border_function)(int));
 void InitGfxDrawTileCursorFunction(void (*draw_tile_cursor_function)(int));
+void InitGfxDrawEnvelopeRequestFunction(void (*draw_envelope_request_function)(int));
 void InitGfxCustomArtworkInfo(void);
 void InitGfxOtherSettings(void);
 void InitTileCursorInfo(void);