X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=21906949f6bc1bfaa0dd010c9ef92a0a717c0362;hb=1e2c52c04364f8b724bde8ee540c56dd1062a1c9;hp=3fc93b732c3d53bb42eb0ec031db182c63505c66;hpb=3378979a81f39e4a4082d208bf288492d87f5cd1;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index 3fc93b73..21906949 100644 --- a/src/main.h +++ b/src/main.h @@ -140,6 +140,9 @@ #define IS_TUBE(e) (Properties2[e] & EP_BIT_TUBE) #define IS_EM_SLIPPERY_WALL(e) (Properties2[e] & EP_BIT_EM_SLIPPERY_WALL) +#define IS_CUSTOM_ELEMENT(e) ((e) >= EL_CUSTOM_START && \ + (e) <= EL_CUSTOM_END) + #define IS_PLAYER(x,y) (ELEM_IS_PLAYER(StorePlayer[x][y])) #define IS_FREE(x,y) (Feld[x][y] == EL_EMPTY && !IS_PLAYER(x,y)) @@ -177,7 +180,8 @@ #define ANIM_MODE(g) (graphic_info[g].anim_mode) #define IS_ANIMATED(g) (ANIM_FRAMES(g) > 1) -#define IS_NEW_FRAME(f, g) ((f) % ANIM_DELAY(g) == 0) +#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_LOOP_SOUND(s) (sound_info[s].loop) @@ -656,6 +660,7 @@ #define EL_CUSTOM_128 (EL_CUSTOM_START + 127) #define EL_CUSTOM_END (EL_CUSTOM_START + 127) +#define NUM_CUSTOM_ELEMENTS 128 #define NUM_FILE_ELEMENTS 488 @@ -725,7 +730,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) @@ -797,6 +802,12 @@ #define NUM_ACTIONS 21 +/* values for special image configuration suffixes */ +#define GFX_SPECIAL_ARG_EDITOR 0 +#define GFX_SPECIAL_ARG_PREVIEW 1 + +#define NUM_SPECIAL_GFX_ARGS 2 + /* values for image configuration suffixes */ #define GFX_ARG_XPOS 0 @@ -1049,6 +1060,9 @@ struct ElementInfo /* special graphics for left/right/up/down */ 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 */ }; @@ -1087,6 +1101,12 @@ struct ElementDirectionInfo int value; }; +struct SpecialSuffixInfo +{ + char *suffix; + int value; +}; + #if 0 extern GC tile_clip_gc; @@ -1163,6 +1183,7 @@ extern struct GlobalInfo global; extern struct ElementInfo element_info[]; extern struct ElementActionInfo element_action_info[]; extern struct ElementDirectionInfo element_direction_info[]; +extern struct SpecialSuffixInfo special_suffix_info[]; extern struct GraphicInfo *graphic_info; extern struct SoundInfo *sound_info; extern struct ConfigInfo image_config[], sound_config[];