rnd-20080122-1-src
[rocksndiamonds.git] / src / main.h
index ade881e0e392d1e4921efcb24c6b632b5189a1b1..3f88801ccdb440ae79b8d6671371a41cebb798b2 100644 (file)
 #define MAX_LEV_FIELDX                 MAX_PLAYFIELD_WIDTH
 #define MAX_LEV_FIELDY                 MAX_PLAYFIELD_HEIGHT
 
+#define MIN_SCROLL_DELAY               0
+#define STD_SCROLL_DELAY               3
+#define MAX_SCROLL_DELAY               8
+
 #define SCREENX(a)                     ((a) - scroll_x)
 #define SCREENY(a)                     ((a) - scroll_y)
 #define LEVELX(a)                      ((a) + scroll_x)
 #define EP_THROWABLE                   28
 #define EP_CAN_EXPLODE                 29
 #define EP_GRAVITY_REACHABLE           30
+#define EP_DONT_GET_HIT_BY             31
 
 /* values for pre-defined properties */
 /* (from here on, values can be changed by inserting new values) */
 #define IS_THROWABLE(e)                HAS_PROPERTY(e, EP_THROWABLE)
 #define CAN_EXPLODE(e)         HAS_PROPERTY(e, EP_CAN_EXPLODE)
 #define IS_GRAVITY_REACHABLE(e)        HAS_PROPERTY(e, EP_GRAVITY_REACHABLE)
+#define DONT_GET_HIT_BY(e)     HAS_PROPERTY(e, EP_DONT_GET_HIT_BY)
 
 /* macros for special configurable properties */
 #define IS_EM_SLIPPERY_WALL(e) HAS_PROPERTY(e, EP_EM_SLIPPERY_WALL)
 #define IS_OBSOLETE(e)         HAS_PROPERTY(e, EP_OBSOLETE)
 
 /* special macros used in game engine */
+#define IS_FILE_ELEMENT(e)     ((e) >= 0 &&                            \
+                                (e) <= NUM_FILE_ELEMENTS)
+
+#define IS_DRAWABLE_ELEMENT(e) ((e) >= 0 &&                            \
+                                (e) <= NUM_DRAWABLE_ELEMENTS)
+
+#define IS_RUNTIME_ELEMENT(e)  ((e) >= 0 &&                            \
+                                (e) <= NUM_RUNTIME_ELEMENTS)
+
+#define IS_VALID_ELEMENT(e)    ((e) >= 0 &&                            \
+                                (e) <= MAX_NUM_ELEMENTS)
+
 #define IS_CUSTOM_ELEMENT(e)   ((e) >= EL_CUSTOM_START &&              \
                                 (e) <= EL_CUSTOM_END)
 
 #define EM_KEY_NR(e)           ((e) - EL_EM_KEY_1)
 #define EMC_KEY_NR(e)          ((e) - EL_EMC_KEY_5 + 4)
 #define KEY_NR(e)              (IS_RND_KEY(e) ? RND_KEY_NR(e) :        \
-                                IS_EM_KEY(e) ?  EM_KEY_NR(e) :         \
+                                IS_EM_KEY(e)  ? EM_KEY_NR(e)  :        \
                                 IS_EMC_KEY(e) ? EMC_KEY_NR(e) : 0)
 
 #define IS_RND_GATE(e)         ((e) >= EL_GATE_1 &&                    \
 
 #define IS_LOOP_SOUND(s)       (sound_info[s].loop)
 
+#define IS_SPECIAL_GFX_ARG(a)  ((a) >= 0 && (a) < NUM_SPECIAL_GFX_ARGS)
+
 #define EL_CASCADE_ACTIVE(e)   (IS_EDITOR_CASCADE_INACTIVE(e) ? (e) + 1 : (e))
 #define EL_CASCADE_INACTIVE(e) (IS_EDITOR_CASCADE_ACTIVE(e)   ? (e) - 1 : (e))
 #define EL_CASCADE_TOGGLE(e)   (IS_EDITOR_CASCADE_INACTIVE(e) ? (e) + 1 :    \
                                 (d) == MV_UP    ? "MV_UP"    :         \
                                 (d) == MV_DOWN  ? "MV_DOWN"  : "(various)")
 
+#define ELEMENT_ACTIVE(e)      (ActiveElement[e])
+#define BUTTON_ACTIVE(b)       (ActiveButton[b])
+#define FONT_ACTIVE(f)         (ActiveFont[f])
+
+
 /* fundamental game speed values */
 #define MICROLEVEL_SCROLL_DELAY        50      /* delay for scrolling micro level */
 #define MICROLEVEL_LABEL_DELAY 250     /* delay for micro level label */
 
 #define MAX_NUM_AMOEBA         100
 
-#define NUM_BELTS              4
-#define NUM_BELT_PARTS         3
 #define NUM_ENVELOPES          4
 #define MIN_ENVELOPE_XSIZE     1
 #define MIN_ENVELOPE_YSIZE     1
 #define MICROLABEL1_YPOS       (MICROLEVEL_YPOS - 36)
 #define MICROLABEL2_YPOS       (MICROLEVEL_YPOS + MICROLEVEL_YSIZE + 7)
 
+/* values for GfxRedraw */
+#define GFX_REDRAW_NONE                                (0)
+#define GFX_REDRAW_TILE                                (1 << 0)
+#define GFX_REDRAW_TILE_CRUMBLED               (1 << 1)
+#define GFX_REDRAW_TILE_CRUMBLED_NEIGHBOURS    (1 << 2)
+#define GFX_REDRAW_TILE_TWINKLED               (1 << 3)
 
 /* score for elements */
 #define SC_EMERALD             0
 #define EL_EMC_DRIPPER_ACTIVE          (EL_FIRST_RUNTIME_REAL + 70)
 #define EL_EMC_SPRING_BUMPER_ACTIVE    (EL_FIRST_RUNTIME_REAL + 71)
 
+#define NUM_DRAWABLE_ELEMENTS          (EL_FIRST_RUNTIME_REAL + 72)
+
 /* "unreal" (and therefore not drawable) runtime elements */
-#define EL_FIRST_RUNTIME_UNREAL                (EL_FIRST_RUNTIME_REAL + 72)
+#define EL_FIRST_RUNTIME_UNREAL                (NUM_DRAWABLE_ELEMENTS)
 
 #define EL_BLOCKED                     (EL_FIRST_RUNTIME_UNREAL + 0)
 #define EL_EXPLOSION                   (EL_FIRST_RUNTIME_UNREAL + 1)
 #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)
 
 /* values for special image configuration suffixes (must match game mode) */
 #define GFX_SPECIAL_ARG_DEFAULT                0
-#define GFX_SPECIAL_ARG_TITLE          1
-#define GFX_SPECIAL_ARG_MESSAGE                2
-#define GFX_SPECIAL_ARG_MAIN           3
-#define GFX_SPECIAL_ARG_LEVELS         4
-#define GFX_SPECIAL_ARG_SCORES         5
-#define GFX_SPECIAL_ARG_EDITOR         6
-#define GFX_SPECIAL_ARG_INFO           7
-#define GFX_SPECIAL_ARG_SETUP          8
-#define GFX_SPECIAL_ARG_PLAYING                9
-#define GFX_SPECIAL_ARG_DOOR           10
-#define GFX_SPECIAL_ARG_PREVIEW                11
-#define GFX_SPECIAL_ARG_CRUMBLED       12
-
-#define NUM_SPECIAL_GFX_ARGS           13
+#define GFX_SPECIAL_ARG_LOADING                1
+#define GFX_SPECIAL_ARG_TITLE_INITIAL  2
+#define GFX_SPECIAL_ARG_TITLE          3
+#define GFX_SPECIAL_ARG_MAIN           4
+#define GFX_SPECIAL_ARG_LEVELS         5
+#define GFX_SPECIAL_ARG_SCORES         6
+#define GFX_SPECIAL_ARG_EDITOR         7
+#define GFX_SPECIAL_ARG_INFO           8
+#define GFX_SPECIAL_ARG_SETUP          9
+#define GFX_SPECIAL_ARG_PLAYING                10
+#define GFX_SPECIAL_ARG_DOOR           11
+#define GFX_SPECIAL_ARG_PANEL          12
+#define GFX_SPECIAL_ARG_PREVIEW                13
+#define GFX_SPECIAL_ARG_CRUMBLED       14
+
+#define NUM_SPECIAL_GFX_ARGS           15
 
 /* these additional definitions are currently only used for draw offsets */
 #define GFX_SPECIAL_ARG_INFO_MAIN      0
 
 #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 GFX_ARG_NAME                   36
 #define GFX_ARG_SCALE_UP_FACTOR                37
 #define GFX_ARG_CLONE_FROM             38
-#define GFX_ARG_FADE_DELAY             39
-#define GFX_ARG_POST_DELAY             40
-#define GFX_ARG_AUTO_DELAY             41
-#define GFX_ARG_ALIGN                  42
-#define GFX_ARG_SORT_PRIORITY          43
+#define GFX_ARG_FADE_MODE              39
+#define GFX_ARG_FADE_DELAY             40
+#define GFX_ARG_POST_DELAY             41
+#define GFX_ARG_AUTO_DELAY             42
+#define GFX_ARG_ALIGN                  43
+#define GFX_ARG_VALIGN                 44
+#define GFX_ARG_SORT_PRIORITY          45
 
-#define NUM_GFX_ARGS                   44
+#define NUM_GFX_ARGS                   46
 
 
 /* values for sound configuration suffixes */
 #define NUM_FONTS                      37
 #define NUM_INITIAL_FONTS              4
 
+#if 0
 #define FONT_ACTIVE(f)                                                   \
        ((f) == FONT_MENU_1             ? FONT_MENU_1_ACTIVE            : \
         (f) == FONT_MENU_2             ? FONT_MENU_2_ACTIVE            : \
         (f) == FONT_INPUT_2            ? FONT_INPUT_2_ACTIVE           : \
         (f) == FONT_LEVEL_NUMBER       ? FONT_LEVEL_NUMBER_ACTIVE      : \
         (f))
-
+#endif
 
 /* values for game_status (must match special image configuration suffixes) */
 #define GAME_MODE_DEFAULT              0
-#define GAME_MODE_TITLE                        1
-#define GAME_MODE_MESSAGE              2
-#define GAME_MODE_MAIN                 3
-#define GAME_MODE_LEVELS               4
-#define GAME_MODE_SCORES               5
-#define GAME_MODE_EDITOR               6
-#define GAME_MODE_INFO                 7
-#define GAME_MODE_SETUP                        8
-#define GAME_MODE_PLAYING              9
-#define GAME_MODE_PSEUDO_DOOR          10
-#define GAME_MODE_PSEUDO_PREVIEW       11
-#define GAME_MODE_PSEUDO_CRUMBLED      12
+#define GAME_MODE_LOADING              1
+#define GAME_MODE_TITLE_INITIAL                2
+#define GAME_MODE_TITLE                        3
+#define GAME_MODE_MAIN                 4
+#define GAME_MODE_LEVELS               5
+#define GAME_MODE_SCORES               6
+#define GAME_MODE_EDITOR               7
+#define GAME_MODE_INFO                 8
+#define GAME_MODE_SETUP                        9
+#define GAME_MODE_PLAYING              10
+#define GAME_MODE_PSEUDO_DOOR          11
+#define GAME_MODE_PSEUDO_PANEL         12
+#define GAME_MODE_PSEUDO_PREVIEW       13
+#define GAME_MODE_PSEUDO_CRUMBLED      14
 
 /* there are no special config file suffixes for these modes */
-#define GAME_MODE_PSEUDO_TYPENAME      13
-#define GAME_MODE_QUIT                 14
+#define GAME_MODE_PSEUDO_TYPENAME      15
+#define GAME_MODE_QUIT                 16
 
 /* special definitions currently only used for custom artwork configuration */
 #define MUSIC_PREFIX_BACKGROUND                0
 /* program information and versioning definitions */
 #define PROGRAM_VERSION_MAJOR          3
 #define PROGRAM_VERSION_MINOR          2
-#define PROGRAM_VERSION_PATCH          4
+#define PROGRAM_VERSION_PATCH          5
 #define PROGRAM_VERSION_BUILD          0
 
 #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-2008 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 defined(CREATE_SPECIAL_EDITION_RND_JUE)
+#undef  PROGRAM_TITLE_STRING
+#define PROGRAM_TITLE_STRING           "R'n'D jue"
+#undef  PROGRAM_UNIX_DATADIR_STRING
+#define PROGRAM_UNIX_DATADIR_STRING    ".rnd_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;
 };
 
-#if 0
-struct MenuPosInfo
-{
-  int x, y;
-  int width, height;
-  int align;
-};
-#endif
-
 struct MenuMainButtonInfo
 {
   struct MenuPosInfo name;
@@ -2025,9 +2086,9 @@ struct MenuMainTextInfo
   struct TextPosInfo setup;
   struct TextPosInfo quit;
 
-  struct TextPosInfo current_level;
   struct TextPosInfo first_level;
   struct TextPosInfo last_level;
+  struct TextPosInfo level_number;
   struct TextPosInfo level_info_1;
   struct TextPosInfo level_info_2;
   struct TextPosInfo level_name;
@@ -2053,30 +2114,35 @@ struct MenuMainInfo
   struct MenuMainInputInfo input;
 };
 
-struct TitleInfo
+struct TitleFadingInfo
 {
+  int fade_mode;
   int fade_delay;
   int post_delay;
   int auto_delay;
-
-  int fade_delay_final;
-  int post_delay_final;
-  int auto_delay_final;
 };
 
 struct TitleMessageInfo
 {
-  int x;
-  int y;
-  int width;
-  int height;
-  int chars;
-  int lines;
-  int align;
+  int x, y;
+  int width, height;
+  int chars, lines;
+  int align, valign;
+  int font;
   boolean autowrap;
   boolean centered;
-  boolean skip_comments;
+  boolean parse_comments;
   int sort_priority;
+
+  int fade_mode;
+  int fade_delay;
+  int post_delay;
+  int auto_delay;
+};
+
+struct InitInfo
+{
+  struct MenuPosInfo busy;
 };
 
 struct MenuInfo
@@ -2085,14 +2151,18 @@ 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;
 
   int list_size[NUM_SPECIAL_GFX_ARGS];
 
-  int fade_delay;
-  int post_delay;
-  int auto_delay;
+  struct TitleFadingInfo enter_menu;
+  struct TitleFadingInfo leave_menu;
+  struct TitleFadingInfo enter_screen[NUM_SPECIAL_GFX_ARGS];
+  struct TitleFadingInfo leave_screen[NUM_SPECIAL_GFX_ARGS];
+  struct TitleFadingInfo next_screen;
 
   int sound[NUM_SPECIAL_GFX_ARGS];
   int music[NUM_SPECIAL_GFX_ARGS];
@@ -2112,7 +2182,7 @@ struct DoorInfo
 struct PreviewInfo
 {
   int x, y;
-  int align;
+  int align, valign;
   int xsize, ysize;
   int xoffset, yoffset;
   int tile_size;
@@ -2254,6 +2324,7 @@ struct LevelInfo
   boolean use_spring_bug;      /* for compatibility with old levels */
   boolean use_time_orb_bug;    /* for compatibility with old levels */
   boolean instant_relocation;  /* no visual delay when relocating player */
+  boolean shifted_relocation;  /* no level centering when relocating player */
   boolean can_pass_to_walkable;        /* player can pass to empty or walkable tile */
   boolean grow_into_diggable;  /* amoeba can grow into anything diggable */
 
@@ -2283,11 +2354,20 @@ struct GlobalInfo
   char *convert_leveldir;
   int convert_level_nr;
 
+  char *create_images_dir;
+
   int num_toons;
 
   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
@@ -2306,7 +2386,7 @@ struct ElementChangeInfo
   int delay_random;            /* added frame delay before changed (random) */
   int delay_frames;            /* either 1 (frames) or 50 (seconds; 50 fps) */
 
-  int trigger_element;         /* element triggering change */
+  int initial_trigger_element; /* initial element triggering change */
 
   struct Content target_content;/* elements for extended change target */
   boolean use_target_content;  /* use extended change target */
@@ -2324,6 +2404,8 @@ struct ElementChangeInfo
 
   /* ---------- internal values used at runtime when playing ---------- */
 
+  int trigger_element;         /* element triggering change */
+
   /* functions that are called before, while and after the change of an
      element -- currently only used for non-custom elements */
   void (*pre_change_function)(int x, int y);
@@ -2333,6 +2415,7 @@ struct ElementChangeInfo
   short actual_trigger_element;        /* element that actually triggered change */
   int actual_trigger_side;     /* element side that triggered the change */
   int actual_trigger_player;   /* player which actually triggered change */
+  int actual_trigger_player_bits; /* player bits of triggering players */
   int actual_trigger_ce_value; /* CE value of element that triggered change */
   int actual_trigger_ce_score; /* CE score of element that triggered change */
 
@@ -2453,6 +2536,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 */
@@ -2525,10 +2611,11 @@ struct GraphicInfo
 
   int draw_masked;             /* optional setting for drawing envelope gfx */
 
+  int fade_mode;               /* optional setting for drawing title screens */
   int fade_delay;              /* optional setting for drawing title screens */
   int post_delay;              /* optional setting for drawing title screens */
   int auto_delay;              /* optional setting for drawing title screens */
-  int align;                   /* optional setting for drawing title screens */
+  int align, valign;           /* optional setting for drawing title screens */
   int sort_priority;           /* optional setting for drawing title screens */
 
   boolean use_image_size;      /* use image size as default width and height */
@@ -2611,6 +2698,7 @@ extern Bitmap                    *bitmap_db_cross;
 extern Bitmap                 *bitmap_db_field;
 extern Bitmap                 *bitmap_db_panel;
 extern Bitmap                 *bitmap_db_door;
+extern Bitmap                 *bitmap_db_toons;
 extern Pixmap                  tile_clipmask[];
 extern DrawBuffer             *fieldbuffer;
 extern DrawBuffer             *drawto_field;
@@ -2662,6 +2750,11 @@ extern int                       GfxRandom[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern int                     GfxElement[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern int                     GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern int                     GfxDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int                     GfxRedraw[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;
 extern int                     scroll_x, scroll_y;
@@ -2692,10 +2785,16 @@ extern struct HiScore           highscore[];
 extern struct TapeInfo         tape;
 extern struct GlobalInfo       global;
 extern struct BorderInfo       border;
-extern struct TitleInfo                title;
+extern struct TitleFadingInfo  fading;
+extern struct TitleFadingInfo  fading_none;
+extern struct TitleFadingInfo  title_initial_default;
+extern struct TitleFadingInfo  title_default;
+extern struct TitleMessageInfo titlemessage_initial_default;
 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;
@@ -2713,6 +2812,10 @@ extern struct MusicInfo         *music_info;
 extern struct MusicFileInfo    *music_file_info;
 extern struct HelpAnimInfo     *helpanim_info;
 extern SetupFileHash           *helptext_info;
+extern SetupFileHash          *image_config_hash;
+extern SetupFileHash          *element_token_hash;
+extern SetupFileHash          *graphic_token_hash;
+extern SetupFileHash          *font_token_hash;
 extern struct ConfigTypeInfo   image_config_suffix[];
 extern struct ConfigTypeInfo   sound_config_suffix[];
 extern struct ConfigTypeInfo   music_config_suffix[];