#include "conf_gfx.h"
#include "conf_snd.h"
-#define IMG_EMPTY IMG_EMPTY_SPACE
-#define IMG_SP_EMPTY IMG_SP_EMPTY_SPACE
-#define IMG_CHAR_START IMG_CHAR_SPACE
+#define IMG_EMPTY IMG_EMPTY_SPACE
+#define IMG_SP_EMPTY IMG_SP_EMPTY_SPACE
+#define IMG_CHAR_START IMG_CHAR_SPACE
+#define IMG_GENERIC_START IMG_GENERIC_0
#define WIN_XSIZE 672
#define WIN_YSIZE 560
#define VXSIZE DXSIZE
#define VYSIZE 100
#define EXSIZE DXSIZE
-#define EYSIZE (VXSIZE + 44)
+#define EYSIZE (VYSIZE + 44)
#define FULL_SXSIZE (2 + SXSIZE + 2)
#define FULL_SYSIZE (2 + SYSIZE + 2)
#define MICROLEV_XSIZE ((STD_LEV_FIELDX + 2) * MICRO_TILEX)
#define EL_CHAR_START 120
#define EL_CHAR_ASCII0 (EL_CHAR_START - 32)
+#define EL_CHAR_ASCII0_START (EL_CHAR_ASCII0 + 32)
#define EL_CHAR_EXCLAM (EL_CHAR_ASCII0 + 33)
#define EL_CHAR_QUOTEDBL (EL_CHAR_ASCII0 + 34)
#define EL_CHAR_NUMBERSIGN (EL_CHAR_ASCII0 + 35)
#define EL_CHAR_OE (EL_CHAR_ASCII0 + 92)
#define EL_CHAR_UE (EL_CHAR_ASCII0 + 93)
#define EL_CHAR_COPYRIGHT (EL_CHAR_ASCII0 + 94)
+#define EL_CHAR_UNDERSCORE (EL_CHAR_ASCII0 + 95)
+#define EL_CHAR_EMPTY (EL_CHAR_ASCII0 + 96)
+#define EL_CHAR_DEGREE (EL_CHAR_ASCII0 + 97)
+#define EL_CHAR_TM (EL_CHAR_ASCII0 + 98)
+#define EL_CHAR_CURSOR (EL_CHAR_ASCII0 + 99)
+#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 : \
+#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_WALL_GROWING_X 200
#define EL_TRAP 356
#define EL_DX_SUPABOMB 357
-#define NUM_FILE_ELEMENTS 358
+#define EL_UNUSED_358 358
+#define EL_UNUSED_359 359
+
+#define EL_GENERIC_START 360
+#define EL_GENERIC_0 (EL_GENERIC_START + 0)
+#define EL_GENERIC_31 (EL_GENERIC_START + 31)
+#define EL_GENERIC_END (EL_GENERIC_START + 31)
+
+#define NUM_FILE_ELEMENTS 392
/* "real" (and therefore drawable) runtime elements */
#define EL_TIMEGATE_CLOSING (EL_FIRST_RUNTIME_REAL + 20)
#define EL_PEARL_BREAKING (EL_FIRST_RUNTIME_REAL + 21)
#define EL_TRAP_ACTIVE (EL_FIRST_RUNTIME_REAL + 22)
-#define EL_SPRING_MOVING (EL_FIRST_RUNTIME_REAL + 23)
-#define EL_SP_MURPHY_CLONE (EL_FIRST_RUNTIME_REAL + 24)
-#define EL_QUICKSAND_EMPTYING (EL_FIRST_RUNTIME_REAL + 25)
-#define EL_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 26)
-#define EL_BD_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 27)
-#define EL_AMOEBA_DRIPPING (EL_FIRST_RUNTIME_REAL + 28)
-#define EL_SP_EXIT_OPEN (EL_FIRST_RUNTIME_REAL + 29)
-#define EL_INVISIBLE_STEELWALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 30)
-#define EL_INVISIBLE_SAND_ACTIVE (EL_FIRST_RUNTIME_REAL + 31)
-#define EL_INVISIBLE_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 32)
-#define EL_CONVEYOR_BELT1_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 33)
-#define EL_CONVEYOR_BELT1_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 34)
-#define EL_CONVEYOR_BELT1_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 35)
-#define EL_CONVEYOR_BELT2_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 36)
-#define EL_CONVEYOR_BELT2_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 37)
-#define EL_CONVEYOR_BELT2_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 38)
-#define EL_CONVEYOR_BELT3_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 39)
-#define EL_CONVEYOR_BELT3_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 40)
-#define EL_CONVEYOR_BELT3_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 41)
-#define EL_CONVEYOR_BELT4_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 42)
-#define EL_CONVEYOR_BELT4_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 43)
-#define EL_CONVEYOR_BELT4_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 44)
+#define EL_SP_MURPHY_CLONE (EL_FIRST_RUNTIME_REAL + 23)
+#define EL_QUICKSAND_EMPTYING (EL_FIRST_RUNTIME_REAL + 24)
+#define EL_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 25)
+#define EL_BD_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 26)
+#define EL_AMOEBA_DRIPPING (EL_FIRST_RUNTIME_REAL + 27)
+#define EL_SP_EXIT_OPEN (EL_FIRST_RUNTIME_REAL + 28)
+#define EL_INVISIBLE_STEELWALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 29)
+#define EL_INVISIBLE_SAND_ACTIVE (EL_FIRST_RUNTIME_REAL + 30)
+#define EL_INVISIBLE_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 31)
+#define EL_CONVEYOR_BELT1_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 32)
+#define EL_CONVEYOR_BELT1_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 33)
+#define EL_CONVEYOR_BELT1_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 34)
+#define EL_CONVEYOR_BELT2_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 35)
+#define EL_CONVEYOR_BELT2_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 36)
+#define EL_CONVEYOR_BELT2_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 37)
+#define EL_CONVEYOR_BELT3_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 38)
+#define EL_CONVEYOR_BELT3_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 39)
+#define EL_CONVEYOR_BELT3_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 40)
+#define EL_CONVEYOR_BELT4_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 41)
+#define EL_CONVEYOR_BELT4_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 42)
+#define EL_CONVEYOR_BELT4_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 43)
/* "unreal" (and therefore not drawable) runtime elements */
-#define EL_FIRST_RUNTIME_UNREAL (EL_FIRST_RUNTIME_REAL + 45)
+#define EL_FIRST_RUNTIME_UNREAL (EL_FIRST_RUNTIME_REAL + 44)
#define EL_BLOCKED (EL_FIRST_RUNTIME_UNREAL + 0)
#define EL_EXPLOSION (EL_FIRST_RUNTIME_UNREAL + 1)
#define GFX_ACTION_PASSING 8
#define GFX_ACTION_IMPACT 9
#define GFX_ACTION_CRACKING 10
-#define GFX_ACTION_ACTIVATING 11
-#define GFX_ACTION_EATING 12
-#define GFX_ACTION_ATTACKING 13
-#define GFX_ACTION_GROWING 14
-#define GFX_ACTION_OTHER 15
-
-#define NUM_GFX_ACTIONS 16
+#define GFX_ACTION_BREAKING 11
+#define GFX_ACTION_ACTIVATING 12
+#define GFX_ACTION_OPENING 13
+#define GFX_ACTION_CLOSING 14
+#define GFX_ACTION_EATING 15
+#define GFX_ACTION_ATTACKING 16
+#define GFX_ACTION_GROWING 17
+#define GFX_ACTION_SHRINKING 18
+#define GFX_ACTION_OTHER 19
+
+#define NUM_GFX_ACTIONS 20
#define NUM_GFX_ACTIONS_MAPPED 8
#define GFX_ARG_YPOS 1
#define GFX_ARG_OFFSET 2
#define GFX_ARG_VERTICAL 3
-#define GFX_ARG_FRAMES 4
-#define GFX_ARG_START_FRAME 5
-#define GFX_ARG_DELAY 6
-#define GFX_ARG_MODE_LOOP 7
-#define GFX_ARG_MODE_LINEAR 8
-#define GFX_ARG_MODE_PINGPONG 9
-#define GFX_ARG_MODE_PINGPONG2 10
-#define GFX_ARG_MODE_REVERSE 11
-#define GFX_ARG_GLOBAL_SYNC 12
+#define GFX_ARG_XOFFSET 4
+#define GFX_ARG_YOFFSET 5
+#define GFX_ARG_FRAMES 6
+#define GFX_ARG_START_FRAME 7
+#define GFX_ARG_DELAY 8
+#define GFX_ARG_MODE_LOOP 9
+#define GFX_ARG_MODE_LINEAR 10
+#define GFX_ARG_MODE_PINGPONG 11
+#define GFX_ARG_MODE_PINGPONG2 12
+#define GFX_ARG_MODE_REVERSE 13
+#define GFX_ARG_GLOBAL_SYNC 14
+
+#define NUM_GFX_ARGS 15
+
+#define GFX_ARG_UNDEFINED "-1000000"
+#define GFX_ARG_UNDEFINED_VALUE (atoi(GFX_ARG_UNDEFINED))
+
/* values for sound configuration suffixes */
/* (currently none) */
#define SETUP 8
#define PROGRAM_VERSION_MAJOR 2
-#define PROGRAM_VERSION_MINOR 1
-#define PROGRAM_VERSION_PATCH 2
-#define PROGRAM_VERSION_STRING "2.1.2"
+#define PROGRAM_VERSION_MINOR 2
+#define PROGRAM_VERSION_PATCH 0
+#define PROGRAM_VERSION_STRING "2.2.0rc1"
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
#define PROGRAM_AUTHOR_STRING "Holger Schemel"
boolean double_speed;
boolean gravity;
boolean em_slippery_gems; /* EM style "gems slip from wall" behaviour */
+
+ boolean no_level_file;
};
struct TapeInfo
boolean recording, playing, pausing;
boolean fast_forward;
boolean index_search;
+ boolean auto_play;
+ boolean auto_play_level_solved;
boolean quick_resume;
boolean single_step;
boolean changed;
struct GlobalInfo
{
+ char *autoplay_leveldir;
+ int autoplay_level_nr;
+
float frames_per_second;
boolean fps_slowdown;
int fps_slowdown_factor;
};
extern GC tile_clip_gc;
+#if 0
extern Bitmap *pix[];
+#endif
+extern Bitmap *bitmap_db_field, *bitmap_db_door;
extern Pixmap tile_clipmask[];
extern DrawBuffer *fieldbuffer;
extern DrawBuffer *drawto_field;