#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"
int last_move_dir;
boolean is_moving;
-
- boolean is_digging;
boolean is_waiting;
+ boolean is_digging;
+ boolean is_collecting;
unsigned long move_delay;
int move_delay_value;
boolean gravity;
boolean em_slippery_gems; /* EM style "gems slip from wall" behaviour */
+ short custom_element_successor[NUM_CUSTOM_ELEMENTS];
+
boolean no_level_file;
};
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;
int num_toons;
+ int menu_draw_xoffset;
+ int menu_draw_yoffset;
+ int menu_draw_xoffset_MAIN;
+ int menu_draw_yoffset_MAIN;
+
+ int door_step_offset;
+ int door_step_delay;
+
float frames_per_second;
boolean fps_slowdown;
int fps_slowdown_factor;
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;