X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=72d6c23daefb3c227402e50aa81d391d7a2fd0b2;hb=994cb017022c658f115e3c9fc927d8a0cc83832c;hp=edac5c489d6bf4a50c78371a773ae59d5c81b332;hpb=7db0a9ae54a91806b66eb918f28309bb875e3b69;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index edac5c48..72d6c23d 100644 --- a/src/main.h +++ b/src/main.h @@ -30,6 +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_CUSTOM_START IMG_CUSTOM_0 #define WIN_XSIZE 672 #define WIN_YSIZE 560 @@ -158,11 +162,33 @@ #define TAPE_IS_STOPPED(x) (!(x).recording && !(x).playing) #define PLAYERINFO(x,y) (&stored_player[StorePlayer[x][y]-EL_PLAYER1]) -#define SHIELD_ON(p) ((p)->shield_passive_time_left > 0) +#define SHIELD_ON(p) ((p)->shield_normal_time_left > 0) #define PROTECTED_FIELD(x,y) (IS_TUBE(Feld[x][y])) #define PLAYER_PROTECTED(x,y) (SHIELD_ON(PLAYERINFO(x, y)) || \ PROTECTED_FIELD(x, y)) +#define PLAYER_NR_GFX(g,i) ((g) + i * (IMG_PLAYER2 - IMG_PLAYER1)) + + +#if 0 + +/* Bitmaps with graphic file */ +#define PIX_BACK 0 +#define PIX_DOOR 1 +#define PIX_TOONS 2 +#define PIX_FONT_BIG 3 +#define PIX_FONT_SMALL 4 +#define PIX_FONT_MEDIUM 5 +#define PIX_FONT_EM 6 +/* Bitmaps without graphic file */ +#define PIX_DB_DOOR 7 +#define PIX_DB_FIELD 8 + +#define NUM_PICTURES 7 +#define NUM_BITMAPS 9 + +#else + /* Bitmaps with graphic file */ #define PIX_BACK 0 #define PIX_ELEMENTS 1 @@ -183,6 +209,8 @@ #define NUM_PICTURES 12 #define NUM_BITMAPS 14 +#endif + /* boundaries of arrays etc. */ #define MAX_LEVEL_NAME_LEN 32 #define MAX_LEVEL_AUTHOR_LEN 32 @@ -234,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) @@ -252,9 +280,9 @@ #define MICRO_GFX_PER_LINE 16 #define MINI_FONT_STARTX 0 -#define MINI_FONT_STARTY 128 -#define MICRO_FONT_STARTX 408 -#define MICRO_FONT_STARTY 128 +#define MINI_FONT_STARTY 160 +#define MICRO_FONT_STARTX 384 +#define MICRO_FONT_STARTY 160 #define HEROES_PER_LINE 16 @@ -421,42 +449,54 @@ #define EL_EM_KEY1_FILE 119 #define EL_CHAR_START 120 -#define EL_CHAR_ASCII0 (EL_CHAR_START-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) -#define EL_CHAR_DOLLAR (EL_CHAR_ASCII0+36) -#define EL_CHAR_PROCENT (EL_CHAR_ASCII0+37) -#define EL_CHAR_AMPERSAND (EL_CHAR_ASCII0+38) -#define EL_CHAR_APOSTROPHE (EL_CHAR_ASCII0+39) -#define EL_CHAR_PARENLEFT (EL_CHAR_ASCII0+40) -#define EL_CHAR_PARENRIGHT (EL_CHAR_ASCII0+41) -#define EL_CHAR_ASTERISK (EL_CHAR_ASCII0+42) -#define EL_CHAR_PLUS (EL_CHAR_ASCII0+43) -#define EL_CHAR_COMMA (EL_CHAR_ASCII0+44) -#define EL_CHAR_MINUS (EL_CHAR_ASCII0+45) -#define EL_CHAR_PERIOD (EL_CHAR_ASCII0+46) -#define EL_CHAR_SLASH (EL_CHAR_ASCII0+47) -#define EL_CHAR_0 (EL_CHAR_ASCII0+48) -#define EL_CHAR_9 (EL_CHAR_ASCII0+57) -#define EL_CHAR_COLON (EL_CHAR_ASCII0+58) -#define EL_CHAR_SEMICOLON (EL_CHAR_ASCII0+59) -#define EL_CHAR_LESS (EL_CHAR_ASCII0+60) -#define EL_CHAR_EQUAL (EL_CHAR_ASCII0+61) -#define EL_CHAR_GREATER (EL_CHAR_ASCII0+62) -#define EL_CHAR_QUESTION (EL_CHAR_ASCII0+63) -#define EL_CHAR_AT (EL_CHAR_ASCII0+64) -#define EL_CHAR_A (EL_CHAR_ASCII0+65) -#define EL_CHAR_Z (EL_CHAR_ASCII0+90) -#define EL_CHAR_AE (EL_CHAR_ASCII0+91) -#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_END (EL_CHAR_START+79) - -#define EL_CHAR(x) ((x) == 'Ä' ? EL_CHAR_AE : \ - (x) == 'Ö' ? EL_CHAR_OE : \ - (x) == 'Ü' ? EL_CHAR_UE : \ +#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) +#define EL_CHAR_DOLLAR (EL_CHAR_ASCII0 + 36) +#define EL_CHAR_PROCENT (EL_CHAR_ASCII0 + 37) +#define EL_CHAR_AMPERSAND (EL_CHAR_ASCII0 + 38) +#define EL_CHAR_APOSTROPHE (EL_CHAR_ASCII0 + 39) +#define EL_CHAR_PARENLEFT (EL_CHAR_ASCII0 + 40) +#define EL_CHAR_PARENRIGHT (EL_CHAR_ASCII0 + 41) +#define EL_CHAR_ASTERISK (EL_CHAR_ASCII0 + 42) +#define EL_CHAR_PLUS (EL_CHAR_ASCII0 + 43) +#define EL_CHAR_COMMA (EL_CHAR_ASCII0 + 44) +#define EL_CHAR_MINUS (EL_CHAR_ASCII0 + 45) +#define EL_CHAR_PERIOD (EL_CHAR_ASCII0 + 46) +#define EL_CHAR_SLASH (EL_CHAR_ASCII0 + 47) +#define EL_CHAR_0 (EL_CHAR_ASCII0 + 48) +#define EL_CHAR_9 (EL_CHAR_ASCII0 + 57) +#define EL_CHAR_COLON (EL_CHAR_ASCII0 + 58) +#define EL_CHAR_SEMICOLON (EL_CHAR_ASCII0 + 59) +#define EL_CHAR_LESS (EL_CHAR_ASCII0 + 60) +#define EL_CHAR_EQUAL (EL_CHAR_ASCII0 + 61) +#define EL_CHAR_GREATER (EL_CHAR_ASCII0 + 62) +#define EL_CHAR_QUESTION (EL_CHAR_ASCII0 + 63) +#define EL_CHAR_AT (EL_CHAR_ASCII0 + 64) +#define EL_CHAR_A (EL_CHAR_ASCII0 + 65) +#define EL_CHAR_Z (EL_CHAR_ASCII0 + 90) +#define EL_CHAR_AE (EL_CHAR_ASCII0 + 91) +#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 : \ + (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 @@ -634,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 */ @@ -663,37 +711,36 @@ #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) -#define EL_CRACKINGNUT (EL_FIRST_RUNTIME_UNREAL + 2) -#define EL_ACID_SPLASHING_LEFT (EL_FIRST_RUNTIME_UNREAL + 3) -#define EL_ACID_SPLASHING_RIGHT (EL_FIRST_RUNTIME_UNREAL + 4) +#define EL_NUT_CRACKING (EL_FIRST_RUNTIME_UNREAL + 2) +#define EL_ACID_SPLASH_LEFT (EL_FIRST_RUNTIME_UNREAL + 3) +#define EL_ACID_SPLASH_RIGHT (EL_FIRST_RUNTIME_UNREAL + 4) #define EL_AMOEBA_CREATING (EL_FIRST_RUNTIME_UNREAL + 5) #define EL_AMOEBA_SHRINKING (EL_FIRST_RUNTIME_UNREAL + 6) #define EL_WALL_GROWING_ACTIVE (EL_FIRST_RUNTIME_UNREAL + 7) @@ -723,23 +770,27 @@ #define EL_BD_AMOEBA_PART2 (EL_FIRST_DUMMY + 14) #define EL_BD_AMOEBA_PART3 (EL_FIRST_DUMMY + 15) #define EL_BD_AMOEBA_PART4 (EL_FIRST_DUMMY + 16) -#define EL_AMOEBA_PART1 (EL_FIRST_DUMMY + 17) -#define EL_AMOEBA_PART2 (EL_FIRST_DUMMY + 18) -#define EL_AMOEBA_PART3 (EL_FIRST_DUMMY + 19) -#define EL_AMOEBA_PART4 (EL_FIRST_DUMMY + 20) -#define EL_AMOEBA_DEAD_PART1 (EL_FIRST_DUMMY + 21) -#define EL_AMOEBA_DEAD_PART2 (EL_FIRST_DUMMY + 22) -#define EL_AMOEBA_DEAD_PART3 (EL_FIRST_DUMMY + 23) -#define EL_AMOEBA_DEAD_PART4 (EL_FIRST_DUMMY + 24) -#define EL_DYNABOMB_ACTIVE (EL_FIRST_DUMMY + 25) -#define EL_SHIELD_NORMAL_ACTIVE (EL_FIRST_DUMMY + 26) -#define EL_SHIELD_DEADLY_ACTIVE (EL_FIRST_DUMMY + 27) -#define EL_ARROW_RED_LEFT (EL_FIRST_DUMMY + 28) -#define EL_ARROW_RED_RIGHT (EL_FIRST_DUMMY + 29) -#define EL_ARROW_RED_UP (EL_FIRST_DUMMY + 30) -#define EL_ARROW_RED_DOWN (EL_FIRST_DUMMY + 31) - -#define MAX_NUM_ELEMENTS (EL_FIRST_DUMMY + 32) +#define EL_AMOEBA_WET_PART1 (EL_FIRST_DUMMY + 17) +#define EL_AMOEBA_WET_PART2 (EL_FIRST_DUMMY + 18) +#define EL_AMOEBA_WET_PART3 (EL_FIRST_DUMMY + 19) +#define EL_AMOEBA_WET_PART4 (EL_FIRST_DUMMY + 20) +#define EL_AMOEBA_DRY_PART1 (EL_FIRST_DUMMY + 21) +#define EL_AMOEBA_DRY_PART2 (EL_FIRST_DUMMY + 22) +#define EL_AMOEBA_DRY_PART3 (EL_FIRST_DUMMY + 23) +#define EL_AMOEBA_DRY_PART4 (EL_FIRST_DUMMY + 24) +#define EL_AMOEBA_DEAD_PART1 (EL_FIRST_DUMMY + 25) +#define EL_AMOEBA_DEAD_PART2 (EL_FIRST_DUMMY + 26) +#define EL_AMOEBA_DEAD_PART3 (EL_FIRST_DUMMY + 27) +#define EL_AMOEBA_DEAD_PART4 (EL_FIRST_DUMMY + 28) +#define EL_DYNABOMB_ACTIVE (EL_FIRST_DUMMY + 29) +#define EL_SHIELD_NORMAL_ACTIVE (EL_FIRST_DUMMY + 30) +#define EL_SHIELD_DEADLY_ACTIVE (EL_FIRST_DUMMY + 31) +#define EL_ARROW_RED_LEFT (EL_FIRST_DUMMY + 32) +#define EL_ARROW_RED_RIGHT (EL_FIRST_DUMMY + 33) +#define EL_ARROW_RED_UP (EL_FIRST_DUMMY + 34) +#define EL_ARROW_RED_DOWN (EL_FIRST_DUMMY + 35) + +#define MAX_NUM_ELEMENTS (EL_FIRST_DUMMY + 36) /* game graphics: @@ -1310,38 +1361,53 @@ /* values for animation action types */ -#define GFX_ACTION_UNKNOWN 0 -#define GFX_ACTION_DEFAULT 1 -#define GFX_ACTION_WAITING 2 -#define GFX_ACTION_FALLING 3 -#define GFX_ACTION_MOVING 4 -#define GFX_ACTION_DIGGING 5 -#define GFX_ACTION_SNAPPING 6 -#define GFX_ACTION_COLLECTING 7 -#define GFX_ACTION_PUSHING 8 -#define GFX_ACTION_PASSING 9 -#define GFX_ACTION_IMPACT 10 -#define GFX_ACTION_CRACKING 11 +#define GFX_ACTION_DEFAULT 0 +#define GFX_ACTION_WAITING 1 +#define GFX_ACTION_FALLING 2 +#define GFX_ACTION_MOVING 3 +#define GFX_ACTION_DIGGING 4 +#define GFX_ACTION_SNAPPING 5 +#define GFX_ACTION_COLLECTING 6 +#define GFX_ACTION_PUSHING 7 +#define GFX_ACTION_PASSING 8 +#define GFX_ACTION_IMPACT 9 +#define GFX_ACTION_CRACKING 10 +#define GFX_ACTION_BREAKING 11 #define GFX_ACTION_ACTIVATING 12 -#define GFX_ACTION_EATING 13 -#define GFX_ACTION_ATTACKING 14 -#define GFX_ACTION_GROWING 15 -#define GFX_ACTION_OTHER 16 - -#define NUM_GFX_ACTIONS 17 +#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 /* values for image configuration suffixes */ #define GFX_ARG_XPOS 0 #define GFX_ARG_YPOS 1 -#define GFX_ARG_FRAMES 2 -#define GFX_ARG_DELAY 3 -#define GFX_ARG_PINGPONG 4 -#define GFX_ARG_PINGPONG2 5 -#define GFX_ARG_REVERSE 6 -#define GFX_ARG_GLOBAL_SYNC 7 -#define GFX_ARG_VERTICAL 8 +#define GFX_ARG_OFFSET 2 +#define GFX_ARG_VERTICAL 3 +#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) */ @@ -1359,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" @@ -1405,12 +1471,6 @@ PROGRAM_VERSION_MINOR, \ PROGRAM_VERSION_PATCH) -/* for DrawGraphicAnimation() [tools.c] and AnimateToon() [cartoons.c] */ -#define ANIM_NORMAL 0 -#define ANIM_REVERSE (1 << 0) -#define ANIM_PINGPONG (1 << 1) -#define ANIM_PINGPONG2 (1 << 2) - /* values for game_emulation */ #define EMU_NONE 0 #define EMU_BOULDERDASH 1 @@ -1468,8 +1528,8 @@ struct PlayerInfo int key[4]; int dynamite; int dynabomb_count, dynabomb_size, dynabombs_left, dynabomb_xl; - int shield_passive_time_left; - int shield_active_time_left; + int shield_normal_time_left; + int shield_deadly_time_left; }; struct LevelInfo @@ -1499,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 @@ -1518,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; @@ -1554,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; @@ -1564,11 +1631,11 @@ struct ElementInfo char *sound_class_name; /* classification for custom sound effects */ char *editor_description; /* short description for level editor */ + /* default graphics for several actions */ int graphic[NUM_GFX_ACTIONS_MAPPED]; /* special graphics for left/right/up/down */ int direction_graphic[NUM_GFX_ACTIONS_MAPPED][NUM_MV_DIRECTIONS]; - boolean has_direction_graphic[NUM_GFX_ACTIONS_MAPPED]; }; struct GraphicInfo @@ -1580,16 +1647,25 @@ struct GraphicInfo struct NewGraphicInfo { Bitmap *bitmap; - int src_x, src_y; + 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_delay; + int anim_start_frame; + int anim_delay; /* important: delay of 1 means "no delay"! */ int anim_mode; boolean anim_global_sync; - boolean anim_vertical; + +#if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND) + 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; @@ -1612,6 +1688,7 @@ 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 Frame[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern short GfxAction[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];