rnd-20061017-1-src
[rocksndiamonds.git] / src / main.h
index 877609eb421979875eec661639853f1602a88d1f..3c3a40fb5181bd3a297542b5e64c20d6138642c8 100644 (file)
@@ -1,7 +1,7 @@
 /***********************************************************
 * Rocks'n'Diamonds -- McDuffin Strikes Back!               *
 *----------------------------------------------------------*
-* (c) 1995-2002 Artsoft Entertainment                      *
+* (c) 1995-2006 Artsoft Entertainment                      *
 *               Holger Schemel                             *
 *               Detmolder Strasse 189                      *
 *               33604 Bielefeld                            *
@@ -42,6 +42,8 @@
 #define WIN_XSIZE                      672
 #define WIN_YSIZE                      560
 
+#define DEFAULT_FULLSCREEN_MODE                "800x600"
+
 #define SCR_FIELDX                     17
 #define SCR_FIELDY                     17
 #define MAX_BUF_XSIZE                  (SCR_FIELDX + 2)
 #define EP_BITMASK_DEFAULT             0
 
 #define PROPERTY_BIT(p)                        (1 << ((p) % 32))
-#if 1
 #define PROPERTY_VAR(e,p)              (element_info[e].properties[(p) / 32])
-#else
-#define PROPERTY_VAR(e,p)              (Properties[e][(p) / 32])
-#endif
 #define HAS_PROPERTY(e,p)      ((PROPERTY_VAR(e, p) & PROPERTY_BIT(p)) != 0)
 #define SET_PROPERTY(e,p,v)    ((v) ?                                     \
                                 (PROPERTY_VAR(e,p) |=  PROPERTY_BIT(p)) : \
 #define CE_CREATION_OF_X               37
 #define CE_SCORE_GETS_ZERO             38
 #define CE_SCORE_GETS_ZERO_OF_X                39
+#define CE_VALUE_CHANGES               40
+#define CE_VALUE_CHANGES_OF_X          41
+#define CE_SCORE_CHANGES               42
+#define CE_SCORE_CHANGES_OF_X          43
 
-#define NUM_CHANGE_EVENTS              40
+#define NUM_CHANGE_EVENTS              44
 
 #define NUM_CE_BITFIELDS               ((NUM_CHANGE_EVENTS + 31) / 32)
 
 #define CA_SET_LEVEL_GEMS              7
 #define CA_SET_LEVEL_SCORE             8
 #define CA_SET_LEVEL_WIND              9
-#define CA_SET_LEVEL_GRAVITY           10
+#define CA_SET_PLAYER_GRAVITY          10
 #define CA_SET_PLAYER_KEYS             11
 #define CA_SET_PLAYER_SPEED            12
 #define CA_SET_PLAYER_SHIELD           13
 #define SND_ELEMENT(e)         (e)
 #endif
 
-#if 1
 #define GROUP_NR(e)            ((e) - EL_GROUP_START)
 #define IS_IN_GROUP(e, nr)     (element_info[e].in_group[nr] == TRUE)
 #define IS_IN_GROUP_EL(e, ge)  (IS_IN_GROUP(e, (ge) - EL_GROUP_START))
 
 #define IS_EQUAL_OR_IN_GROUP(e, ge)                                    \
-       (IS_GROUP_ELEMENT(ge) ? IS_IN_GROUP(e, GROUP_NR(ge)) : (e) == (ge))
-#endif
+       (ge == EL_ANY_ELEMENT ? TRUE :                                  \
+        IS_GROUP_ELEMENT(ge) ? IS_IN_GROUP(e, GROUP_NR(ge)) : (e) == (ge))
 
 #define IS_PLAYER(x, y)                (ELEM_IS_PLAYER(StorePlayer[x][y]))
 
 #define ANIM_DELAY(g)          (graphic_info[g].anim_delay)
 #define ANIM_MODE(g)           (graphic_info[g].anim_mode)
 
+#define IS_ANIM_MODE_CE(g)     (graphic_info[g].anim_mode & (ANIM_CE_VALUE |  \
+                                                             ANIM_CE_SCORE |  \
+                                                             ANIM_CE_DELAY))
 #define IS_ANIMATED(g)         (ANIM_FRAMES(g) > 1)
 #define IS_NEW_DELAY(f, g)     ((f) % ANIM_DELAY(g) == 0)
 #define IS_NEW_FRAME(f, g)     (IS_ANIMATED(g) && IS_NEW_DELAY(f, g))
                                 IS_EDITOR_CASCADE_ACTIVE(e)   ? (e) - 1 : (e))
 
 #define EL_NAME(e)             ((e) >= 0 ? element_info[e].token_name : "(?)")
+#define MV_TEXT(d)             ((d) == MV_NONE  ? "MV_NONE"  :         \
+                                (d) == MV_LEFT  ? "MV_LEFT"  :         \
+                                (d) == MV_RIGHT ? "MV_RIGHT" :         \
+                                (d) == MV_UP    ? "MV_UP"    :         \
+                                (d) == MV_DOWN  ? "MV_DOWN"  : "(various)")
 
 /* fundamental game speed values */
 #define MICROLEVEL_SCROLL_DELAY        50      /* delay for scrolling micro level */
 
 #define MAX_NUM_AMOEBA         100
 
-#if 0  /* game.h */
-#define MAX_INVENTORY_SIZE     1000
-#define STD_NUM_KEYS           4
-#define MAX_NUM_KEYS           8
-#endif
-
 #define NUM_BELTS              4
 #define NUM_BELT_PARTS         3
+#define NUM_ENVELOPES          4
 #define MIN_ENVELOPE_XSIZE     1
 #define MIN_ENVELOPE_YSIZE     1
 #define MAX_ENVELOPE_XSIZE     30
 #define STD_ELEMENT_CONTENTS   4
 #define MAX_ELEMENT_CONTENTS   8
 
-#define LEVEL_SCORE_ELEMENTS   16      /* level elements with score */
-
 /* often used screen positions */
 #define SX                     8
 #define SY                     8
 #define MICROLEVEL_XSIZE       ((STD_LEV_FIELDX + 2) * MICRO_TILEX)
 #define MICROLEVEL_YSIZE       ((STD_LEV_FIELDY + 2) * MICRO_TILEY)
 #define MICROLEVEL_XPOS                (SX + (SXSIZE - MICROLEVEL_XSIZE) / 2)
-#define MICROLEVEL_YPOS                (SX + 12 * TILEY - MICRO_TILEY)
+#define MICROLEVEL_YPOS                (SY + 12 * TILEY - MICRO_TILEY)
 #define MICROLABEL1_YPOS       (MICROLEVEL_YPOS - 36)
 #define MICROLABEL2_YPOS       (MICROLEVEL_YPOS + MICROLEVEL_YSIZE + 7)
 
 #define SC_CRYSTAL             11
 #define SC_PEARL               12
 #define SC_SHIELD              13
+#define SC_UNKNOWN_14          14
+#define SC_UNKNOWN_15          15
+
+#define LEVEL_SCORE_ELEMENTS   16      /* level elements with score */
 
 
 /* "real" level file elements */
 #define EL_YAMYAM_UP                   711
 #define EL_YAMYAM_DOWN                 712
 
-#define NUM_FILE_ELEMENTS              713
+#define EL_BD_EXPANDABLE_WALL          713
+
+#define EL_PREV_CE_8                   714
+#define EL_PREV_CE_7                   715
+#define EL_PREV_CE_6                   716
+#define EL_PREV_CE_5                   717
+#define EL_PREV_CE_4                   718
+#define EL_PREV_CE_3                   719
+#define EL_PREV_CE_2                   720
+#define EL_PREV_CE_1                   721
+#define EL_SELF                                722
+#define EL_NEXT_CE_1                   723
+#define EL_NEXT_CE_2                   724
+#define EL_NEXT_CE_3                   725
+#define EL_NEXT_CE_4                   726
+#define EL_NEXT_CE_5                   727
+#define EL_NEXT_CE_6                   728
+#define EL_NEXT_CE_7                   729
+#define EL_NEXT_CE_8                   730
+#define EL_ANY_ELEMENT                 731
+
+#define NUM_FILE_ELEMENTS              732
 
 
 /* "real" (and therefore drawable) runtime elements */
 #define EL_INTERNAL_CASCADE_CE_ACTIVE          (EL_FIRST_INTERNAL + 23)
 #define EL_INTERNAL_CASCADE_GE                 (EL_FIRST_INTERNAL + 24)
 #define EL_INTERNAL_CASCADE_GE_ACTIVE          (EL_FIRST_INTERNAL + 25)
-#define EL_INTERNAL_CASCADE_USER               (EL_FIRST_INTERNAL + 26)
-#define EL_INTERNAL_CASCADE_USER_ACTIVE                (EL_FIRST_INTERNAL + 27)
-#define EL_INTERNAL_CASCADE_GENERIC            (EL_FIRST_INTERNAL + 28)
-#define EL_INTERNAL_CASCADE_GENERIC_ACTIVE     (EL_FIRST_INTERNAL + 29)
+#define EL_INTERNAL_CASCADE_REF                        (EL_FIRST_INTERNAL + 26)
+#define EL_INTERNAL_CASCADE_REF_ACTIVE         (EL_FIRST_INTERNAL + 27)
+#define EL_INTERNAL_CASCADE_USER               (EL_FIRST_INTERNAL + 28)
+#define EL_INTERNAL_CASCADE_USER_ACTIVE                (EL_FIRST_INTERNAL + 29)
 #define EL_INTERNAL_CASCADE_DYNAMIC            (EL_FIRST_INTERNAL + 30)
 #define EL_INTERNAL_CASCADE_DYNAMIC_ACTIVE     (EL_FIRST_INTERNAL + 31)
 
 #define NUM_MUS_ARGS                   1
 
 
-/* values for font configuration */
+/* values for font configuration (definitions must match those from main.c) */
 #define FONT_INITIAL_1                 0
 #define FONT_INITIAL_2                 1
 #define FONT_INITIAL_3                 2
 #define FONT_INITIAL_4                 3
 #define FONT_TITLE_1                   4
 #define FONT_TITLE_2                   5
-#define FONT_MENU_1                    6
-#define FONT_MENU_2                    7
-#define FONT_TEXT_1_ACTIVE             8
-#define FONT_TEXT_2_ACTIVE             9
-#define FONT_TEXT_3_ACTIVE             10
-#define FONT_TEXT_4_ACTIVE             11
-#define FONT_TEXT_1                    12
-#define FONT_TEXT_2                    13
-#define FONT_TEXT_3                    14
-#define FONT_TEXT_4                    15
-#define FONT_ENVELOPE_1                        16
-#define FONT_ENVELOPE_2                        17
-#define FONT_ENVELOPE_3                        18
-#define FONT_ENVELOPE_4                        19
-#define FONT_INPUT_1_ACTIVE            20
-#define FONT_INPUT_2_ACTIVE            21
-#define FONT_INPUT_1                   22
-#define FONT_INPUT_2                   23
-#define FONT_OPTION_OFF                        24
-#define FONT_OPTION_ON                 25
-#define FONT_VALUE_1                   26
-#define FONT_VALUE_2                   27
-#define FONT_VALUE_OLD                 28
-#define FONT_LEVEL_NUMBER_ACTIVE       29
-#define FONT_LEVEL_NUMBER              30
-#define FONT_TAPE_RECORDER             31
-#define FONT_GAME_INFO                 32
-
-#define NUM_FONTS                      33
+#define FONT_MENU_1_ACTIVE             6
+#define FONT_MENU_2_ACTIVE             7
+#define FONT_MENU_1                    8
+#define FONT_MENU_2                    9
+#define FONT_TEXT_1_ACTIVE             10
+#define FONT_TEXT_2_ACTIVE             11
+#define FONT_TEXT_3_ACTIVE             12
+#define FONT_TEXT_4_ACTIVE             13
+#define FONT_TEXT_1                    14
+#define FONT_TEXT_2                    15
+#define FONT_TEXT_3                    16
+#define FONT_TEXT_4                    17
+#define FONT_ENVELOPE_1                        18
+#define FONT_ENVELOPE_2                        19
+#define FONT_ENVELOPE_3                        20
+#define FONT_ENVELOPE_4                        21
+#define FONT_INPUT_1_ACTIVE            22
+#define FONT_INPUT_2_ACTIVE            23
+#define FONT_INPUT_1                   24
+#define FONT_INPUT_2                   25
+#define FONT_OPTION_OFF                        26
+#define FONT_OPTION_ON                 27
+#define FONT_VALUE_1                   28
+#define FONT_VALUE_2                   29
+#define FONT_VALUE_OLD                 30
+#define FONT_LEVEL_NUMBER_ACTIVE       31
+#define FONT_LEVEL_NUMBER              32
+#define FONT_TAPE_RECORDER             33
+#define FONT_GAME_INFO                 34
+
+#define NUM_FONTS                      35
 #define NUM_INITIAL_FONTS              4
 
+#define FONT_ACTIVE(f)                                                   \
+       ((f) == FONT_MENU_1             ? FONT_MENU_1_ACTIVE            : \
+        (f) == FONT_MENU_2             ? FONT_MENU_2_ACTIVE            : \
+        (f) == FONT_TEXT_1             ? FONT_TEXT_1_ACTIVE            : \
+        (f) == FONT_TEXT_2             ? FONT_TEXT_2_ACTIVE            : \
+        (f) == FONT_TEXT_3             ? FONT_TEXT_3_ACTIVE            : \
+        (f) == FONT_TEXT_4             ? FONT_TEXT_4_ACTIVE            : \
+        (f) == FONT_INPUT_1            ? FONT_INPUT_1_ACTIVE           : \
+        (f) == FONT_INPUT_2            ? FONT_INPUT_2_ACTIVE           : \
+        (f) == FONT_LEVEL_NUMBER       ? FONT_LEVEL_NUMBER_ACTIVE      : \
+        (f))
+
+
 /* values for game_status (must match special image configuration suffixes) */
 #define GAME_MODE_DEFAULT              0
 #define GAME_MODE_TITLE                        1
 /* program information and versioning definitions */
 #define PROGRAM_VERSION_MAJOR          3
 #define PROGRAM_VERSION_MINOR          2
-#define PROGRAM_VERSION_PATCH          0
-#define PROGRAM_VERSION_BUILD          8
+#define PROGRAM_VERSION_PATCH          3
+#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-2006 by Holger Schemel"
+#define PROGRAM_EMAIL_STRING           "info@artsoft.org"
+#define PROGRAM_WEBSITE_STRING         "http://www.artsoft.org/"
 
 #define ICON_TITLE_STRING              PROGRAM_TITLE_STRING
 #define COOKIE_PREFIX                  "ROCKSNDIAMONDS"
 #define FILENAME_PREFIX                        "Rocks"
 
-#if defined(PLATFORM_UNIX)
-#define USERDATA_DIRECTORY             ".rocksndiamonds"
-#elif defined(PLATFORM_WIN32)
-#define USERDATA_DIRECTORY             PROGRAM_TITLE_STRING
+#define USERDATA_DIRECTORY_WIN32       PROGRAM_TITLE_STRING
+#define USERDATA_DIRECTORY_MACOSX      PROGRAM_TITLE_STRING
+#define USERDATA_DIRECTORY_UNIX                ".rocksndiamonds"
+#define USERDATA_DIRECTORY_DOS         "userdata"
+
+#if defined(PLATFORM_WIN32)
+#define USERDATA_DIRECTORY             USERDATA_DIRECTORY_WIN32
+#elif defined(PLATFORM_MACOSX)
+#define USERDATA_DIRECTORY             USERDATA_DIRECTORY_MACOSX
+#elif defined(PLATFORM_UNIX)
+#define USERDATA_DIRECTORY             USERDATA_DIRECTORY_UNIX
 #else
-#define USERDATA_DIRECTORY             "userdata"
+#define USERDATA_DIRECTORY             USERDATA_DIRECTORY_DOS
 #endif
 
 #define X11_ICON_FILENAME              "rocks_icon.xbm"
 #define X11_ICONMASK_FILENAME          "rocks_iconmask.xbm"
+#define SDL_ICON_FILENAME              "rocks_icon_32x32.pcx"
 #define MSDOS_POINTER_FILENAME         "mouse.pcx"
 
 /* file version numbers for resource files (levels, tapes, score, setup, etc.)
 #define FILE_VERSION_1_2               VERSION_IDENT(1,2,0,0)
 #define FILE_VERSION_1_4               VERSION_IDENT(1,4,0,0)
 #define FILE_VERSION_2_0               VERSION_IDENT(2,0,0,0)
+#define FILE_VERSION_3_0               VERSION_IDENT(3,0,0,0)
 
 /* file version does not change for every program version, but is changed
    when new features are introduced that are incompatible with older file
    versions, so that they can be treated accordingly */
-#define FILE_VERSION_ACTUAL            FILE_VERSION_2_0
+#define FILE_VERSION_ACTUAL            FILE_VERSION_3_0
 
 #define GAME_VERSION_1_0               FILE_VERSION_1_0
 #define GAME_VERSION_1_2               FILE_VERSION_1_2
 #define GAME_VERSION_1_4               FILE_VERSION_1_4
 #define GAME_VERSION_2_0               FILE_VERSION_2_0
+#define GAME_VERSION_3_0               FILE_VERSION_3_0
 
 #define GAME_VERSION_ACTUAL            VERSION_IDENT(PROGRAM_VERSION_MAJOR, \
                                                      PROGRAM_VERSION_MINOR, \
 #define NUM_ENGINE_TYPES               3
 
 
+struct BorderInfo
+{
+  int draw_masked[NUM_SPECIAL_GFX_ARGS];
+};
+
+struct MenuMainButtonInfo
+{
+  struct Rect name;
+  struct Rect levels;
+  struct Rect scores;
+  struct Rect editor;
+  struct Rect info;
+  struct Rect game;
+  struct Rect setup;
+  struct Rect quit;
+
+  struct Rect prev_level;
+  struct Rect next_level;
+};
+
+struct MenuMainTextInfo
+{
+  struct Rect name;
+  struct Rect levels;
+  struct Rect scores;
+  struct Rect editor;
+  struct Rect info;
+  struct Rect game;
+  struct Rect setup;
+  struct Rect quit;
+
+  struct Rect current_level;
+  struct Rect first_level;
+  struct Rect last_level;
+  struct Rect levelset_info;
+  struct Rect level_info;
+};
+
+struct MenuMainInputInfo
+{
+  struct Rect name;
+};
+
+struct MenuMainInfo
+{
+  struct MenuMainButtonInfo button;
+  struct MenuMainTextInfo text;
+  struct MenuMainInputInfo input;
+};
+
 struct MenuInfo
 {
   int draw_xoffset[NUM_SPECIAL_GFX_ARGS];
@@ -1785,8 +1889,13 @@ struct MenuInfo
 
   int list_size[NUM_SPECIAL_GFX_ARGS];
 
+  int fade_delay;
+  int post_delay;
+
   int sound[NUM_SPECIAL_GFX_ARGS];
   int music[NUM_SPECIAL_GFX_ARGS];
+
+  struct MenuMainInfo main;
 };
 
 struct DoorInfo
@@ -1798,6 +1907,15 @@ struct DoorInfo
   int anim_mode;
 };
 
+struct PreviewInfo
+{
+  int x, y;
+  int xsize, ysize;
+  int tile_size;
+  int step_offset;
+  int step_delay;
+};
+
 struct HiScore
 {
   char Name[MAX_PLAYER_NAME_LEN + 1];
@@ -1809,6 +1927,14 @@ struct Content
   int e[3][3];
 };
 
+struct EnvelopeInfo
+{
+  int xsize;
+  int ysize;
+
+  char text[MAX_ENVELOPE_TEXT_LEN + 1];
+};
+
 struct LevelSetInfo
 {
   int music[MAX_LEVELS];
@@ -1823,6 +1949,13 @@ struct LevelFileInfo
   char *filename;
 };
 
+struct DateInfo
+{
+  int year;
+  int month;
+  int day;
+};
+
 struct LevelInfo
 {
   struct LevelFileInfo file_info;
@@ -1835,6 +1968,8 @@ struct LevelInfo
   int file_version;    /* file format version the level is stored with    */
   int game_version;    /* game release version the level was created with */
 
+  struct DateInfo creation_date;
+
   boolean encoding_16bit_field;                /* level contains 16-bit elements  */
   boolean encoding_16bit_yamyam;       /* yamyam contains 16-bit elements */
   boolean encoding_16bit_amoeba;       /* amoeba contains 16-bit elements */
@@ -1847,8 +1982,7 @@ struct LevelInfo
   char name[MAX_LEVEL_NAME_LEN + 1];
   char author[MAX_LEVEL_AUTHOR_LEN + 1];
 
-  char envelope_text[4][MAX_ENVELOPE_TEXT_LEN + 1];
-  int envelope_xsize[4], envelope_ysize[4];
+  struct EnvelopeInfo envelope[NUM_ENVELOPES];
 
   int score[LEVEL_SCORE_ELEMENTS];
 
@@ -1883,7 +2017,6 @@ struct LevelInfo
   int explosion_element[MAX_PLAYERS];
   boolean use_explosion_element[MAX_PLAYERS];
 
-#if 1
   /* values for the new EMC elements */
   int android_move_time;
   int android_clone_time;
@@ -1900,19 +2033,15 @@ struct LevelInfo
   struct Content ball_content[MAX_ELEMENT_CONTENTS];
   int num_ball_contents;
 
-#if 0
-  boolean android_array[16];
-#endif
   int num_android_clone_elements;
   int android_clone_element[MAX_ANDROID_ELEMENTS];
-#endif
 
   int can_move_into_acid_bits; /* bitfield to store property for elements */
   int dont_collide_with_bits;  /* bitfield to store property for elements */
 
-  int initial_player_stepsize; /* initial player speed */
+  int initial_player_stepsize[MAX_PLAYERS];    /* initial player speed */
+  boolean initial_player_gravity[MAX_PLAYERS];
 
-  boolean initial_gravity;
   boolean em_slippery_gems;    /* EM style "gems slip from wall" behaviour */
   boolean use_spring_bug;      /* for compatibility with old levels */
   boolean use_time_orb_bug;    /* for compatibility with old levels */
@@ -2151,20 +2280,28 @@ struct GraphicInfo
 
   int src_x, src_y;            /* start position of animation frames */
   int width, height;           /* width/height of each animation frame */
+
   int offset_x, offset_y;      /* x/y offset to next animation frame */
   int offset2_x, offset2_y;    /* x/y offset to second movement tile */
+
   boolean double_movement;     /* animation has second movement tile */
   int swap_double_tiles;       /* explicitely force or forbid tile swapping */
+
   int anim_frames;
   int anim_frames_per_line;
   int anim_start_frame;
   int anim_delay;              /* important: delay of 1 means "no delay"! */
   int anim_mode;
+
   boolean anim_global_sync;
+
   int crumbled_like;           /* element for cloning crumble graphics */
   int diggable_like;           /* element for cloning digging graphics */
+
   int border_size;             /* border size for "crumbled" graphics */
+
   int scale_up_factor;         /* optional factor for scaling image up */
+
   int clone_from;              /* graphic for cloning *all* settings */
 
   int anim_delay_fixed;                /* optional delay values for bored and   */
@@ -2254,8 +2391,9 @@ struct HelpAnimInfo
 };
 
 
-extern Bitmap                 *bitmap_db_title;
+extern Bitmap                 *bitmap_db_cross;
 extern Bitmap                 *bitmap_db_field;
+extern Bitmap                 *bitmap_db_panel;
 extern Bitmap                 *bitmap_db_door;
 extern Pixmap                  tile_clipmask[];
 extern DrawBuffer             *fieldbuffer;
@@ -2302,10 +2440,6 @@ extern short                     ExplodeDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern int                     RunnerVisit[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern int                     PlayerVisit[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 
-#if 0
-extern unsigned long           Properties[MAX_NUM_ELEMENTS][NUM_EP_BITFIELDS];
-#endif
-
 extern int                     GfxFrame[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern int                     GfxRandom[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern int                     GfxElement[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
@@ -2330,8 +2464,6 @@ extern int                        ExitX, ExitY;
 extern int                     AllPlayersGone;
 
 extern int                     TimeFrames, TimePlayed, TimeLeft, TapeTime;
-extern boolean                 SiebAktiv;
-extern int                     SiebCount;
 
 extern boolean                 network_player_action_received;
 
@@ -2342,8 +2474,10 @@ extern struct LevelInfo          level, level_template;
 extern struct HiScore          highscore[];
 extern struct TapeInfo         tape;
 extern struct GlobalInfo       global;
+extern struct BorderInfo       border;
 extern struct MenuInfo         menu;
 extern struct DoorInfo         door_1, door_2;
+extern struct PreviewInfo      preview;
 extern struct ElementInfo      element_info[];
 extern struct ElementNameInfo  element_name_info[];
 extern struct ElementActionInfo        element_action_info[];