#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))
+#if 1
+#define IS_EQUAL_OR_IN_GROUP(e, ge) \
+ (ge == EL_ANY_ELEMENT ? TRUE : \
+ IS_GROUP_ELEMENT(ge) ? IS_IN_GROUP(e, GROUP_NR(ge)) : (e) == (ge))
+#else
#define IS_EQUAL_OR_IN_GROUP(e, ge) \
(IS_GROUP_ELEMENT(ge) ? IS_IN_GROUP(e, GROUP_NR(ge)) : (e) == (ge))
#endif
+#endif
+
#define IS_PLAYER(x, y) (ELEM_IS_PLAYER(StorePlayer[x][y]))
#define IS_FREE(x, y) (Feld[x][y] == EL_EMPTY && !IS_PLAYER(x, y))
#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 EL_BD_EXPANDABLE_WALL 713
-#define NUM_FILE_ELEMENTS 714
+#define EL_LAST_CE_8 714
+#define EL_LAST_CE_7 715
+#define EL_LAST_CE_6 716
+#define EL_LAST_CE_5 717
+#define EL_LAST_CE_4 718
+#define EL_LAST_CE_3 719
+#define EL_LAST_CE_2 720
+#define EL_LAST_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 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 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.)
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];
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 */
extern struct GlobalInfo global;
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[];