X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=8e918517e81c98d298f113bc8704258bb979962e;hb=291af230c1fb2e475725abe0451ed9271abe5617;hp=54340c1fda9da59d7c0be45eb1ae59cb69d3aa8f;hpb=5371d88561e5304599c11e33ed98dc3e5868f69f;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index 54340c1f..8e918517 100644 --- a/src/main.h +++ b/src/main.h @@ -190,7 +190,8 @@ /* macros for pre-defined properties */ #define ELEM_IS_PLAYER(e) HAS_PROPERTY(e, EP_PLAYER) -#define CAN_BE_CRUMBLED(e) HAS_PROPERTY(e, EP_CAN_BE_CRUMBLED) +#define CAN_BE_CRUMBLED_OLD(e) HAS_PROPERTY(e, EP_CAN_BE_CRUMBLED) +#define CAN_BE_CRUMBLED(e) HAS_PROPERTY(GFX_ELEMENT(e),EP_CAN_BE_CRUMBLED) #define CAN_MOVE(e) HAS_PROPERTY(e, EP_CAN_MOVE) #define CAN_PASS_MAGIC_WALL(e) HAS_PROPERTY(e, EP_CAN_PASS_MAGIC_WALL) #define IS_SWITCHABLE(e) HAS_PROPERTY(e, EP_SWITCHABLE) @@ -234,6 +235,10 @@ #define IS_CUSTOM_ELEMENT(e) ((e) >= EL_CUSTOM_START && \ (e) <= EL_CUSTOM_END) +#define GFX_ELEMENT(e) (IS_CUSTOM_ELEMENT(e) && \ + CUSTOM_ELEMENT_INFO(e).use_gfx_element ? \ + CUSTOM_ELEMENT_INFO(e).gfx_element : e) + #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)) @@ -1012,19 +1017,20 @@ struct PlayerInfo struct CustomElementChangeInfo { - unsigned long events; /* bitfield for change events */ - - short gfx_element; /* optional custom graphic element */ + unsigned long events; /* bitfield for change events */ - short successor; /* new custom element after change */ + int delay_fixed; /* added frame delay before changed (fixed) */ + int delay_random; /* added frame delay before changed (random) */ + int delay_frames; /* either 1 (frames) or 50 (seconds; 50 fps) */ - int delay_fixed; /* added frame delay before changed (fixed) */ - int delay_random; /* added frame delay before changed (random) */ - int delay_frames; /* either 1 (frames) or 50 (seconds; 50 fps) */ + short successor; /* new custom element after change */ }; struct CustomElementInfo { + boolean use_gfx_element; + short gfx_element; /* optional custom graphic element */ + struct CustomElementChangeInfo change; };