rnd-20060430-1-src
[rocksndiamonds.git] / src / libgame / system.h
index 2883d1dc82d1de2a2a496920a1ade3656ce85a9d..174a95ed6cf46a4f986723b6c48b18ee8716725e 100644 (file)
 #define BUTTON_1                       4
 #define BUTTON_2                       5
 
+/* values for special "focus player" bitmasks */
+#define BIT_SET_FOCUS                  6
+
 /* values for move directions and special "button" key bitmasks */
 #define MV_NONE                        0
 #define MV_LEFT                        (1 << MV_BIT_LEFT)
 #define KEY_BUTTON             (KEY_BUTTON_1 | KEY_BUTTON_2)
 #define KEY_ACTION             (KEY_MOTION | KEY_BUTTON)
 
+#define KEY_SET_FOCUS          (1 << BIT_SET_FOCUS)
+
 #define MV_DIR_FROM_BIT(x)     ((x) < NUM_DIRECTIONS ? 1 << (x) :        \
                                 (x) == MV_BIT_UPLEFT    ? MV_UPLEFT    : \
                                 (x) == MV_BIT_UPRIGHT   ? MV_UPRIGHT   : \
 #define ANIM_CE_VALUE          (1 << 5)
 #define ANIM_CE_SCORE          (1 << 6)
 #define ANIM_REVERSE           (1 << 7)
+#define ANIM_OPAQUE_PLAYER     (1 << 8)
 
 /* values for special (non game element) animation modes */
-#define ANIM_HORIZONTAL                (1 << 8)
-#define ANIM_VERTICAL          (1 << 9)
-#define ANIM_STATIC_PANEL      (1 << 10)
+#define ANIM_HORIZONTAL                (1 << 9)
+#define ANIM_VERTICAL          (1 << 10)
+#define ANIM_STATIC_PANEL      (1 << 11)
 
 #define ANIM_DEFAULT           ANIM_LOOP
 
 #define CURSOR_DEFAULT         0
 #define CURSOR_PLAYFIELD       1
 
+/* fundamental game speed values */
+#define ONE_SECOND_DELAY       1000    /* delay value for one second */
+#define GAME_FRAME_DELAY       20      /* frame delay in milliseconds */
+#define FFWD_FRAME_DELAY       10      /* 200% speed for fast forward */
+#define FRAMES_PER_SECOND      (ONE_SECOND_DELAY / GAME_FRAME_DELAY)
 
 /* maximum playfield size supported by libgame functions */
 #define MAX_PLAYFIELD_WIDTH    128
 
 #define ARTWORK_FIRST_NODE(artwork, type)                              \
                                ((type) == ARTWORK_TYPE_GRAPHICS ?      \
-                                (artwork).gfx_first :  \
+                                (artwork).gfx_first :                  \
                                 (type) == ARTWORK_TYPE_SOUNDS ?        \
-                                (artwork).snd_first :  \
+                                (artwork).snd_first :                  \
                                 (artwork).mus_first)
 
 #define ARTWORK_CURRENT_IDENTIFIER_PTR(artwork, type)                  \
@@ -550,9 +561,13 @@ struct AudioSystemInfo
 struct FontBitmapInfo
 {
   Bitmap *bitmap;
+
   int src_x, src_y;            /* start position of animation frames */
   int width, height;           /* width/height of each animation frame */
-  int draw_x, draw_y;          /* offset for drawing font characters */
+
+  int draw_xoffset;            /* offset for drawing font characters */
+  int draw_yoffset;            /* offset for drawing font characters */
+
   int num_chars;
   int num_chars_per_line;
 
@@ -634,6 +649,8 @@ struct SetupEditorInfo
   boolean el_dynamic;
 
   boolean el_headlines;
+
+  boolean show_element_token;
 };
 
 struct SetupEditorCascadeInfo
@@ -693,6 +710,8 @@ struct SetupInfo
   boolean ask_on_escape;
   boolean ask_on_escape_editor;
   boolean quick_switch;
+  boolean input_on_focus;
+  boolean prefer_aga_graphics;
 
   char *graphics_set;
   char *sounds_set;
@@ -733,6 +752,8 @@ struct TreeInfo
   char *imported_from; /* optional comment for imported levels or artwork */
   char *imported_by;   /* optional comment for imported levels or artwork */
 
+  char *graphics_set_ecs; /* special EMC custom graphics set (ECS graphics) */
+  char *graphics_set_aga; /* special EMC custom graphics set (AGA graphics) */
   char *graphics_set;  /* optional custom graphics set (level tree only) */
   char *sounds_set;    /* optional custom sounds set (level tree only) */
   char *music_set;     /* optional custom music set (level tree only) */
@@ -977,6 +998,7 @@ void ReloadCustomImage(Bitmap *, char *);
 
 Bitmap *ZoomBitmap(Bitmap *, int, int);
 void CreateBitmapWithSmallBitmaps(Bitmap *, int);
+void ScaleBitmap(Bitmap *, int);
 
 void SetMouseCursor(int);