X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_mm%2Fmm_main.h;h=96ff6f28247cc16018cce53c8a4f8388a425e4f3;hb=7b34743564e27c65b4d9c1ef55c3b12f6cf8a94a;hp=fb0b029f470cb655576722de0b50bc581aea74d4;hpb=0703af7954d64f643865647bfef8749cd01ab268;p=rocksndiamonds.git diff --git a/src/game_mm/mm_main.h b/src/game_mm/mm_main.h index fb0b029f..96ff6f28 100644 --- a/src/game_mm/mm_main.h +++ b/src/game_mm/mm_main.h @@ -103,6 +103,8 @@ (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_LASER(e) ((e) >= EL_LASER_START && \ (e) <= EL_LASER_END) #define IS_RECEIVER(e) ((e) >= EL_RECEIVER_START && \ @@ -124,6 +126,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 +140,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 +181,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; @@ -296,29 +303,20 @@ extern int num_element_info; #define EL_KETTLE 29 #define EL_BOMB 30 #define EL_PRISM 31 -#define EL_WALL_START 32 -#define EL_WALL_EMPTY EL_WALL_START -#define EL_WALL_00 EL_WALL_START -#define EL_WALL_STEEL EL_WALL_00 -#define EL_WALL_STEEL_START EL_WALL_00 -#define EL_WALL_15 47 -#define EL_WALL_STEEL_END EL_WALL_15 -#define EL_WALL_16 48 -#define EL_WALL_WOOD EL_WALL_16 -#define EL_WALL_WOOD_START EL_WALL_16 -#define EL_WALL_31 63 -#define EL_WALL_WOOD_END EL_WALL_31 -#define EL_WALL_32 64 -#define EL_WALL_ICE EL_WALL_32 -#define EL_WALL_ICE_START EL_WALL_32 -#define EL_WALL_47 79 -#define EL_WALL_ICE_END EL_WALL_47 -#define EL_WALL_48 80 -#define EL_WALL_AMOEBA EL_WALL_48 -#define EL_WALL_AMOEBA_START EL_WALL_48 -#define EL_WALL_63 95 -#define EL_WALL_AMOEBA_END EL_WALL_63 -#define EL_WALL_END EL_WALL_63 +#define EL_WALL_START EL_WALL_STEEL_START +#define EL_WALL_STEEL_BASE 32 +#define EL_WALL_STEEL_START (EL_WALL_STEEL_BASE + 0) +#define EL_WALL_STEEL_END (EL_WALL_STEEL_BASE + 15) +#define EL_WALL_WOOD_BASE 48 +#define EL_WALL_WOOD_START (EL_WALL_WOOD_BASE + 0) +#define EL_WALL_WOOD_END (EL_WALL_WOOD_BASE + 15) +#define EL_WALL_ICE_BASE 64 +#define EL_WALL_ICE_START (EL_WALL_ICE_BASE + 0) +#define EL_WALL_ICE_END (EL_WALL_ICE_BASE + 15) +#define EL_WALL_AMOEBA_BASE 80 +#define EL_WALL_AMOEBA_START (EL_WALL_AMOEBA_BASE + 0) +#define EL_WALL_AMOEBA_END (EL_WALL_AMOEBA_BASE + 15) +#define EL_WALL_END EL_WALL_AMOEBA_END #define EL_BLOCK_WOOD 96 #define EL_GRAY_BALL 97 #define EL_BEAMER_START 98 @@ -483,14 +481,15 @@ extern int num_element_info; #define EL_GRID_STEEL_FIXED_07 (EL_GRID_STEEL_FIXED_START + 7) // 157.5° #define EL_GRID_STEEL_FIXED_END EL_GRID_STEEL_FIXED_07 -#define EL_DF_WALL_WOOD 272 -#define EL_DF_WALL_START EL_DF_WALL_WOOD_START -#define EL_DF_WALL_WOOD_START (EL_DF_WALL_WOOD + 0) -#define EL_DF_WALL_WOOD_END (EL_DF_WALL_WOOD + 15) +#define EL_DF_WALL_WOOD_BASE 272 +#define EL_DF_WALL_WOOD_START (EL_DF_WALL_WOOD_BASE + 0) +#define EL_DF_WALL_WOOD_END (EL_DF_WALL_WOOD_BASE + 15) -#define EL_DF_WALL_STEEL 288 -#define EL_DF_WALL_STEEL_START (EL_DF_WALL_STEEL + 0) -#define EL_DF_WALL_STEEL_END (EL_DF_WALL_STEEL + 15) +#define EL_DF_WALL_STEEL_BASE 288 +#define EL_DF_WALL_STEEL_START (EL_DF_WALL_STEEL_BASE + 0) +#define EL_DF_WALL_STEEL_END (EL_DF_WALL_STEEL_BASE + 15) + +#define EL_DF_WALL_START EL_DF_WALL_WOOD_START #define EL_DF_WALL_END EL_DF_WALL_STEEL_END #define EL_DF_EMPTY 304 @@ -579,16 +578,35 @@ extern int num_element_info; #define EL_MCDUFFIN 420 #define EL_PACMAN 421 #define EL_FUSE_OFF 422 -#define EL_STEEL_WALL 423 -#define EL_WOODEN_WALL 424 -#define EL_ICE_WALL 425 -#define EL_AMOEBA_WALL 426 +#define EL_WALL_STEEL 423 +#define EL_WALL_WOOD 424 +#define EL_WALL_ICE 425 +#define EL_WALL_AMOEBA 426 #define EL_LASER 427 #define EL_RECEIVER 428 -#define EL_DF_STEEL_WALL 429 -#define EL_DF_WOODEN_WALL 430 - -#define EL_MM_END_2 430 +#define EL_DF_WALL_STEEL 429 +#define EL_DF_WALL_WOOD 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_MM_END_2 446 #define EL_MM_END EL_MM_END_2 // "real" (and therefore drawable) runtime elements @@ -596,8 +614,8 @@ extern int num_element_info; #define EL_EXIT_CLOSING 501 #define EL_GRAY_BALL_ACTIVE 502 #define EL_GRAY_BALL_OPENING 503 -#define EL_ICE_WALL_SHRINKING 504 -#define EL_AMOEBA_WALL_GROWING 505 +#define EL_WALL_ICE_SHRINKING 504 +#define EL_WALL_AMOEBA_GROWING 505 #define EL_BOMB_ACTIVE 506 #define EL_MINE_ACTIVE 507 #define EL_ENVELOPE_1_OPENING 508 @@ -608,9 +626,9 @@ extern int num_element_info; #define EL_ENVELOPE_OPENING_START EL_ENVELOPE_1_OPENING #define EL_ENVELOPE_OPENING_END EL_ENVELOPE_4_OPENING -#define EL_WALL_CHANGING 512 -#define EL_WALL_CHANGING_START (EL_WALL_CHANGING + 0) -#define EL_WALL_CHANGING_END (EL_WALL_CHANGING + 15) +#define EL_WALL_CHANGING_BASE 512 +#define EL_WALL_CHANGING_START (EL_WALL_CHANGING_BASE + 0) +#define EL_WALL_CHANGING_END (EL_WALL_CHANGING_BASE + 15) #define EL_FIRST_RUNTIME_EL EL_EXIT_OPENING @@ -720,6 +738,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 @@ -734,7 +754,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