rnd-20030411-1-src
[rocksndiamonds.git] / src / main.h
index 4275ba7e8785de52ab07eaa4e401605349e63a40..545c161a0ae2853d156d505e533f6da414ebb93f 100644 (file)
 #define EP_BIT_BELT_SWITCH     (1 << 2)
 #define EP_BIT_TUBE            (1 << 3)
 #define EP_BIT_EM_SLIPPERY_WALL        (1 << 4)
+#define EP_BIT_CAN_BE_CRUMBLED (1 << 5)
 
 #define EP_BITMASK_DEFAULT     0
 
 #define IS_BELT_SWITCH(e)      (Properties2[e] & EP_BIT_BELT_SWITCH)
 #define IS_TUBE(e)             (Properties2[e] & EP_BIT_TUBE)
 #define IS_EM_SLIPPERY_WALL(e) (Properties2[e] & EP_BIT_EM_SLIPPERY_WALL)
+#define CAN_BE_CRUMBLED(e)     (Properties2[e] & EP_BIT_CAN_BE_CRUMBLED)
 
 #define IS_CUSTOM_ELEMENT(e)   ((e) >= EL_CUSTOM_START &&      \
                                 (e) <= EL_CUSTOM_END)
 #define EL_CHAR_ASCII0_END             (EL_CHAR_ASCII0 + 111)
 #define EL_CHAR_END                    (EL_CHAR_START  + 79)
 
-#define EL_CHAR(x)                     ((x) == 'Ä' ? EL_CHAR_AE         : \
-                                        (x) == 'Ö' ? EL_CHAR_OE         : \
-                                        (x) == 'Ü' ? EL_CHAR_UE         : \
-                                        (x) == '^' ? EL_CHAR_COPYRIGHT  : \
-                                        (x) == '_' ? EL_CHAR_UNDERSCORE : \
-                                        (x) == '°' ? EL_CHAR_DEGREE     : \
-                                        (x) == '´' ? EL_CHAR_TM         : \
-                                        (x) == '|' ? EL_CHAR_CURSOR     : \
-                                        EL_CHAR_A + (x) - 'A')
+#define EL_CHAR(c)                     (EL_CHAR_ASCII0 + MAP_FONT_ASCII(c))
 
 #define EL_EXPANDABLE_WALL_HORIZONTAL  200
 #define EL_EXPANDABLE_WALL_VERTICAL    201
 #define GFX_ARG_POSITION                       19
 #define GFX_ARG_DRAW_XOFFSET                   20
 #define GFX_ARG_DRAW_YOFFSET                   21
-#define GFX_ARG_FORMAT                         22
-#define GFX_ARG_NAME                           23
+#define GFX_ARG_NAME                           22
 
-#define NUM_GFX_ARGS                           24
+#define NUM_GFX_ARGS                           23
 
 
 /* values for sound configuration suffixes */
 #define FONT_TEXT_2                            9
 #define FONT_TEXT_3                            10
 #define FONT_TEXT_4                            11
-#define FONT_INPUT                             12
-#define FONT_INPUT_ACTIVE                      13
-#define FONT_OPTION_OFF                                14
-#define FONT_OPTION_ON                         15
-#define FONT_VALUE_1                           16
-#define FONT_VALUE_2                           17
-#define FONT_VALUE_OLD                         18
-#define FONT_TAPE_RECORDER                     19
-#define FONT_LEVEL_NUMBER                      20
-
-#define NUM_FONTS                              21
+#define FONT_INPUT_1                           12
+#define FONT_INPUT_1_ACTIVE                    13
+#define FONT_INPUT_2                           14
+#define FONT_INPUT_2_ACTIVE                    15
+#define FONT_OPTION_OFF                                16
+#define FONT_OPTION_ON                         17
+#define FONT_VALUE_1                           18
+#define FONT_VALUE_2                           19
+#define FONT_VALUE_OLD                         20
+#define FONT_LEVEL_NUMBER                      21
+#define FONT_TAPE_RECORDER                     22
+#define FONT_GAME_INFO                         23
+
+#define NUM_FONTS                              24
 #define NUM_INITIAL_FONTS                      4
 
-
 /* values for game_status */
 #define EXITGAME               0
 #define MAINMENU               1
 
 #define PROGRAM_TITLE_STRING   "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING  "Holger Schemel"
-#define PROGRAM_RIGHTS_STRING  "Copyright ^1995-2003 by"
+#define PROGRAM_RIGHTS_STRING  "Copyright ©1995-2003 by"
 #define PROGRAM_DOS_PORT_STRING        "DOS port done by Guido Schulz"
 #define PROGRAM_IDENT_STRING   PROGRAM_VERSION_STRING " " TARGET_STRING
 #define WINDOW_TITLE_STRING    PROGRAM_TITLE_STRING " " PROGRAM_IDENT_STRING
 #define WINDOW_SUBTITLE_STRING PROGRAM_RIGHTS_STRING " " PROGRAM_AUTHOR_STRING
 #define ICON_TITLE_STRING      PROGRAM_TITLE_STRING
-#define UNIX_USERDATA_DIRECTORY        ".rocksndiamonds"
 #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
+#else
+#define USERDATA_DIRECTORY     "userdata"
+#endif
+
 #define X11_ICON_FILENAME      "rocks_icon.xbm"
 #define X11_ICONMASK_FILENAME  "rocks_iconmask.xbm"
 #define MSDOS_POINTER_FILENAME "mouse.pcx"
@@ -987,6 +989,8 @@ struct LevelInfo
   boolean gravity;
   boolean em_slippery_gems;    /* EM style "gems slip from wall" behaviour */
 
+  short custom_element_successor[NUM_CUSTOM_ELEMENTS];
+
   boolean no_level_file;
 };
 
@@ -996,6 +1000,7 @@ struct TapeInfo
   int game_version;    /* game release version the tape was created with */
   int engine_version;  /* game engine version the tape was recorded with */
 
+  char *level_identifier;
   int level_nr;
   unsigned long random_seed;
   unsigned long date;
@@ -1097,6 +1102,7 @@ struct GraphicInfo
   int width, height;           /* width/height of each animation frame */
   int offset_x, offset_y;      /* x/y offset to next animation frame */
   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;