X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=8d79c60cb208a8b446c6df10006ff70f25500052;hb=38ea4e57bc9b730abf7a15f8cc235465e6f0ad4c;hp=d119689010aee7c6f8212e049bed330d02fc6175;hpb=1847b9f73a9189758958980912c005dc289e1b08;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index d1196890..8d79c60c 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)) @@ -784,6 +793,11 @@ IS_EDITOR_CASCADE_ACTIVE(e) ? (e) - 1 : (e)) #define EL_NAME(e) ((e) >= 0 ? element_info[e].token_name : "(?)") +#define MV_TEXT(d) ((d) == MV_NONE ? "MV_NONE" : \ + (d) == MV_LEFT ? "MV_LEFT" : \ + (d) == MV_RIGHT ? "MV_RIGHT" : \ + (d) == MV_UP ? "MV_UP" : \ + (d) == MV_DOWN ? "MV_DOWN" : "(various)") /* fundamental game speed values */ #define MICROLEVEL_SCROLL_DELAY 50 /* delay for scrolling micro level */ @@ -862,7 +876,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) @@ -1302,7 +1316,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 */ @@ -1455,10 +1490,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) @@ -1707,27 +1742,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 8 +#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.) @@ -1741,16 +1786,18 @@ #define FILE_VERSION_1_2 VERSION_IDENT(1,2,0,0) #define FILE_VERSION_1_4 VERSION_IDENT(1,4,0,0) #define FILE_VERSION_2_0 VERSION_IDENT(2,0,0,0) +#define FILE_VERSION_3_0 VERSION_IDENT(3,0,0,0) /* file version does not change for every program version, but is changed when new features are introduced that are incompatible with older file versions, so that they can be treated accordingly */ -#define FILE_VERSION_ACTUAL FILE_VERSION_2_0 +#define FILE_VERSION_ACTUAL FILE_VERSION_3_0 #define GAME_VERSION_1_0 FILE_VERSION_1_0 #define GAME_VERSION_1_2 FILE_VERSION_1_2 #define GAME_VERSION_1_4 FILE_VERSION_1_4 #define GAME_VERSION_2_0 FILE_VERSION_2_0 +#define GAME_VERSION_3_0 FILE_VERSION_3_0 #define GAME_VERSION_ACTUAL VERSION_IDENT(PROGRAM_VERSION_MAJOR, \ PROGRAM_VERSION_MINOR, \ @@ -1805,6 +1852,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]; @@ -2174,20 +2230,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 */ @@ -2279,6 +2343,7 @@ struct HelpAnimInfo extern Bitmap *bitmap_db_title; extern Bitmap *bitmap_db_field; +extern Bitmap *bitmap_db_panel; extern Bitmap *bitmap_db_door; extern Pixmap tile_clipmask[]; extern DrawBuffer *fieldbuffer; @@ -2367,6 +2432,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[];