X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fgame_mm%2Fmm_main.h;h=684647ce12ea77ca52aff8fc88a27288e7fb452f;hp=cf99e635d1e6076fb58420daa52f1880a895661e;hb=HEAD;hpb=2dbe35f19dc4c98e2f67a1b5d71cc848393576dc diff --git a/src/game_mm/mm_main.h b/src/game_mm/mm_main.h index cf99e635..684647ce 100644 --- a/src/game_mm/mm_main.h +++ b/src/game_mm/mm_main.h @@ -103,6 +103,10 @@ (e) <= EL_DF_MIRROR_END) #define IS_DF_MIRROR_AUTO(e) ((e) >= EL_DF_MIRROR_AUTO_START && \ (e) <= EL_DF_MIRROR_AUTO_END) +#define IS_DF_MIRROR_FIXED(e) ((e) >= EL_DF_MIRROR_FIXED_START && \ + (e) <= EL_DF_MIRROR_FIXED_END) +#define IS_DF_SLOPE(e) ((e) >= EL_DF_SLOPE_START && \ + (e) <= EL_DF_SLOPE_END) #define IS_LASER(e) ((e) >= EL_LASER_START && \ (e) <= EL_LASER_END) #define IS_RECEIVER(e) ((e) >= EL_RECEIVER_START && \ @@ -124,6 +128,13 @@ (e) == EL_BOMB || \ IS_WALL_AMOEBA(e)) +#define IS_ABSORBING_BLOCK(e) (IS_WALL_WOOD(e) || \ + IS_DF_WALL_WOOD(e) || \ + (e) == EL_BLOCK_WOOD || \ + (e) == EL_GATE_WOOD || \ + (e) == EL_EXIT_CLOSED || \ + (e) == EL_EXIT_OPEN) + #define IS_ENVELOPE_OPENING(e) ((e) >= EL_ENVELOPE_OPENING_START && \ (e) <= EL_ENVELOPE_OPENING_END) @@ -131,14 +142,12 @@ #define ENVELOPE_OPENING_NR(e) ((e) - EL_ENVELOPE_1_OPENING) #define CAN_MOVE(e) ((e) == EL_PACMAN) -#define IS_FREE(x,y) (Tile[x][y] == EL_EMPTY) - -#define IS_MOVING(x,y) (MovPos[x][y] != 0) -#define IS_BLOCKED(x,y) (Tile[x][y] == EL_BLOCKED) -#define IS_DRAWABLE(e) ((e) < EL_BLOCKED) -#define IS_NOT_DRAWABLE(e) ((e) >= EL_BLOCKED) +#define IS_FREE(x, y) (Tile[x][y] == EL_EMPTY) -#define PLAYERINFO(x,y) (&stored_player[StorePlayer[x][y]-EL_SPIELER1]) +#define IS_MOVING(x, y) (MovPos[x][y] != 0) +#define IS_BLOCKED(x, y) (Tile[x][y] == EL_BLOCKED) +#define IS_DRAWABLE(e) ((e) < EL_BLOCKED) +#define IS_NOT_DRAWABLE(e) ((e) >= EL_BLOCKED) #define WALL_BASE(e) ((e) & 0xfff0) #define WALL_BITS(e) ((e) & 0x000f) @@ -174,7 +183,7 @@ #define LEVEL_SCORE_ELEMENTS 16 // level elements with score -extern DrawBuffer *drawto_field; +extern DrawBuffer *drawto_mm; extern DrawBuffer *bitmap_db_field; extern int game_status; @@ -580,7 +589,33 @@ extern int num_element_info; #define EL_DF_WALL_STEEL 429 #define EL_DF_WALL_WOOD 430 -#define EL_MM_END_2 430 +#define EL_DF_MIRROR_FIXED_START 431 +#define EL_DF_MIRROR_FIXED_00 (EL_DF_MIRROR_FIXED_START + 0) +#define EL_DF_MIRROR_FIXED_01 (EL_DF_MIRROR_FIXED_START + 1) +#define EL_DF_MIRROR_FIXED_02 (EL_DF_MIRROR_FIXED_START + 2) +#define EL_DF_MIRROR_FIXED_03 (EL_DF_MIRROR_FIXED_START + 3) +#define EL_DF_MIRROR_FIXED_04 (EL_DF_MIRROR_FIXED_START + 4) +#define EL_DF_MIRROR_FIXED_05 (EL_DF_MIRROR_FIXED_START + 5) +#define EL_DF_MIRROR_FIXED_06 (EL_DF_MIRROR_FIXED_START + 6) +#define EL_DF_MIRROR_FIXED_07 (EL_DF_MIRROR_FIXED_START + 7) +#define EL_DF_MIRROR_FIXED_08 (EL_DF_MIRROR_FIXED_START + 8) +#define EL_DF_MIRROR_FIXED_09 (EL_DF_MIRROR_FIXED_START + 9) +#define EL_DF_MIRROR_FIXED_10 (EL_DF_MIRROR_FIXED_START + 10) +#define EL_DF_MIRROR_FIXED_11 (EL_DF_MIRROR_FIXED_START + 11) +#define EL_DF_MIRROR_FIXED_12 (EL_DF_MIRROR_FIXED_START + 12) +#define EL_DF_MIRROR_FIXED_13 (EL_DF_MIRROR_FIXED_START + 13) +#define EL_DF_MIRROR_FIXED_14 (EL_DF_MIRROR_FIXED_START + 14) +#define EL_DF_MIRROR_FIXED_15 (EL_DF_MIRROR_FIXED_START + 15) +#define EL_DF_MIRROR_FIXED_END EL_DF_MIRROR_FIXED_15 + +#define EL_DF_SLOPE_START 447 +#define EL_DF_SLOPE_00 (EL_DF_SLOPE_START + 0) +#define EL_DF_SLOPE_01 (EL_DF_SLOPE_START + 1) +#define EL_DF_SLOPE_02 (EL_DF_SLOPE_START + 2) +#define EL_DF_SLOPE_03 (EL_DF_SLOPE_START + 3) +#define EL_DF_SLOPE_END EL_DF_SLOPE_03 + +#define EL_MM_END_2 450 #define EL_MM_END EL_MM_END_2 // "real" (and therefore drawable) runtime elements @@ -688,8 +723,9 @@ extern int num_element_info; #define ANG_RAY_270 12 #define IS_22_5_ANGLE(angle) ((angle) % 2) #define IS_90_ANGLE(angle) (!((angle) % 4)) +#define IS_45_ANGLE(angle) (!(((angle) + 2) % 4)) #define IS_HORIZ_ANGLE(angle) (!((angle) % 8)) -#define IS_VERT_ANGLE(angle) ((angle) % 8) +#define IS_VERT_ANGLE(angle) (!(((angle) + 4) % 8)) // mirror angles #define ANG_MIRROR_0 0 @@ -712,6 +748,8 @@ extern int num_element_info; #define HIT_MASK_RIGHT (HIT_MASK_TOPRIGHT | HIT_MASK_BOTTOMRIGHT) #define HIT_MASK_TOP (HIT_MASK_TOPLEFT | HIT_MASK_TOPRIGHT) #define HIT_MASK_BOTTOM (HIT_MASK_BOTTOMLEFT | HIT_MASK_BOTTOMRIGHT) +#define HIT_MASK_DIAGONAL_1 (HIT_MASK_TOPLEFT | HIT_MASK_BOTTOMRIGHT) +#define HIT_MASK_DIAGONAL_2 (HIT_MASK_TOPRIGHT | HIT_MASK_BOTTOMLEFT) #define HIT_MASK_ALL (HIT_MASK_LEFT | HIT_MASK_RIGHT) // step values for rotating elements @@ -726,7 +764,6 @@ extern int num_element_info; #define GAME_OVER_NO_ENERGY 1 #define GAME_OVER_OVERLOADED 2 #define GAME_OVER_BOMB 3 -#define GAME_OVER_DELAYED 4 #define PROGRAM_VERSION_MAJOR 2 #define PROGRAM_VERSION_MINOR 0