X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fmain.h;h=12d5ea2398ec471420627234ed5e6f1a1c0f4c1c;hp=24bcc8469af2aee49f7eb4a4784fe9daa6c992b5;hb=601cca5b35649856ff49e1bcb3806592b736662c;hpb=5f926b2dd808d7336f7ec63499fb0776e8513e97 diff --git a/src/main.h b/src/main.h index 24bcc846..12d5ea23 100644 --- a/src/main.h +++ b/src/main.h @@ -27,8 +27,8 @@ #include "libgame/libgame.h" -#include "conf_gfx.h" -#include "conf_snd.h" +#include "conf_gfx.h" /* include auto-generated data structure definitions */ +#include "conf_snd.h" /* include auto-generated data structure definitions */ #define IMG_UNDEFINED (-1) #define IMG_EMPTY IMG_EMPTY_SPACE @@ -101,6 +101,8 @@ #define EP_BIT_TUBE (1 << 3) #define EP_BIT_EM_SLIPPERY_WALL (1 << 4) +#define EP_BITMASK_DEFAULT 0 + #define IS_AMOEBALIVE(e) (Properties1[e] & EP_BIT_AMOEBALIVE) #define IS_AMOEBOID(e) (Properties1[e] & EP_BIT_AMOEBOID) #define IS_SCHLUESSEL(e) (Properties1[e] & EP_BIT_SCHLUESSEL) @@ -182,6 +184,7 @@ #define IS_ANIMATED(g) (ANIM_FRAMES(g) > 1) #define IS_NEW_DELAY(f, g) ((f) % ANIM_DELAY(g) == 0) #define IS_NEW_FRAME(f, g) (IS_ANIMATED(g) && IS_NEW_DELAY(f, g)) +#define IS_NEXT_FRAME(f, g) (IS_NEW_FRAME(f, g) && (f) > 0) #define IS_LOOP_SOUND(s) (sound_info[s].loop) @@ -429,41 +432,9 @@ #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) -#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) + +#include "conf_chr.h" /* include auto-generated data structure definitions */ + #define EL_CHAR_ASCII0_END (EL_CHAR_ASCII0 + 111) #define EL_CHAR_END (EL_CHAR_START + 79) @@ -656,8 +627,9 @@ #define EL_UNUSED_359 359 #define EL_CUSTOM_START 360 -#define EL_CUSTOM_1 (EL_CUSTOM_START + 0) -#define EL_CUSTOM_128 (EL_CUSTOM_START + 127) + +#include "conf_cus.h" /* include auto-generated data structure definitions */ + #define EL_CUSTOM_END (EL_CUSTOM_START + 127) #define NUM_CUSTOM_ELEMENTS 128 @@ -730,7 +702,7 @@ #define EL_MAGIC_WALL_FILLING (EL_FIRST_RUNTIME_UNREAL + 11) #define EL_BD_MAGIC_WALL_FILLING (EL_FIRST_RUNTIME_UNREAL + 12) -/* dummy (not drawable) runtime elements (internal use only) */ +/* dummy elements (never used as game elements, only used as graphics) */ #define EL_FIRST_DUMMY (EL_FIRST_RUNTIME_UNREAL + 13) #define EL_STEELWALL_TOPLEFT (EL_FIRST_DUMMY + 0) @@ -746,35 +718,15 @@ #define EL_INVISIBLE_STEELWALL_HORIZONTAL (EL_FIRST_DUMMY + 10) #define EL_INVISIBLE_STEELWALL_VERTICAL (EL_FIRST_DUMMY + 11) #define EL_SAND_CRUMBLED (EL_FIRST_DUMMY + 12) -#define EL_BD_AMOEBA_PART1 (EL_FIRST_DUMMY + 13) -#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_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_FULL_PART1 (EL_FIRST_DUMMY + 25) -#define EL_AMOEBA_FULL_PART2 (EL_FIRST_DUMMY + 26) -#define EL_AMOEBA_FULL_PART3 (EL_FIRST_DUMMY + 27) -#define EL_AMOEBA_FULL_PART4 (EL_FIRST_DUMMY + 28) -#define EL_AMOEBA_DEAD_PART1 (EL_FIRST_DUMMY + 29) -#define EL_AMOEBA_DEAD_PART2 (EL_FIRST_DUMMY + 30) -#define EL_AMOEBA_DEAD_PART3 (EL_FIRST_DUMMY + 31) -#define EL_AMOEBA_DEAD_PART4 (EL_FIRST_DUMMY + 32) -#define EL_DYNABOMB_ACTIVE (EL_FIRST_DUMMY + 33) -#define EL_SHIELD_NORMAL_ACTIVE (EL_FIRST_DUMMY + 34) -#define EL_SHIELD_DEADLY_ACTIVE (EL_FIRST_DUMMY + 35) -#define EL_ARROW_RED_LEFT (EL_FIRST_DUMMY + 36) -#define EL_ARROW_RED_RIGHT (EL_FIRST_DUMMY + 37) -#define EL_ARROW_RED_UP (EL_FIRST_DUMMY + 38) -#define EL_ARROW_RED_DOWN (EL_FIRST_DUMMY + 39) - -#define MAX_NUM_ELEMENTS (EL_FIRST_DUMMY + 40) +#define EL_DYNABOMB_ACTIVE (EL_FIRST_DUMMY + 13) +#define EL_SHIELD_NORMAL_ACTIVE (EL_FIRST_DUMMY + 14) +#define EL_SHIELD_DEADLY_ACTIVE (EL_FIRST_DUMMY + 15) +#define EL_ARROW_RED_LEFT (EL_FIRST_DUMMY + 16) +#define EL_ARROW_RED_RIGHT (EL_FIRST_DUMMY + 17) +#define EL_ARROW_RED_UP (EL_FIRST_DUMMY + 18) +#define EL_ARROW_RED_DOWN (EL_FIRST_DUMMY + 19) + +#define MAX_NUM_ELEMENTS (EL_FIRST_DUMMY + 20) /* values for graphics/sounds action types */ @@ -804,29 +756,36 @@ /* values for special image configuration suffixes */ #define GFX_SPECIAL_ARG_EDITOR 0 +#define GFX_SPECIAL_ARG_PREVIEW 1 -#define NUM_SPECIAL_GFX_ARGS 1 +#define NUM_SPECIAL_GFX_ARGS 2 /* values for image configuration suffixes */ -#define GFX_ARG_XPOS 0 -#define GFX_ARG_YPOS 1 -#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_RANDOM 13 -#define GFX_ARG_MODE_REVERSE 14 -#define GFX_ARG_GLOBAL_SYNC 15 - -#define NUM_GFX_ARGS 16 +#define GFX_ARG_X 0 +#define GFX_ARG_Y 1 +#define GFX_ARG_XPOS 2 +#define GFX_ARG_YPOS 3 +#define GFX_ARG_WIDTH 4 +#define GFX_ARG_HEIGHT 5 +#define GFX_ARG_OFFSET 6 +#define GFX_ARG_VERTICAL 7 +#define GFX_ARG_XOFFSET 8 +#define GFX_ARG_YOFFSET 9 +#define GFX_ARG_FRAMES 10 +#define GFX_ARG_START_FRAME 11 +#define GFX_ARG_DELAY 12 +#define GFX_ARG_MODE_LOOP 13 +#define GFX_ARG_MODE_LINEAR 14 +#define GFX_ARG_MODE_PINGPONG 15 +#define GFX_ARG_MODE_PINGPONG2 16 +#define GFX_ARG_MODE_RANDOM 17 +#define GFX_ARG_MODE_REVERSE 18 +#define GFX_ARG_GLOBAL_SYNC 19 +#define GFX_ARG_STEP_OFFSET 20 +#define GFX_ARG_STEP_DELAY 21 + +#define NUM_GFX_ARGS 22 /* values for sound configuration suffixes */ @@ -1060,6 +1019,7 @@ struct ElementInfo int direction_graphic[NUM_ACTIONS][NUM_DIRECTIONS]; int editor_graphic; /* graphic displayed in level editor */ + int preview_graphic; /* graphic displayed in level preview */ int sound[NUM_ACTIONS]; /* default sounds for several actions */ }; @@ -1067,13 +1027,16 @@ struct ElementInfo struct GraphicInfo { Bitmap *bitmap; - int src_x, src_y; /* derived from (tile sized) .xpos/.ypos */ + 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 anim_frames; int anim_start_frame; int anim_delay; /* important: delay of 1 means "no delay"! */ int anim_mode; boolean anim_global_sync; + int step_offset; /* optional step offset of toon animations */ + int step_delay; /* optional step delay of toon animations */ #if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND) Pixmap clip_mask; /* single-graphic-only clip mask for X11 */