X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=239e6afbe7a5f632c7036473975ab8f8ba36e9d1;hb=85279bc51ad11bce89beae5b0e02f1faec520afa;hp=8ffeb3de6d9736a06e51fbfc382ea7b95da61b6d;hpb=4c2027809249e8cfb5d81ef0ab5835f40c3a3835;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index 8ffeb3de..239e6afb 100644 --- a/src/main.h +++ b/src/main.h @@ -63,26 +63,26 @@ /* values for configurable properties (custom elem's only, else pre-defined) */ #define EP_DIGGABLE 0 #define EP_COLLECTIBLE 1 -#define EP_DONT_GO_TO 2 -#define EP_ENEMY 3 +#define EP_DONT_RUN_INTO 2 +#define EP_DONT_COLLIDE_WITH 3 #define EP_DONT_TOUCH 4 #define EP_INDESTRUCTIBLE 5 #define EP_SLIPPERY 6 -#define EP_CAN_EXPLODE 7 +#define EP_CAN_CHANGE 7 #define EP_CAN_MOVE 8 #define EP_CAN_FALL 9 -#define EP_CAN_SMASH 10 -#define EP_WALKABLE_OVER 11 -#define EP_WALKABLE_INSIDE 12 -#define EP_WALKABLE_UNDER 13 -#define EP_PASSABLE_OVER 14 -#define EP_PASSABLE_INSIDE 15 -#define EP_PASSABLE_UNDER 16 -#define EP_CHANGEABLE 17 -#define EP_UNUSED_18 18 -#define EP_UNUSED_19 19 -#define EP_UNUSED_20 20 -#define EP_UNUSED_21 21 +#define EP_CAN_SMASH_FRIENDS 10 +#define EP_CAN_SMASH_ENEMIES 11 +#define EP_CAN_SMASH_EXPLOSIVES 12 +#define EP_CAN_EXPLODE_BY_FIRE 13 +#define EP_CAN_EXPLODE_SMASHED 14 +#define EP_CAN_EXPLODE_IMPACT 15 +#define EP_WALKABLE_OVER 16 +#define EP_WALKABLE_INSIDE 17 +#define EP_WALKABLE_UNDER 18 +#define EP_PASSABLE_OVER 19 +#define EP_PASSABLE_INSIDE 20 +#define EP_PASSABLE_UNDER 21 #define EP_UNUSED_22 22 #define EP_UNUSED_23 23 #define EP_PUSHABLE 24 @@ -106,35 +106,39 @@ #define EP_FOOD_PIG 36 #define EP_HISTORIC_WALL 37 #define EP_HISTORIC_SOLID 38 -#define EP_BELT 39 -#define EP_BELT_ACTIVE 40 -#define EP_BELT_SWITCH 41 -#define EP_TUBE 42 -#define EP_KEYGATE 43 -#define EP_AMOEBOID 44 -#define EP_AMOEBALIVE 45 -#define EP_HAS_CONTENT 46 -#define EP_ACTIVE_BOMB 47 -#define EP_INACTIVE 48 +#define EP_CLASSIC_ENEMY 39 +#define EP_BELT 40 +#define EP_BELT_ACTIVE 41 +#define EP_BELT_SWITCH 42 +#define EP_TUBE 43 +#define EP_KEYGATE 44 +#define EP_AMOEBOID 45 +#define EP_AMOEBALIVE 46 +#define EP_HAS_CONTENT 47 +#define EP_ACTIVE_BOMB 48 +#define EP_INACTIVE 49 /* values for derived properties (determined from properties above) */ -#define EP_ACCESSIBLE_OVER 49 -#define EP_ACCESSIBLE_INSIDE 50 -#define EP_ACCESSIBLE_UNDER 51 -#define EP_WALKABLE 52 -#define EP_PASSABLE 53 -#define EP_ACCESSIBLE 54 -#define EP_SNAPPABLE 55 -#define EP_WALL 56 -#define EP_SOLID_FOR_PUSHING 57 -#define EP_DRAGONFIRE_PROOF 58 -#define EP_EXPLOSION_PROOF 59 +#define EP_ACCESSIBLE_OVER 50 +#define EP_ACCESSIBLE_INSIDE 51 +#define EP_ACCESSIBLE_UNDER 52 +#define EP_WALKABLE 53 +#define EP_PASSABLE 54 +#define EP_ACCESSIBLE 55 +#define EP_SNAPPABLE 56 +#define EP_WALL 57 +#define EP_SOLID_FOR_PUSHING 58 +#define EP_DRAGONFIRE_PROOF 59 +#define EP_EXPLOSION_PROOF 60 +#define EP_CAN_SMASH 61 +#define EP_CAN_EXPLODE 62 /* values for internal purpose only (level editor) */ -#define EP_WALK_TO_OBJECT 60 -#define EP_DEADLY 61 +#define EP_EXPLODE_RESULT 63 +#define EP_WALK_TO_OBJECT 64 +#define EP_DEADLY 65 -#define NUM_ELEMENT_PROPERTIES 62 +#define NUM_ELEMENT_PROPERTIES 66 #define NUM_EP_BITFIELDS ((NUM_ELEMENT_PROPERTIES + 31) / 32) #define EP_BITFIELD_BASE 0 @@ -151,8 +155,13 @@ /* values for change events for custom elements */ #define CE_DELAY 0 +#define CE_PRESSED_BY_PLAYER 1 +#define CE_TOUCHED_BY_PLAYER 2 -#define NUM_CHANGE_EVENTS 1 +/* values for internal purpose only (level editor) */ +#define CE_BY_PLAYER 3 + +#define NUM_CHANGE_EVENTS 4 #define CE_BITMASK_DEFAULT 0 @@ -170,22 +179,26 @@ /* macros for configurable properties */ #define IS_DIGGABLE(e) HAS_PROPERTY(e, EP_DIGGABLE) #define IS_COLLECTIBLE(e) HAS_PROPERTY(e, EP_COLLECTIBLE) -#define DONT_GO_TO(e) HAS_PROPERTY(e, EP_DONT_GO_TO) -#define IS_ENEMY(e) HAS_PROPERTY(e, EP_ENEMY) +#define DONT_RUN_INTO(e) HAS_PROPERTY(e, EP_DONT_RUN_INTO) +#define DONT_COLLIDE_WITH(e) HAS_PROPERTY(e, EP_DONT_COLLIDE_WITH) #define DONT_TOUCH(e) HAS_PROPERTY(e, EP_DONT_TOUCH) #define IS_INDESTRUCTIBLE(e) HAS_PROPERTY(e, EP_INDESTRUCTIBLE) #define IS_SLIPPERY(e) HAS_PROPERTY(e, EP_SLIPPERY) -#define CAN_EXPLODE(e) HAS_PROPERTY(e, EP_CAN_EXPLODE) +#define CAN_CHANGE(e) HAS_PROPERTY(e, EP_CAN_CHANGE) #define CAN_MOVE(e) HAS_PROPERTY(e, EP_CAN_MOVE) #define CAN_FALL(e) HAS_PROPERTY(e, EP_CAN_FALL) -#define CAN_SMASH(e) HAS_PROPERTY(e, EP_CAN_SMASH) +#define CAN_SMASH_FRIENDS(e) HAS_PROPERTY(e, EP_CAN_SMASH_FRIENDS) +#define CAN_SMASH_ENEMIES(e) HAS_PROPERTY(e, EP_CAN_SMASH_ENEMIES) +#define CAN_SMASH_EXPLOSIVES(e) HAS_PROPERTY(e, EP_CAN_SMASH_EXPLOSIVES) +#define CAN_EXPLODE_BY_FIRE(e) HAS_PROPERTY(e, EP_CAN_EXPLODE_BY_FIRE) +#define CAN_EXPLODE_SMASHED(e) HAS_PROPERTY(e, EP_CAN_EXPLODE_SMASHED) +#define CAN_EXPLODE_IMPACT(e) HAS_PROPERTY(e, EP_CAN_EXPLODE_IMPACT) #define IS_WALKABLE_OVER(e) HAS_PROPERTY(e, EP_WALKABLE_OVER) #define IS_WALKABLE_INSIDE(e) HAS_PROPERTY(e, EP_WALKABLE_INSIDE) #define IS_WALKABLE_UNDER(e) HAS_PROPERTY(e, EP_WALKABLE_UNDER) #define IS_PASSABLE_OVER(e) HAS_PROPERTY(e, EP_PASSABLE_OVER) #define IS_PASSABLE_INSIDE(e) HAS_PROPERTY(e, EP_PASSABLE_INSIDE) #define IS_PASSABLE_UNDER(e) HAS_PROPERTY(e, EP_PASSABLE_UNDER) -#define IS_CHANGEABLE(e) HAS_PROPERTY(e, EP_CHANGEABLE) #define IS_PUSHABLE(e) HAS_PROPERTY(e, EP_PUSHABLE) /* macros for special configurable properties */ @@ -207,6 +220,7 @@ #define IS_FOOD_PIG(e) HAS_PROPERTY(e, EP_FOOD_PIG) #define IS_HISTORIC_WALL(e) HAS_PROPERTY(e, EP_HISTORIC_WALL) #define IS_HISTORIC_SOLID(e) HAS_PROPERTY(e, EP_HISTORIC_SOLID) +#define IS_CLASSIC_ENEMY(e) HAS_PROPERTY(e, EP_CLASSIC_ENEMY) #define IS_BELT(e) HAS_PROPERTY(e, EP_BELT) #define IS_BELT_ACTIVE(e) HAS_PROPERTY(e, EP_BELT_ACTIVE) #define IS_BELT_SWITCH(e) HAS_PROPERTY(e, EP_BELT_SWITCH) @@ -230,7 +244,10 @@ #define IS_SOLID_FOR_PUSHING(e) HAS_PROPERTY(e, EP_SOLID_FOR_PUSHING) #define IS_DRAGONFIRE_PROOF(e) HAS_PROPERTY(e, EP_DRAGONFIRE_PROOF) #define IS_EXPLOSION_PROOF(e) HAS_PROPERTY(e, EP_EXPLOSION_PROOF) +#define CAN_SMASH(e) HAS_PROPERTY(e, EP_CAN_SMASH) +#define CAN_EXPLODE(e) HAS_PROPERTY(e, EP_CAN_EXPLODE) +/* special macros used in game engine */ #define IS_CUSTOM_ELEMENT(e) ((e) >= EL_CUSTOM_START && \ (e) <= EL_CUSTOM_END) @@ -1172,10 +1189,7 @@ struct ElementInfo int move_pattern; /* direction movable element moves to */ int move_direction_initial; /* initial direction element moves to */ - - int walk_to_action; /* only for level editor; not stored */ - int deadliness; /* only for level editor; not stored */ - int walkable_layer; /* only for level editor; not stored */ + int move_stepsize; /* step size element moves with */ int content[3][3]; /* new elements after explosion */