rnd-20070420-2-src
[rocksndiamonds.git] / src / main.h
index 1b877e7e31401e23a454b6a0b76bec2d27984ed7..76304e2a2dc1c7f5f7832043576120bfe5e28fd1 100644 (file)
                                 (d) == MV_DOWN  ? "MV_DOWN"  : "(various)")
 
 #define ELEMENT_ACTIVE(e)      (ActiveElement[e])
-
+#define BUTTON_ACTIVE(b)       (ActiveButton[b])
 #define FONT_ACTIVE(f)         (ActiveFont[f])
 
 
 #define EL_BD_DEFAULT                  (EL_FIRST_DUMMY + 22)
 #define EL_SP_DEFAULT                  (EL_FIRST_DUMMY + 23)
 #define EL_SB_DEFAULT                  (EL_FIRST_DUMMY + 24)
+#define EL_GRAPHIC_1                   (EL_FIRST_DUMMY + 25)
+#define EL_GRAPHIC_2                   (EL_FIRST_DUMMY + 26)
+#define EL_GRAPHIC_3                   (EL_FIRST_DUMMY + 27)
+#define EL_GRAPHIC_4                   (EL_FIRST_DUMMY + 28)
+#define EL_GRAPHIC_5                   (EL_FIRST_DUMMY + 29)
+#define EL_GRAPHIC_6                   (EL_FIRST_DUMMY + 30)
+#define EL_GRAPHIC_7                   (EL_FIRST_DUMMY + 31)
+#define EL_GRAPHIC_8                   (EL_FIRST_DUMMY + 32)
 
 /* internal elements (only used for internal purposes like copying) */
-#define EL_FIRST_INTERNAL              (EL_FIRST_DUMMY + 25)
+#define EL_FIRST_INTERNAL              (EL_FIRST_DUMMY + 33)
 
 #define EL_INTERNAL_CLIPBOARD_CUSTOM   (EL_FIRST_INTERNAL + 0)
 #define EL_INTERNAL_CLIPBOARD_CHANGE   (EL_FIRST_INTERNAL + 1)
 
 #define NUM_SPECIAL_GFX_INFO_ARGS      8
 
+/* these additional definitions are currently only used for draw offsets */
+#define GFX_SPECIAL_ARG_SETUP_MAIN             0
+#define GFX_SPECIAL_ARG_SETUP_GAME             1
+#define GFX_SPECIAL_ARG_SETUP_EDITOR           2
+#define GFX_SPECIAL_ARG_SETUP_GRAPHICS         3
+#define GFX_SPECIAL_ARG_SETUP_SOUND            4
+#define GFX_SPECIAL_ARG_SETUP_ARTWORK          5
+#define GFX_SPECIAL_ARG_SETUP_INPUT            6
+#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS_1      7
+#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS_2      8
+#define GFX_SPECIAL_ARG_SETUP_CHOOSE_ARTWORK   9
+#define GFX_SPECIAL_ARG_SETUP_CHOOSE_OTHER     10
+
+#define NUM_SPECIAL_GFX_SETUP_ARGS             11
+
 
 /* values for image configuration suffixes */
 #define GFX_ARG_X                      0
 #define PROGRAM_VERSION_MAJOR          3
 #define PROGRAM_VERSION_MINOR          2
 #define PROGRAM_VERSION_PATCH          4
-#define PROGRAM_VERSION_BUILD          0
+#define PROGRAM_VERSION_BUILD          2
 
 #define PROGRAM_TITLE_STRING           "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING          "Holger Schemel"
 struct BorderInfo
 {
   boolean draw_masked[NUM_SPECIAL_GFX_ARGS];
+  boolean draw_masked_when_fading;
 };
 
 struct MenuMainButtonInfo
@@ -2104,6 +2128,8 @@ struct MenuInfo
   int draw_yoffset[NUM_SPECIAL_GFX_ARGS];
   int draw_xoffset_info[NUM_SPECIAL_GFX_INFO_ARGS];
   int draw_yoffset_info[NUM_SPECIAL_GFX_INFO_ARGS];
+  int draw_xoffset_setup[NUM_SPECIAL_GFX_SETUP_ARGS];
+  int draw_yoffset_setup[NUM_SPECIAL_GFX_SETUP_ARGS];
 
   int scrollbar_xoffset;
 
@@ -2309,6 +2335,13 @@ struct GlobalInfo
   float frames_per_second;
   boolean fps_slowdown;
   int fps_slowdown_factor;
+
+  /* global values for fading screens and masking borders */
+  int border_status;
+#if 0
+  int fading_status;
+  int fading_type;
+#endif
 };
 
 struct ElementChangeInfo
@@ -2474,6 +2507,9 @@ struct ElementInfo
 
   int collect_score;           /* runtime score value for collecting */
 
+  /* count of this element on playfield, calculated after each frame */
+  int element_count;
+
   /* ---------- internal values used in level editor ---------- */
 
   int access_type;             /* walkable or passable */
@@ -2686,6 +2722,7 @@ extern int                        GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern int                     GfxDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 
 extern int                     ActiveElement[MAX_NUM_ELEMENTS];
+extern int                     ActiveButton[NUM_IMAGE_FILES];
 extern int                     ActiveFont[NUM_FONTS];
 
 extern int                     lev_fieldx, lev_fieldy;