rnd-20070427-1-src
[rocksndiamonds.git] / src / main.h
index 1b877e7e31401e23a454b6a0b76bec2d27984ed7..bc09a36d9fb4abec2a1e980c43b12ccfa21709c6 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"
-#define PROGRAM_COPYRIGHT_STRING       "Copyright ©1995-2006 by Holger Schemel"
+#define PROGRAM_COPYRIGHT_STRING       "Copyright ©1995-2007 by Holger Schemel"
 #define PROGRAM_EMAIL_STRING           "info@artsoft.org"
 #define PROGRAM_WEBSITE_STRING         "http://www.artsoft.org/"
 #define PROGRAM_GAME_BY_STRING         "A Game by Artsoft Entertainment"
+#define PROGRAM_UNIX_DATADIR_STRING    ".rocksndiamonds"
+
+#if CREATE_SPECIAL_EDITION_RND_JUE
+#undef  PROGRAM_TITLE_STRING
+#define PROGRAM_TITLE_STRING           "R'n'D - Version Jue"
+#undef  PROGRAM_UNIX_DATADIR_STRING
+#define PROGRAM_UNIX_DATADIR_STRING    ".rocksndiamonds-jue"
+#endif
 
 #define ICON_TITLE_STRING              PROGRAM_TITLE_STRING
 #define COOKIE_PREFIX                  "ROCKSNDIAMONDS"
 
 #define USERDATA_DIRECTORY_WIN32       PROGRAM_TITLE_STRING
 #define USERDATA_DIRECTORY_MACOSX      PROGRAM_TITLE_STRING
-#define USERDATA_DIRECTORY_UNIX                ".rocksndiamonds"
+#define USERDATA_DIRECTORY_UNIX                PROGRAM_UNIX_DATADIR_STRING
 #define USERDATA_DIRECTORY_DOS         "userdata"
 
 #if defined(PLATFORM_WIN32)
 struct BorderInfo
 {
   boolean draw_masked[NUM_SPECIAL_GFX_ARGS];
+  boolean draw_masked_when_fading;
 };
 
 struct MenuMainButtonInfo
@@ -2098,12 +2130,19 @@ struct TitleMessageInfo
   int auto_delay;
 };
 
+struct InitInfo
+{
+  struct MenuPosInfo busy;
+};
+
 struct MenuInfo
 {
   int draw_xoffset[NUM_SPECIAL_GFX_ARGS];
   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 +2348,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 +2520,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 +2735,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;
@@ -2726,6 +2776,7 @@ extern struct TitleMessageInfo    titlemessage_initial[];
 extern struct TitleMessageInfo titlemessage_default;
 extern struct TitleMessageInfo titlemessage[];
 extern struct TitleMessageInfo readme;
+extern struct InitInfo         init;
 extern struct MenuInfo         menu;
 extern struct DoorInfo         door_1, door_2;
 extern struct PreviewInfo      preview;