X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain.h;h=cd6ffe2b3bd8d9f020f56221c6a802e26321c2aa;hb=c0c5862d9ee59c70412b1c35e558101b109a8ec9;hp=ddd1218669d2e0a7377e412f899928b971edb27d;hpb=2447100f7c3eacf4361973fa90814d9bd0e2b055;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index ddd12186..cd6ffe2b 100644 --- a/src/main.h +++ b/src/main.h @@ -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) @@ -713,10 +715,17 @@ #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)) @@ -771,6 +780,9 @@ #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)) @@ -867,7 +879,7 @@ #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) @@ -1307,7 +1319,28 @@ #define EL_YAMYAM_UP 711 #define EL_YAMYAM_DOWN 712 -#define NUM_FILE_ELEMENTS 713 +#define EL_BD_EXPANDABLE_WALL 713 + +#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 */ @@ -1460,10 +1493,10 @@ #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) @@ -1712,27 +1745,37 @@ /* program information and versioning definitions */ #define PROGRAM_VERSION_MAJOR 3 #define PROGRAM_VERSION_MINOR 2 -#define PROGRAM_VERSION_PATCH 0 -#define PROGRAM_VERSION_BUILD 9 +#define PROGRAM_VERSION_PATCH 1 +#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.) @@ -1799,6 +1842,9 @@ 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]; }; @@ -1812,6 +1858,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]; @@ -2181,20 +2236,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 */ @@ -2284,8 +2347,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; @@ -2374,6 +2438,7 @@ extern struct TapeInfo tape; 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[];