X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=458c7e188ffbceec80a2506a81265b56a2f2fa80;hb=88a46f726da49d5ae03e736b1388a4b854221685;hp=edac5c489d6bf4a50c78371a773ae59d5c81b332;hpb=7db0a9ae54a91806b66eb918f28309bb875e3b69;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index edac5c48..458c7e18 100644 --- a/src/main.h +++ b/src/main.h @@ -30,6 +30,9 @@ #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 WIN_XSIZE 672 #define WIN_YSIZE 560 @@ -252,9 +255,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,38 +424,38 @@ #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_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 : \ @@ -723,23 +726,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 +1317,40 @@ /* 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_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_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_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 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_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 /* values for sound configuration suffixes */ /* (currently none) */ @@ -1405,12 +1414,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 @@ -1564,11 +1567,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,12 +1583,12 @@ 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_delay; /* important: delay of 1 means "no delay"! */ int anim_mode; boolean anim_global_sync; - boolean anim_vertical; }; extern GC tile_clip_gc; @@ -1612,6 +1615,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];