X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=37fcb08bc6ca75734a5f16832f52554813a55bc7;hb=14089dac2cbe56e563863e1e5adb8847944fd262;hp=a0f3ad8034a14971724d366844b7ca41afe7e83f;hpb=7cd6d9ecca4ccd4927eddc994b616569ef23b231;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index a0f3ad80..37fcb08b 100644 --- a/src/main.h +++ b/src/main.h @@ -30,9 +30,10 @@ #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_CUSTOM_START IMG_CUSTOM_0 #define WIN_XSIZE 672 #define WIN_YSIZE 560 @@ -261,7 +262,7 @@ #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) @@ -449,6 +450,7 @@ #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) @@ -479,11 +481,22 @@ #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 @@ -661,7 +674,15 @@ #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_CUSTOM_START 360 +#define EL_CUSTOM_0 (EL_CUSTOM_START + 0) +#define EL_CUSTOM_31 (EL_CUSTOM_START + 127) +#define EL_CUSTOM_END (EL_CUSTOM_START + 127) + +#define NUM_FILE_ELEMENTS 488 /* "real" (and therefore drawable) runtime elements */ @@ -690,31 +711,30 @@ #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) @@ -1352,13 +1372,17 @@ #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 @@ -1367,14 +1391,23 @@ #define GFX_ARG_YPOS 1 #define GFX_ARG_OFFSET 2 #define GFX_ARG_VERTICAL 3 -#define GFX_ARG_FRAMES 4 -#define GFX_ARG_DELAY 5 -#define GFX_ARG_MODE_LOOP 6 -#define GFX_ARG_MODE_LINEAR 7 -#define GFX_ARG_MODE_PINGPONG 8 -#define GFX_ARG_MODE_PINGPONG2 9 -#define GFX_ARG_MODE_REVERSE 10 -#define GFX_ARG_GLOBAL_SYNC 11 +#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) */ @@ -1392,9 +1425,9 @@ #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.0rc2" #define PROGRAM_TITLE_STRING "Rocks'n'Diamonds" #define PROGRAM_AUTHOR_STRING "Holger Schemel" @@ -1526,6 +1559,8 @@ struct LevelInfo boolean double_speed; boolean gravity; boolean em_slippery_gems; /* EM style "gems slip from wall" behaviour */ + + boolean no_level_file; }; struct TapeInfo @@ -1545,6 +1580,8 @@ 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; @@ -1581,6 +1618,9 @@ struct GameInfo struct GlobalInfo { + char *autoplay_leveldir; + int autoplay_level_nr; + float frames_per_second; boolean fps_slowdown; int fps_slowdown_factor; @@ -1610,13 +1650,22 @@ struct NewGraphicInfo int src_x, src_y; /* derived from (tile sized) .xpos/.ypos */ int offset_x, offset_y; /* x/y offset to next animation frame */ int anim_frames; + int anim_start_frame; int anim_delay; /* important: delay of 1 means "no delay"! */ int anim_mode; boolean anim_global_sync; + +#if defined(TARGET_X11_NATIVE) + Pixmap clip_mask; /* single-graphic-only clip mask for X11 */ + GC clip_gc; /* single-graphic-only clip gc for X11 */ +#endif }; 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;