X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=2833e094cfacf96086e69d8ae92a6e7223c1bb82;hb=ac4c028b525860750de315d626730ac493f56944;hp=b75fc447bfa4a5eb6371592522d8ef2a56508ac0;hpb=91afd13180ad610e2a6cbef32b85677cf8148864;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index b75fc447..2833e094 100644 --- a/src/main.h +++ b/src/main.h @@ -60,87 +60,121 @@ #define IN_SCR_FIELD(x,y) ((x)>=BX1 && (x)<=BX2 && (y)>=BY1 &&(y)<=BY2) #define IN_LEV_FIELD(x,y) ((x)>=0 && (x)=0 &&(y)= EL_CUSTOM_START && \ (e) <= EL_CUSTOM_END) @@ -171,7 +205,8 @@ #define PLAYERINFO(x,y) (&stored_player[StorePlayer[x][y]-EL_PLAYER_1]) #define SHIELD_ON(p) ((p)->shield_normal_time_left > 0) -#define PROTECTED_FIELD(x,y) (IS_TUBE(Feld[x][y])) +#define PROTECTED_FIELD(x,y) (IS_ACCESSIBLE_INSIDE(Feld[x][y]) && \ + IS_INDESTRUCTIBLE(Feld[x][y])) #define PLAYER_PROTECTED(x,y) (SHIELD_ON(PLAYERINFO(x, y)) || \ PROTECTED_FIELD(x, y)) @@ -333,14 +368,14 @@ #define EL_KEY_2 33 #define EL_KEY_3 34 #define EL_KEY_4 35 -#define EL_GATE_1 36 -#define EL_GATE_2 37 -#define EL_GATE_3 38 -#define EL_GATE_4 39 -#define EL_GATE_1_GRAY 40 -#define EL_GATE_2_GRAY 41 -#define EL_GATE_3_GRAY 42 -#define EL_GATE_4_GRAY 43 +#define EL_GATE_1_CLOSED 36 +#define EL_GATE_2_CLOSED 37 +#define EL_GATE_3_CLOSED 38 +#define EL_GATE_4_CLOSED 39 +#define EL_GATE_1_GRAY_CLOSED 40 +#define EL_GATE_2_GRAY_CLOSED 41 +#define EL_GATE_3_GRAY_CLOSED 42 +#define EL_GATE_4_GRAY_CLOSED 43 #define EL_DYNAMITE 44 #define EL_PACMAN 45 #define EL_INVISIBLE_WALL 46 @@ -438,24 +473,16 @@ #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 EL_EXPANDABLE_WALL_ANY 202 -#define EL_EM_GATE_1 203 -#define EL_EM_GATE_2 204 -#define EL_EM_GATE_3 205 -#define EL_EM_GATE_4 206 +#define EL_EM_GATE_1_CLOSED 203 +#define EL_EM_GATE_2_CLOSED 204 +#define EL_EM_GATE_3_CLOSED 205 +#define EL_EM_GATE_4_CLOSED 206 #define EL_EM_KEY_2_FILE 207 #define EL_EM_KEY_3_FILE 208 @@ -505,10 +532,10 @@ #define EL_SP_CHIP_BOTTOM (EL_SP_START + 39) #define EL_SP_END (EL_SP_START + 39) -#define EL_EM_GATE_1_GRAY 250 -#define EL_EM_GATE_2_GRAY 251 -#define EL_EM_GATE_3_GRAY 252 -#define EL_EM_GATE_4_GRAY 253 +#define EL_EM_GATE_1_GRAY_CLOSED 250 +#define EL_EM_GATE_2_GRAY_CLOSED 251 +#define EL_EM_GATE_3_GRAY_CLOSED 252 +#define EL_EM_GATE_4_GRAY_CLOSED 253 #define EL_UNUSED_254 254 #define EL_UNUSED_255 255 @@ -685,9 +712,25 @@ #define EL_BD_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 43) #define EL_MAGIC_WALL_DEAD (EL_FIRST_RUNTIME_REAL + 44) #define EL_BD_MAGIC_WALL_DEAD (EL_FIRST_RUNTIME_REAL + 45) +#define EL_GATE_1_OPEN (EL_FIRST_RUNTIME_REAL + 46) +#define EL_GATE_2_OPEN (EL_FIRST_RUNTIME_REAL + 47) +#define EL_GATE_3_OPEN (EL_FIRST_RUNTIME_REAL + 48) +#define EL_GATE_4_OPEN (EL_FIRST_RUNTIME_REAL + 49) +#define EL_GATE_1_GRAY_OPEN (EL_FIRST_RUNTIME_REAL + 50) +#define EL_GATE_2_GRAY_OPEN (EL_FIRST_RUNTIME_REAL + 51) +#define EL_GATE_3_GRAY_OPEN (EL_FIRST_RUNTIME_REAL + 52) +#define EL_GATE_4_GRAY_OPEN (EL_FIRST_RUNTIME_REAL + 53) +#define EL_EM_GATE_1_OPEN (EL_FIRST_RUNTIME_REAL + 54) +#define EL_EM_GATE_2_OPEN (EL_FIRST_RUNTIME_REAL + 55) +#define EL_EM_GATE_3_OPEN (EL_FIRST_RUNTIME_REAL + 56) +#define EL_EM_GATE_4_OPEN (EL_FIRST_RUNTIME_REAL + 57) +#define EL_EM_GATE_1_GRAY_OPEN (EL_FIRST_RUNTIME_REAL + 58) +#define EL_EM_GATE_2_GRAY_OPEN (EL_FIRST_RUNTIME_REAL + 59) +#define EL_EM_GATE_3_GRAY_OPEN (EL_FIRST_RUNTIME_REAL + 60) +#define EL_EM_GATE_4_GRAY_OPEN (EL_FIRST_RUNTIME_REAL + 61) /* "unreal" (and therefore not drawable) runtime elements */ -#define EL_FIRST_RUNTIME_UNREAL (EL_FIRST_RUNTIME_REAL + 46) +#define EL_FIRST_RUNTIME_UNREAL (EL_FIRST_RUNTIME_REAL + 62) #define EL_BLOCKED (EL_FIRST_RUNTIME_UNREAL + 0) #define EL_EXPLOSION (EL_FIRST_RUNTIME_UNREAL + 1) @@ -792,10 +835,9 @@ #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 */ @@ -818,20 +860,22 @@ #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 @@ -848,20 +892,27 @@ #define PROGRAM_VERSION_MAJOR 2 #define PROGRAM_VERSION_MINOR 2 #define PROGRAM_VERSION_PATCH 0 -#define PROGRAM_VERSION_STRING "2.2.0rc4" +#define PROGRAM_VERSION_STRING "2.2.0rc6" #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" @@ -987,6 +1038,8 @@ struct LevelInfo boolean gravity; boolean em_slippery_gems; /* EM style "gems slip from wall" behaviour */ + short custom_element_successor[NUM_CUSTOM_ELEMENTS]; + boolean no_level_file; }; @@ -1098,6 +1151,7 @@ struct GraphicInfo 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; @@ -1165,6 +1219,7 @@ extern short MovDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short Store[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short Store2[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short StorePlayer[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern short Back[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern boolean Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short JustStopped[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; @@ -1173,8 +1228,7 @@ extern short AmoebaCnt2[MAX_NUM_AMOEBA]; extern short ExplodePhase[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short ExplodeField[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -extern unsigned long Properties1[MAX_NUM_ELEMENTS]; -extern unsigned long Properties2[MAX_NUM_ELEMENTS]; +extern unsigned long Properties[MAX_NUM_ELEMENTS][NUM_EP_BITFIELDS]; extern int GfxFrame[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern int GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY];