X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=9e164247be52a1ffedf90684e615cffd91c6fc7a;hb=52a85693c5f161b8f70f62d036822dea187ecf6e;hp=217ea876a24ba888c90f3a96a47612e571fc24b3;hpb=13c30dea7f706d194d388f86a5d1ee3b39bd78c2;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index 217ea876..9e164247 100644 --- a/src/main.h +++ b/src/main.h @@ -23,6 +23,7 @@ #include "libgame/libgame.h" #include "game_em/game_em.h" #include "game_sp/game_sp.h" +#include "game_mm/game_mm.h" #include "conf_gfx.h" /* include auto-generated data structure definitions */ #include "conf_snd.h" /* include auto-generated data structure definitions */ @@ -673,6 +674,20 @@ #define IS_INTERNAL_ELEMENT(e) ((e) >= EL_INTERNAL_START && \ (e) <= EL_INTERNAL_END) +#define IS_MM_ELEMENT(e) ((e) >= EL_MM_START && \ + (e) <= EL_MM_END) + +#define IS_DF_ELEMENT(e) ((e) >= EL_DF_START && \ + (e) <= EL_DF_END) + +#define IS_MM_WALL(e) (((e) >= EL_MM_WALL_START && \ + (e) <= EL_MM_WALL_END) || \ + ((e) >= EL_DF_WALL_START && \ + (e) <= EL_DF_WALL_END)) + +#define IS_DF_WALL(e) (((e) >= EL_DF_WALL_START && \ + (e) <= EL_DF_WALL_END)) + #define IS_ENVELOPE(e) ((e) >= EL_ENVELOPE_1 && \ (e) <= EL_ENVELOPE_4) @@ -1485,7 +1500,363 @@ #define EL_FROM_LEVEL_TEMPLATE 863 -#define NUM_FILE_ELEMENTS 864 +#define EL_MM_START 864 +#define EL_MM_START_1 EL_MM_START + +#define EL_MM_EMPTY_SPACE (EL_MM_START + 0) +#define EL_MM_EMPTY EL_MM_EMPTY_SPACE +#define EL_MM_MIRROR_START (EL_MM_START + 1) +#define EL_MM_MIRROR_1 (EL_MM_MIRROR_START + 0) +#define EL_MM_MIRROR_2 (EL_MM_MIRROR_START + 1) +#define EL_MM_MIRROR_3 (EL_MM_MIRROR_START + 2) +#define EL_MM_MIRROR_4 (EL_MM_MIRROR_START + 3) +#define EL_MM_MIRROR_5 (EL_MM_MIRROR_START + 4) +#define EL_MM_MIRROR_6 (EL_MM_MIRROR_START + 5) +#define EL_MM_MIRROR_7 (EL_MM_MIRROR_START + 6) +#define EL_MM_MIRROR_8 (EL_MM_MIRROR_START + 7) +#define EL_MM_MIRROR_9 (EL_MM_MIRROR_START + 8) +#define EL_MM_MIRROR_10 (EL_MM_MIRROR_START + 9) +#define EL_MM_MIRROR_11 (EL_MM_MIRROR_START + 10) +#define EL_MM_MIRROR_12 (EL_MM_MIRROR_START + 11) +#define EL_MM_MIRROR_13 (EL_MM_MIRROR_START + 12) +#define EL_MM_MIRROR_14 (EL_MM_MIRROR_START + 13) +#define EL_MM_MIRROR_15 (EL_MM_MIRROR_START + 14) +#define EL_MM_MIRROR_16 (EL_MM_MIRROR_START + 15) +#define EL_MM_MIRROR_END EL_MM_MIRROR_15 +#define EL_MM_STEEL_GRID_FIXED_START (EL_MM_START + 17) +#define EL_MM_STEEL_GRID_FIXED_1 (EL_MM_STEEL_GRID_FIXED_START + 0) +#define EL_MM_STEEL_GRID_FIXED_2 (EL_MM_STEEL_GRID_FIXED_START + 1) +#define EL_MM_STEEL_GRID_FIXED_3 (EL_MM_STEEL_GRID_FIXED_START + 2) +#define EL_MM_STEEL_GRID_FIXED_4 (EL_MM_STEEL_GRID_FIXED_START + 3) +#define EL_MM_STEEL_GRID_FIXED_END EL_MM_STEEL_GRID_FIXED_03 +#define EL_MM_MCDUFFIN_START (EL_MM_START + 21) +#define EL_MM_MCDUFFIN_RIGHT (EL_MM_MCDUFFIN_START + 0) +#define EL_MM_MCDUFFIN_UP (EL_MM_MCDUFFIN_START + 1) +#define EL_MM_MCDUFFIN_LEFT (EL_MM_MCDUFFIN_START + 2) +#define EL_MM_MCDUFFIN_DOWN (EL_MM_MCDUFFIN_START + 3) +#define EL_MM_MCDUFFIN_END EL_MM_MCDUFFIN_DOWN +#define EL_MM_EXIT_CLOSED (EL_MM_START + 25) +#define EL_MM_EXIT_OPENING_1 (EL_MM_START + 26) +#define EL_MM_EXIT_OPENING_2 (EL_MM_START + 27) +#define EL_MM_EXIT_OPEN (EL_MM_START + 28) +#define EL_MM_KETTLE (EL_MM_START + 29) +#define EL_MM_BOMB (EL_MM_START + 30) +#define EL_MM_PRISM (EL_MM_START + 31) +#define EL_MM_WALL_START (EL_MM_START + 32) +#define EL_MM_WALL_EMPTY EL_MM_WALL_START +#define EL_MM_WALL_00 EL_MM_WALL_START +#define EL_MM_STEEL_WALL_START EL_MM_WALL_00 +#define EL_MM_WALL_15 (EL_MM_START + 47) +#define EL_MM_STEEL_WALL_END EL_MM_WALL_15 +#define EL_MM_WALL_16 (EL_MM_START + 48) +#define EL_MM_WOODEN_WALL_START EL_MM_WALL_16 +#define EL_MM_WALL_31 (EL_MM_START + 63) +#define EL_MM_WOODEN_WALL_END EL_MM_WALL_31 +#define EL_MM_WALL_32 (EL_MM_START + 64) +#define EL_MM_ICE_WALL_START EL_MM_WALL_32 +#define EL_MM_WALL_47 (EL_MM_START + 79) +#define EL_MM_ICE_WALL_END EL_MM_WALL_47 +#define EL_MM_WALL_48 (EL_MM_START + 80) +#define EL_MM_AMOEBA_WALL_START EL_MM_WALL_48 +#define EL_MM_WALL_63 (EL_MM_START + 95) +#define EL_MM_AMOEBA_WALL_END EL_MM_WALL_63 +#define EL_MM_WALL_END EL_MM_WALL_63 +#define EL_MM_WOODEN_BLOCK (EL_MM_START + 96) +#define EL_MM_GRAY_BALL (EL_MM_START + 97) +#define EL_MM_BEAMER_START (EL_MM_START + 98) +#define EL_MM_BEAMER_1 (EL_MM_BEAMER_START + 0) +#define EL_MM_BEAMER_2 (EL_MM_BEAMER_START + 1) +#define EL_MM_BEAMER_3 (EL_MM_BEAMER_START + 2) +#define EL_MM_BEAMER_4 (EL_MM_BEAMER_START + 3) +#define EL_MM_BEAMER_5 (EL_MM_BEAMER_START + 4) +#define EL_MM_BEAMER_6 (EL_MM_BEAMER_START + 5) +#define EL_MM_BEAMER_7 (EL_MM_BEAMER_START + 6) +#define EL_MM_BEAMER_8 (EL_MM_BEAMER_START + 7) +#define EL_MM_BEAMER_9 (EL_MM_BEAMER_START + 8) +#define EL_MM_BEAMER_10 (EL_MM_BEAMER_START + 9) +#define EL_MM_BEAMER_11 (EL_MM_BEAMER_START + 10) +#define EL_MM_BEAMER_12 (EL_MM_BEAMER_START + 11) +#define EL_MM_BEAMER_13 (EL_MM_BEAMER_START + 12) +#define EL_MM_BEAMER_14 (EL_MM_BEAMER_START + 13) +#define EL_MM_BEAMER_15 (EL_MM_BEAMER_START + 14) +#define EL_MM_BEAMER_16 (EL_MM_BEAMER_START + 15) +#define EL_MM_BEAMER_END EL_MM_BEAMER_15 +#define EL_MM_FUSE_ACTIVE (EL_MM_START + 114) +#define EL_MM_PACMAN_START (EL_MM_START + 115) +#define EL_MM_PACMAN_RIGHT (EL_MM_PACMAN_START + 0) +#define EL_MM_PACMAN_UP (EL_MM_PACMAN_START + 1) +#define EL_MM_PACMAN_LEFT (EL_MM_PACMAN_START + 2) +#define EL_MM_PACMAN_DOWN (EL_MM_PACMAN_START + 3) +#define EL_MM_PACMAN_END EL_MM_PACMAN_DOWN +#define EL_MM_POLARISATOR_START (EL_MM_START + 119) +#define EL_MM_POLARISATOR_1 (EL_MM_POLARISATOR_START + 0) +#define EL_MM_POLARISATOR_2 (EL_MM_POLARISATOR_START + 1) +#define EL_MM_POLARISATOR_3 (EL_MM_POLARISATOR_START + 2) +#define EL_MM_POLARISATOR_4 (EL_MM_POLARISATOR_START + 3) +#define EL_MM_POLARISATOR_5 (EL_MM_POLARISATOR_START + 4) +#define EL_MM_POLARISATOR_6 (EL_MM_POLARISATOR_START + 5) +#define EL_MM_POLARISATOR_7 (EL_MM_POLARISATOR_START + 6) +#define EL_MM_POLARISATOR_8 (EL_MM_POLARISATOR_START + 7) +#define EL_MM_POLARISATOR_9 (EL_MM_POLARISATOR_START + 8) +#define EL_MM_POLARISATOR_10 (EL_MM_POLARISATOR_START + 9) +#define EL_MM_POLARISATOR_11 (EL_MM_POLARISATOR_START + 10) +#define EL_MM_POLARISATOR_12 (EL_MM_POLARISATOR_START + 11) +#define EL_MM_POLARISATOR_13 (EL_MM_POLARISATOR_START + 12) +#define EL_MM_POLARISATOR_14 (EL_MM_POLARISATOR_START + 13) +#define EL_MM_POLARISATOR_15 (EL_MM_POLARISATOR_START + 14) +#define EL_MM_POLARISATOR_16 (EL_MM_POLARISATOR_START + 15) +#define EL_MM_POLARISATOR_END EL_MM_POLARISATOR_15 +#define EL_MM_POLARISATOR_CROSS_START (EL_MM_START + 135) +#define EL_MM_POLARISATOR_CROSS_1 (EL_MM_POLARISATOR_CROSS_START + 0) +#define EL_MM_POLARISATOR_CROSS_2 (EL_MM_POLARISATOR_CROSS_START + 1) +#define EL_MM_POLARISATOR_CROSS_3 (EL_MM_POLARISATOR_CROSS_START + 2) +#define EL_MM_POLARISATOR_CROSS_4 (EL_MM_POLARISATOR_CROSS_START + 3) +#define EL_MM_POLARISATOR_CROSS_END EL_MM_POLARISATOR_CROSS_03 +#define EL_MM_MIRROR_FIXED_START (EL_MM_START + 139) +#define EL_MM_MIRROR_FIXED_1 (EL_MM_MIRROR_FIXED_START + 0) +#define EL_MM_MIRROR_FIXED_2 (EL_MM_MIRROR_FIXED_START + 1) +#define EL_MM_MIRROR_FIXED_3 (EL_MM_MIRROR_FIXED_START + 2) +#define EL_MM_MIRROR_FIXED_4 (EL_MM_MIRROR_FIXED_START + 3) +#define EL_MM_MIRROR_FIXED_END EL_MM_MIRROR_FIXED_03 +#define EL_MM_STEEL_LOCK (EL_MM_START + 143) +#define EL_MM_KEY (EL_MM_START + 144) +#define EL_MM_LIGHTBULB (EL_MM_START + 145) +#define EL_MM_LIGHTBULB_ACTIVE (EL_MM_START + 146) +#define EL_MM_LIGHTBALL (EL_MM_START + 147) +#define EL_MM_STEEL_BLOCK (EL_MM_START + 148) +#define EL_MM_WOODEN_LOCK (EL_MM_START + 149) +#define EL_MM_FUEL_FULL (EL_MM_START + 150) +#define EL_MM_WOODEN_GRID_FIXED_START (EL_MM_START + 151) +#define EL_MM_WOODEN_GRID_FIXED_1 (EL_MM_WOODEN_GRID_FIXED_START + 0) +#define EL_MM_WOODEN_GRID_FIXED_2 (EL_MM_WOODEN_GRID_FIXED_START + 1) +#define EL_MM_WOODEN_GRID_FIXED_3 (EL_MM_WOODEN_GRID_FIXED_START + 2) +#define EL_MM_WOODEN_GRID_FIXED_4 (EL_MM_WOODEN_GRID_FIXED_START + 3) +#define EL_MM_WOODEN_GRID_FIXED_END EL_MM_WOODEN_GRID_FIXED_03 +#define EL_MM_FUEL_EMPTY (EL_MM_START + 155) + +#define EL_MM_UNUSED_156 (EL_MM_START + 156) +#define EL_MM_UNUSED_157 (EL_MM_START + 157) +#define EL_MM_UNUSED_158 (EL_MM_START + 158) +#define EL_MM_UNUSED_159 (EL_MM_START + 159) + +#define EL_MM_END_1 (EL_MM_START + 159) +#define EL_MM_START_2 (EL_MM_START + 160) + +#define EL_DF_START EL_MM_START_2 +#define EL_DF_START2 (EL_DF_START - 240) + +#define EL_DF_MIRROR_START EL_DF_START +#define EL_DF_MIRROR_1 (EL_DF_MIRROR_START + 0) +#define EL_DF_MIRROR_2 (EL_DF_MIRROR_START + 1) +#define EL_DF_MIRROR_3 (EL_DF_MIRROR_START + 2) +#define EL_DF_MIRROR_4 (EL_DF_MIRROR_START + 3) +#define EL_DF_MIRROR_5 (EL_DF_MIRROR_START + 4) +#define EL_DF_MIRROR_6 (EL_DF_MIRROR_START + 5) +#define EL_DF_MIRROR_7 (EL_DF_MIRROR_START + 6) +#define EL_DF_MIRROR_8 (EL_DF_MIRROR_START + 7) +#define EL_DF_MIRROR_9 (EL_DF_MIRROR_START + 8) +#define EL_DF_MIRROR_10 (EL_DF_MIRROR_START + 9) +#define EL_DF_MIRROR_11 (EL_DF_MIRROR_START + 10) +#define EL_DF_MIRROR_12 (EL_DF_MIRROR_START + 11) +#define EL_DF_MIRROR_13 (EL_DF_MIRROR_START + 12) +#define EL_DF_MIRROR_14 (EL_DF_MIRROR_START + 13) +#define EL_DF_MIRROR_15 (EL_DF_MIRROR_START + 14) +#define EL_DF_MIRROR_16 (EL_DF_MIRROR_START + 15) +#define EL_DF_MIRROR_END EL_DF_MIRROR_15 + +#define EL_DF_WOODEN_GRID_FIXED_START (EL_DF_START2 + 256) +#define EL_DF_WOODEN_GRID_FIXED_1 (EL_DF_WOODEN_GRID_FIXED_START + 0) +#define EL_DF_WOODEN_GRID_FIXED_2 (EL_DF_WOODEN_GRID_FIXED_START + 1) +#define EL_DF_WOODEN_GRID_FIXED_3 (EL_DF_WOODEN_GRID_FIXED_START + 2) +#define EL_DF_WOODEN_GRID_FIXED_4 (EL_DF_WOODEN_GRID_FIXED_START + 3) +#define EL_DF_WOODEN_GRID_FIXED_5 (EL_DF_WOODEN_GRID_FIXED_START + 4) +#define EL_DF_WOODEN_GRID_FIXED_6 (EL_DF_WOODEN_GRID_FIXED_START + 5) +#define EL_DF_WOODEN_GRID_FIXED_7 (EL_DF_WOODEN_GRID_FIXED_START + 6) +#define EL_DF_WOODEN_GRID_FIXED_8 (EL_DF_WOODEN_GRID_FIXED_START + 7) +#define EL_DF_WOODEN_GRID_FIXED_END EL_DF_WOODEN_GRID_FIXED_07 + +#define EL_DF_STEEL_GRID_FIXED_START (EL_DF_START2 + 264) +#define EL_DF_STEEL_GRID_FIXED_1 (EL_DF_STEEL_GRID_FIXED_START + 0) +#define EL_DF_STEEL_GRID_FIXED_2 (EL_DF_STEEL_GRID_FIXED_START + 1) +#define EL_DF_STEEL_GRID_FIXED_3 (EL_DF_STEEL_GRID_FIXED_START + 2) +#define EL_DF_STEEL_GRID_FIXED_4 (EL_DF_STEEL_GRID_FIXED_START + 3) +#define EL_DF_STEEL_GRID_FIXED_5 (EL_DF_STEEL_GRID_FIXED_START + 4) +#define EL_DF_STEEL_GRID_FIXED_6 (EL_DF_STEEL_GRID_FIXED_START + 5) +#define EL_DF_STEEL_GRID_FIXED_7 (EL_DF_STEEL_GRID_FIXED_START + 6) +#define EL_DF_STEEL_GRID_FIXED_8 (EL_DF_STEEL_GRID_FIXED_START + 7) +#define EL_DF_STEEL_GRID_FIXED_END EL_DF_STEEL_GRID_FIXED_07 + +#define EL_DF_WOODEN_WALL_START (EL_DF_START2 + 272) +#define EL_DF_WOODEN_WALL_END (EL_DF_WOODEN_WALL_START + 15) + +#define EL_DF_STEEL_WALL_START (EL_DF_START2 + 288) +#define EL_DF_STEEL_WALL_END (EL_DF_STEEL_WALL_START + 15) + +#define EL_DF_WALL_START EL_DF_WOODEN_WALL_START +#define EL_DF_WALL_END EL_DF_STEEL_WALL_END + +#define EL_DF_EMPTY (EL_DF_START2 + 304) +#define EL_DF_CELL (EL_DF_START2 + 305) +#define EL_DF_MINE (EL_DF_START2 + 306) +#define EL_DF_REFRACTOR (EL_DF_START2 + 307) + +#define EL_DF_LASER_START (EL_DF_START2 + 308) +#define EL_DF_LASER_RIGHT (EL_DF_LASER_START + 0) +#define EL_DF_LASER_UP (EL_DF_LASER_START + 1) +#define EL_DF_LASER_LEFT (EL_DF_LASER_START + 2) +#define EL_DF_LASER_DOWN (EL_DF_LASER_START + 3) +#define EL_DF_LASER_END EL_DF_LASER_DOWN + +#define EL_DF_RECEIVER_START (EL_DF_START2 + 312) +#define EL_DF_RECEIVER_RIGHT (EL_DF_RECEIVER_START + 0) +#define EL_DF_RECEIVER_UP (EL_DF_RECEIVER_START + 1) +#define EL_DF_RECEIVER_LEFT (EL_DF_RECEIVER_START + 2) +#define EL_DF_RECEIVER_DOWN (EL_DF_RECEIVER_START + 3) +#define EL_DF_RECEIVER_END EL_DF_RECEIVER_DOWN + +#define EL_DF_FIBRE_OPTIC_START (EL_DF_START2 + 316) +#define EL_DF_FIBRE_OPTIC_RED_1 (EL_DF_FIBRE_OPTIC_START + 0) +#define EL_DF_FIBRE_OPTIC_RED_2 (EL_DF_FIBRE_OPTIC_START + 1) +#define EL_DF_FIBRE_OPTIC_YELLOW_1 (EL_DF_FIBRE_OPTIC_START + 2) +#define EL_DF_FIBRE_OPTIC_YELLOW_2 (EL_DF_FIBRE_OPTIC_START + 3) +#define EL_DF_FIBRE_OPTIC_GREEN_1 (EL_DF_FIBRE_OPTIC_START + 4) +#define EL_DF_FIBRE_OPTIC_GREEN_2 (EL_DF_FIBRE_OPTIC_START + 5) +#define EL_DF_FIBRE_OPTIC_BLUE_1 (EL_DF_FIBRE_OPTIC_START + 6) +#define EL_DF_FIBRE_OPTIC_BLUE_2 (EL_DF_FIBRE_OPTIC_START + 7) +#define EL_DF_FIBRE_OPTIC_END EL_DF_FIBRE_OPTIC_07 + +#define EL_DF_MIRROR_ROTATING_START (EL_DF_START2 + 324) +#define EL_DF_MIRROR_ROTATING_1 (EL_DF_MIRROR_ROTATING_START + 0) +#define EL_DF_MIRROR_ROTATING_2 (EL_DF_MIRROR_ROTATING_START + 1) +#define EL_DF_MIRROR_ROTATING_3 (EL_DF_MIRROR_ROTATING_START + 2) +#define EL_DF_MIRROR_ROTATING_4 (EL_DF_MIRROR_ROTATING_START + 3) +#define EL_DF_MIRROR_ROTATING_5 (EL_DF_MIRROR_ROTATING_START + 4) +#define EL_DF_MIRROR_ROTATING_6 (EL_DF_MIRROR_ROTATING_START + 5) +#define EL_DF_MIRROR_ROTATING_7 (EL_DF_MIRROR_ROTATING_START + 6) +#define EL_DF_MIRROR_ROTATING_8 (EL_DF_MIRROR_ROTATING_START + 7) +#define EL_DF_MIRROR_ROTATING_9 (EL_DF_MIRROR_ROTATING_START + 8) +#define EL_DF_MIRROR_ROTATING_10 (EL_DF_MIRROR_ROTATING_START + 9) +#define EL_DF_MIRROR_ROTATING_11 (EL_DF_MIRROR_ROTATING_START + 10) +#define EL_DF_MIRROR_ROTATING_12 (EL_DF_MIRROR_ROTATING_START + 11) +#define EL_DF_MIRROR_ROTATING_13 (EL_DF_MIRROR_ROTATING_START + 12) +#define EL_DF_MIRROR_ROTATING_14 (EL_DF_MIRROR_ROTATING_START + 13) +#define EL_DF_MIRROR_ROTATING_15 (EL_DF_MIRROR_ROTATING_START + 14) +#define EL_DF_MIRROR_ROTATING_16 (EL_DF_MIRROR_ROTATING_START + 15) +#define EL_DF_MIRROR_ROTATING_END EL_DF_MIRROR_ROTATING_15 + +#define EL_DF_WOODEN_GRID_ROTATING_START (EL_DF_START2 + 340) +#define EL_DF_WOODEN_GRID_ROTATING_1 (EL_DF_WOODEN_GRID_ROTATING_START + 0) +#define EL_DF_WOODEN_GRID_ROTATING_2 (EL_DF_WOODEN_GRID_ROTATING_START + 1) +#define EL_DF_WOODEN_GRID_ROTATING_3 (EL_DF_WOODEN_GRID_ROTATING_START + 2) +#define EL_DF_WOODEN_GRID_ROTATING_4 (EL_DF_WOODEN_GRID_ROTATING_START + 3) +#define EL_DF_WOODEN_GRID_ROTATING_5 (EL_DF_WOODEN_GRID_ROTATING_START + 4) +#define EL_DF_WOODEN_GRID_ROTATING_6 (EL_DF_WOODEN_GRID_ROTATING_START + 5) +#define EL_DF_WOODEN_GRID_ROTATING_7 (EL_DF_WOODEN_GRID_ROTATING_START + 6) +#define EL_DF_WOODEN_GRID_ROTATING_8 (EL_DF_WOODEN_GRID_ROTATING_START + 7) +#define EL_DF_WOODEN_GRID_ROTATING_END EL_DF_WOODEN_GRID_ROTATING_07 + +#define EL_DF_STEEL_GRID_ROTATING_START (EL_DF_START2 + 348) +#define EL_DF_STEEL_GRID_ROTATING_1 (EL_DF_STEEL_GRID_ROTATING_START + 0) +#define EL_DF_STEEL_GRID_ROTATING_2 (EL_DF_STEEL_GRID_ROTATING_START + 1) +#define EL_DF_STEEL_GRID_ROTATING_3 (EL_DF_STEEL_GRID_ROTATING_START + 2) +#define EL_DF_STEEL_GRID_ROTATING_4 (EL_DF_STEEL_GRID_ROTATING_START + 3) +#define EL_DF_STEEL_GRID_ROTATING_5 (EL_DF_STEEL_GRID_ROTATING_START + 4) +#define EL_DF_STEEL_GRID_ROTATING_6 (EL_DF_STEEL_GRID_ROTATING_START + 5) +#define EL_DF_STEEL_GRID_ROTATING_7 (EL_DF_STEEL_GRID_ROTATING_START + 6) +#define EL_DF_STEEL_GRID_ROTATING_8 (EL_DF_STEEL_GRID_ROTATING_START + 7) +#define EL_DF_STEEL_GRID_ROTATING_END EL_DF_STEEL_GRID_ROTATING_07 + +#define EL_DF_END (EL_DF_START2 + 355) + +#define EL_MM_BEAMER_RED_START (EL_DF_START2 + 356) +#define EL_MM_BEAMER_RED_1 (EL_MM_BEAMER_RED_START + 0) +#define EL_MM_BEAMER_RED_2 (EL_MM_BEAMER_RED_START + 1) +#define EL_MM_BEAMER_RED_3 (EL_MM_BEAMER_RED_START + 2) +#define EL_MM_BEAMER_RED_4 (EL_MM_BEAMER_RED_START + 3) +#define EL_MM_BEAMER_RED_5 (EL_MM_BEAMER_RED_START + 4) +#define EL_MM_BEAMER_RED_6 (EL_MM_BEAMER_RED_START + 5) +#define EL_MM_BEAMER_RED_7 (EL_MM_BEAMER_RED_START + 6) +#define EL_MM_BEAMER_RED_8 (EL_MM_BEAMER_RED_START + 7) +#define EL_MM_BEAMER_RED_9 (EL_MM_BEAMER_RED_START + 8) +#define EL_MM_BEAMER_RED_10 (EL_MM_BEAMER_RED_START + 9) +#define EL_MM_BEAMER_RED_11 (EL_MM_BEAMER_RED_START + 10) +#define EL_MM_BEAMER_RED_12 (EL_MM_BEAMER_RED_START + 11) +#define EL_MM_BEAMER_RED_13 (EL_MM_BEAMER_RED_START + 12) +#define EL_MM_BEAMER_RED_14 (EL_MM_BEAMER_RED_START + 13) +#define EL_MM_BEAMER_RED_15 (EL_MM_BEAMER_RED_START + 14) +#define EL_MM_BEAMER_RED_16 (EL_MM_BEAMER_RED_START + 15) +#define EL_MM_BEAMER_RED_END EL_MM_BEAMER_RED_16 +#define EL_MM_BEAMER_YELLOW_START (EL_DF_START2 + 372) +#define EL_MM_BEAMER_YELLOW_1 (EL_MM_BEAMER_YELLOW_START + 0) +#define EL_MM_BEAMER_YELLOW_2 (EL_MM_BEAMER_YELLOW_START + 1) +#define EL_MM_BEAMER_YELLOW_3 (EL_MM_BEAMER_YELLOW_START + 2) +#define EL_MM_BEAMER_YELLOW_4 (EL_MM_BEAMER_YELLOW_START + 3) +#define EL_MM_BEAMER_YELLOW_5 (EL_MM_BEAMER_YELLOW_START + 4) +#define EL_MM_BEAMER_YELLOW_6 (EL_MM_BEAMER_YELLOW_START + 5) +#define EL_MM_BEAMER_YELLOW_7 (EL_MM_BEAMER_YELLOW_START + 6) +#define EL_MM_BEAMER_YELLOW_8 (EL_MM_BEAMER_YELLOW_START + 7) +#define EL_MM_BEAMER_YELLOW_9 (EL_MM_BEAMER_YELLOW_START + 8) +#define EL_MM_BEAMER_YELLOW_10 (EL_MM_BEAMER_YELLOW_START + 9) +#define EL_MM_BEAMER_YELLOW_11 (EL_MM_BEAMER_YELLOW_START + 10) +#define EL_MM_BEAMER_YELLOW_12 (EL_MM_BEAMER_YELLOW_START + 11) +#define EL_MM_BEAMER_YELLOW_13 (EL_MM_BEAMER_YELLOW_START + 12) +#define EL_MM_BEAMER_YELLOW_14 (EL_MM_BEAMER_YELLOW_START + 13) +#define EL_MM_BEAMER_YELLOW_15 (EL_MM_BEAMER_YELLOW_START + 14) +#define EL_MM_BEAMER_YELLOW_16 (EL_MM_BEAMER_YELLOW_START + 15) +#define EL_MM_BEAMER_YELLOW_END EL_MM_BEAMER_YELLOW_16 +#define EL_MM_BEAMER_GREEN_START (EL_DF_START2 + 388) +#define EL_MM_BEAMER_GREEN_1 (EL_MM_BEAMER_GREEN_START + 0) +#define EL_MM_BEAMER_GREEN_2 (EL_MM_BEAMER_GREEN_START + 1) +#define EL_MM_BEAMER_GREEN_3 (EL_MM_BEAMER_GREEN_START + 2) +#define EL_MM_BEAMER_GREEN_4 (EL_MM_BEAMER_GREEN_START + 3) +#define EL_MM_BEAMER_GREEN_5 (EL_MM_BEAMER_GREEN_START + 4) +#define EL_MM_BEAMER_GREEN_6 (EL_MM_BEAMER_GREEN_START + 5) +#define EL_MM_BEAMER_GREEN_7 (EL_MM_BEAMER_GREEN_START + 6) +#define EL_MM_BEAMER_GREEN_8 (EL_MM_BEAMER_GREEN_START + 7) +#define EL_MM_BEAMER_GREEN_9 (EL_MM_BEAMER_GREEN_START + 8) +#define EL_MM_BEAMER_GREEN_10 (EL_MM_BEAMER_GREEN_START + 9) +#define EL_MM_BEAMER_GREEN_11 (EL_MM_BEAMER_GREEN_START + 10) +#define EL_MM_BEAMER_GREEN_12 (EL_MM_BEAMER_GREEN_START + 11) +#define EL_MM_BEAMER_GREEN_13 (EL_MM_BEAMER_GREEN_START + 12) +#define EL_MM_BEAMER_GREEN_14 (EL_MM_BEAMER_GREEN_START + 13) +#define EL_MM_BEAMER_GREEN_15 (EL_MM_BEAMER_GREEN_START + 14) +#define EL_MM_BEAMER_GREEN_16 (EL_MM_BEAMER_GREEN_START + 15) +#define EL_MM_BEAMER_GREEN_END EL_MM_BEAMER_GREEN_16 +#define EL_MM_BEAMER_BLUE_START (EL_DF_START2 + 404) +#define EL_MM_BEAMER_BLUE_1 (EL_MM_BEAMER_BLUE_START + 0) +#define EL_MM_BEAMER_BLUE_2 (EL_MM_BEAMER_BLUE_START + 1) +#define EL_MM_BEAMER_BLUE_3 (EL_MM_BEAMER_BLUE_START + 2) +#define EL_MM_BEAMER_BLUE_4 (EL_MM_BEAMER_BLUE_START + 3) +#define EL_MM_BEAMER_BLUE_5 (EL_MM_BEAMER_BLUE_START + 4) +#define EL_MM_BEAMER_BLUE_6 (EL_MM_BEAMER_BLUE_START + 5) +#define EL_MM_BEAMER_BLUE_7 (EL_MM_BEAMER_BLUE_START + 6) +#define EL_MM_BEAMER_BLUE_8 (EL_MM_BEAMER_BLUE_START + 7) +#define EL_MM_BEAMER_BLUE_9 (EL_MM_BEAMER_BLUE_START + 8) +#define EL_MM_BEAMER_BLUE_10 (EL_MM_BEAMER_BLUE_START + 9) +#define EL_MM_BEAMER_BLUE_11 (EL_MM_BEAMER_BLUE_START + 10) +#define EL_MM_BEAMER_BLUE_12 (EL_MM_BEAMER_BLUE_START + 11) +#define EL_MM_BEAMER_BLUE_13 (EL_MM_BEAMER_BLUE_START + 12) +#define EL_MM_BEAMER_BLUE_14 (EL_MM_BEAMER_BLUE_START + 13) +#define EL_MM_BEAMER_BLUE_15 (EL_MM_BEAMER_BLUE_START + 14) +#define EL_MM_BEAMER_BLUE_16 (EL_MM_BEAMER_BLUE_START + 15) +#define EL_MM_BEAMER_BLUE_END EL_MM_BEAMER_BLUE_16 + +#define EL_MM_MCDUFFIN 1204 +#define EL_MM_PACMAN 1205 +#define EL_MM_FUSE 1206 +#define EL_MM_STEEL_WALL 1207 +#define EL_MM_WOODEN_WALL 1208 +#define EL_MM_ICE_WALL 1209 +#define EL_MM_AMOEBA_WALL 1210 +#define EL_DF_LASER 1211 +#define EL_DF_RECEIVER 1212 +#define EL_DF_STEEL_WALL 1213 +#define EL_DF_WOODEN_WALL 1214 + +#define EL_MM_END_2 (EL_DF_START2 + 430) +#define EL_MM_END EL_MM_END_2 + +#define NUM_FILE_ELEMENTS 1215 /* "real" (and therefore drawable) runtime elements */ @@ -1563,8 +1934,20 @@ #define EL_DC_GATE_WHITE_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 69) #define EL_EMC_DRIPPER_ACTIVE (EL_FIRST_RUNTIME_REAL + 70) #define EL_EMC_SPRING_BUMPER_ACTIVE (EL_FIRST_RUNTIME_REAL + 71) +#define EL_MM_EXIT_OPENING (EL_FIRST_RUNTIME_REAL + 72) +#define EL_MM_EXIT_CLOSING (EL_FIRST_RUNTIME_REAL + 73) +#define EL_MM_GRAY_BALL_OPENING (EL_FIRST_RUNTIME_REAL + 74) +#define EL_MM_ICE_WALL_SHRINKING (EL_FIRST_RUNTIME_REAL + 75) +#define EL_MM_AMOEBA_WALL_GROWING (EL_FIRST_RUNTIME_REAL + 76) +#define EL_MM_PACMAN_EATING_RIGHT (EL_FIRST_RUNTIME_REAL + 77) +#define EL_MM_PACMAN_EATING_UP (EL_FIRST_RUNTIME_REAL + 78) +#define EL_MM_PACMAN_EATING_LEFT (EL_FIRST_RUNTIME_REAL + 79) +#define EL_MM_PACMAN_EATING_DOWN (EL_FIRST_RUNTIME_REAL + 80) + +#define NUM_DRAWABLE_ELEMENTS (EL_FIRST_RUNTIME_REAL + 81) -#define NUM_DRAWABLE_ELEMENTS (EL_FIRST_RUNTIME_REAL + 72) +#define EL_MM_RUNTIME_START EL_MM_EXIT_OPENING +#define EL_MM_RUNTIME_END EL_MM_AMOEBA_WALL_GROWING /* "unreal" (and therefore not drawable) runtime elements */ #define EL_FIRST_RUNTIME_UNREAL (NUM_DRAWABLE_ELEMENTS) @@ -1620,21 +2003,38 @@ #define EL_SHIELD_NORMAL_ACTIVE (EL_FIRST_DUMMY + 18) #define EL_SHIELD_DEADLY_ACTIVE (EL_FIRST_DUMMY + 19) #define EL_AMOEBA (EL_FIRST_DUMMY + 20) -#define EL_DEFAULT (EL_FIRST_DUMMY + 21) -#define EL_BD_DEFAULT (EL_FIRST_DUMMY + 22) -#define EL_SP_DEFAULT (EL_FIRST_DUMMY + 23) -#define EL_SB_DEFAULT (EL_FIRST_DUMMY + 24) -#define EL_GRAPHIC_1 (EL_FIRST_DUMMY + 25) -#define EL_GRAPHIC_2 (EL_FIRST_DUMMY + 26) -#define EL_GRAPHIC_3 (EL_FIRST_DUMMY + 27) -#define EL_GRAPHIC_4 (EL_FIRST_DUMMY + 28) -#define EL_GRAPHIC_5 (EL_FIRST_DUMMY + 29) -#define EL_GRAPHIC_6 (EL_FIRST_DUMMY + 30) -#define EL_GRAPHIC_7 (EL_FIRST_DUMMY + 31) -#define EL_GRAPHIC_8 (EL_FIRST_DUMMY + 32) +#define EL_MM_LIGHTBALL_RED (EL_FIRST_DUMMY + 21) +#define EL_MM_LIGHTBALL_BLUE (EL_FIRST_DUMMY + 22) +#define EL_MM_LIGHTBALL_YELLOW (EL_FIRST_DUMMY + 23) +#define EL_MM_MASK_MCDUFFIN_RIGHT (EL_FIRST_DUMMY + 24) +#define EL_MM_MASK_MCDUFFIN_UP (EL_FIRST_DUMMY + 25) +#define EL_MM_MASK_MCDUFFIN_LEFT (EL_FIRST_DUMMY + 26) +#define EL_MM_MASK_MCDUFFIN_DOWN (EL_FIRST_DUMMY + 27) +#define EL_MM_MASK_GRID_1 (EL_FIRST_DUMMY + 28) +#define EL_MM_MASK_GRID_2 (EL_FIRST_DUMMY + 29) +#define EL_MM_MASK_GRID_3 (EL_FIRST_DUMMY + 30) +#define EL_MM_MASK_GRID_4 (EL_FIRST_DUMMY + 31) +#define EL_MM_MASK_RECTANGLE (EL_FIRST_DUMMY + 32) +#define EL_MM_MASK_CIRCLE (EL_FIRST_DUMMY + 33) +#define EL_DEFAULT (EL_FIRST_DUMMY + 34) +#define EL_BD_DEFAULT (EL_FIRST_DUMMY + 35) +#define EL_SP_DEFAULT (EL_FIRST_DUMMY + 36) +#define EL_SB_DEFAULT (EL_FIRST_DUMMY + 37) +#define EL_MM_DEFAULT (EL_FIRST_DUMMY + 38) +#define EL_GRAPHIC_1 (EL_FIRST_DUMMY + 39) +#define EL_GRAPHIC_2 (EL_FIRST_DUMMY + 40) +#define EL_GRAPHIC_3 (EL_FIRST_DUMMY + 41) +#define EL_GRAPHIC_4 (EL_FIRST_DUMMY + 42) +#define EL_GRAPHIC_5 (EL_FIRST_DUMMY + 43) +#define EL_GRAPHIC_6 (EL_FIRST_DUMMY + 44) +#define EL_GRAPHIC_7 (EL_FIRST_DUMMY + 45) +#define EL_GRAPHIC_8 (EL_FIRST_DUMMY + 46) + +#define EL_MM_DUMMY_START EL_MM_MASK_MCDUFFIN_RIGHT +#define EL_MM_DUMMY_END EL_MM_MASK_CIRCLE /* internal elements (only used for internal purposes like copying) */ -#define EL_FIRST_INTERNAL (EL_FIRST_DUMMY + 33) +#define EL_FIRST_INTERNAL (EL_FIRST_DUMMY + 47) #define EL_INTERNAL_CLIPBOARD_CUSTOM (EL_FIRST_INTERNAL + 0) #define EL_INTERNAL_CLIPBOARD_CHANGE (EL_FIRST_INTERNAL + 1) @@ -1657,27 +2057,31 @@ #define EL_INTERNAL_CASCADE_DC_ACTIVE (EL_FIRST_INTERNAL + 17) #define EL_INTERNAL_CASCADE_DX (EL_FIRST_INTERNAL + 18) #define EL_INTERNAL_CASCADE_DX_ACTIVE (EL_FIRST_INTERNAL + 19) -#define EL_INTERNAL_CASCADE_CHARS (EL_FIRST_INTERNAL + 20) -#define EL_INTERNAL_CASCADE_CHARS_ACTIVE (EL_FIRST_INTERNAL + 21) -#define EL_INTERNAL_CASCADE_STEEL_CHARS (EL_FIRST_INTERNAL + 22) -#define EL_INTERNAL_CASCADE_STEEL_CHARS_ACTIVE (EL_FIRST_INTERNAL + 23) -#define EL_INTERNAL_CASCADE_CE (EL_FIRST_INTERNAL + 24) -#define EL_INTERNAL_CASCADE_CE_ACTIVE (EL_FIRST_INTERNAL + 25) -#define EL_INTERNAL_CASCADE_GE (EL_FIRST_INTERNAL + 26) -#define EL_INTERNAL_CASCADE_GE_ACTIVE (EL_FIRST_INTERNAL + 27) -#define EL_INTERNAL_CASCADE_REF (EL_FIRST_INTERNAL + 28) -#define EL_INTERNAL_CASCADE_REF_ACTIVE (EL_FIRST_INTERNAL + 29) -#define EL_INTERNAL_CASCADE_USER (EL_FIRST_INTERNAL + 30) -#define EL_INTERNAL_CASCADE_USER_ACTIVE (EL_FIRST_INTERNAL + 31) -#define EL_INTERNAL_CASCADE_DYNAMIC (EL_FIRST_INTERNAL + 32) -#define EL_INTERNAL_CASCADE_DYNAMIC_ACTIVE (EL_FIRST_INTERNAL + 33) +#define EL_INTERNAL_CASCADE_MM (EL_FIRST_INTERNAL + 20) +#define EL_INTERNAL_CASCADE_MM_ACTIVE (EL_FIRST_INTERNAL + 21) +#define EL_INTERNAL_CASCADE_DF (EL_FIRST_INTERNAL + 22) +#define EL_INTERNAL_CASCADE_DF_ACTIVE (EL_FIRST_INTERNAL + 23) +#define EL_INTERNAL_CASCADE_CHARS (EL_FIRST_INTERNAL + 24) +#define EL_INTERNAL_CASCADE_CHARS_ACTIVE (EL_FIRST_INTERNAL + 25) +#define EL_INTERNAL_CASCADE_STEEL_CHARS (EL_FIRST_INTERNAL + 26) +#define EL_INTERNAL_CASCADE_STEEL_CHARS_ACTIVE (EL_FIRST_INTERNAL + 27) +#define EL_INTERNAL_CASCADE_CE (EL_FIRST_INTERNAL + 28) +#define EL_INTERNAL_CASCADE_CE_ACTIVE (EL_FIRST_INTERNAL + 29) +#define EL_INTERNAL_CASCADE_GE (EL_FIRST_INTERNAL + 30) +#define EL_INTERNAL_CASCADE_GE_ACTIVE (EL_FIRST_INTERNAL + 31) +#define EL_INTERNAL_CASCADE_REF (EL_FIRST_INTERNAL + 32) +#define EL_INTERNAL_CASCADE_REF_ACTIVE (EL_FIRST_INTERNAL + 33) +#define EL_INTERNAL_CASCADE_USER (EL_FIRST_INTERNAL + 34) +#define EL_INTERNAL_CASCADE_USER_ACTIVE (EL_FIRST_INTERNAL + 35) +#define EL_INTERNAL_CASCADE_DYNAMIC (EL_FIRST_INTERNAL + 36) +#define EL_INTERNAL_CASCADE_DYNAMIC_ACTIVE (EL_FIRST_INTERNAL + 37) #define EL_INTERNAL_CLIPBOARD_START (EL_FIRST_INTERNAL + 0) #define EL_INTERNAL_CLIPBOARD_END (EL_FIRST_INTERNAL + 2) #define EL_INTERNAL_START (EL_FIRST_INTERNAL + 0) -#define EL_INTERNAL_END (EL_FIRST_INTERNAL + 33) +#define EL_INTERNAL_END (EL_FIRST_INTERNAL + 37) -#define MAX_NUM_ELEMENTS (EL_FIRST_INTERNAL + 34) +#define MAX_NUM_ELEMENTS (EL_FIRST_INTERNAL + 38) /* values for graphics/sounds action types */ @@ -2080,14 +2484,14 @@ #define PROGRAM_VERSION_MAJOR 4 #define PROGRAM_VERSION_MINOR 0 #define PROGRAM_VERSION_PATCH 1 -#define PROGRAM_VERSION_BUILD 1 +#define PROGRAM_VERSION_BUILD 5 #define PROGRAM_VERSION_EXTRA "" #define PROGRAM_TITLE_STRING "Rocks'n'Diamonds" #define PROGRAM_AUTHOR_STRING "Holger Schemel" #define PROGRAM_EMAIL_STRING "info@artsoft.org" #define PROGRAM_WEBSITE_STRING "http://www.artsoft.org/" -#define PROGRAM_COPYRIGHT_STRING "Copyright \xa9""1995-2017 by Holger Schemel" +#define PROGRAM_COPYRIGHT_STRING "Copyright \xa9""1995-2018 by Holger Schemel" #define PROGRAM_COMPANY_STRING "A Game by Artsoft Entertainment" #define PROGRAM_ICON_FILENAME "RocksIcon32x32.png" @@ -2140,14 +2544,16 @@ #define LEVEL_FILE_TYPE_DX 5 #define LEVEL_FILE_TYPE_SB 6 #define LEVEL_FILE_TYPE_DC 7 +#define LEVEL_FILE_TYPE_MM 8 -#define NUM_LEVEL_FILE_TYPES 8 +#define NUM_LEVEL_FILE_TYPES 9 /* values for game engine type identifier */ #define GAME_ENGINE_TYPE_UNKNOWN LEVEL_FILE_TYPE_UNKNOWN #define GAME_ENGINE_TYPE_RND LEVEL_FILE_TYPE_RND #define GAME_ENGINE_TYPE_EM LEVEL_FILE_TYPE_EM #define GAME_ENGINE_TYPE_SP LEVEL_FILE_TYPE_SP +#define GAME_ENGINE_TYPE_MM LEVEL_FILE_TYPE_MM #define NUM_ENGINE_TYPES 4 @@ -2518,6 +2924,7 @@ struct LevelInfo /* level stored in native format for the alternative native game engines */ struct LevelInfo_EM *native_em_level; struct LevelInfo_SP *native_sp_level; + struct LevelInfo_MM *native_mm_level; int file_version; /* file format version the level is stored with */ int game_version; /* game release version the level was created with */ @@ -2625,6 +3032,8 @@ struct LevelInfo boolean use_custom_template; /* use custom properties from template file */ + boolean file_has_custom_elements; /* set when level file contains CEs */ + boolean no_valid_file; /* set when level file missing or invalid */ boolean no_level_file; /* set when falling back to level template */ @@ -2649,6 +3058,7 @@ struct GlobalInfo int num_toons; float frames_per_second; + boolean show_frames_per_second; /* global values for fading screens and masking borders */ int border_status; @@ -3180,6 +3590,7 @@ extern SetupFileHash *image_config_hash; extern SetupFileHash *element_token_hash; extern SetupFileHash *graphic_token_hash; extern SetupFileHash *font_token_hash; +extern SetupFileHash *hide_setup_hash; extern struct ConfigTypeInfo image_config_suffix[]; extern struct ConfigTypeInfo sound_config_suffix[]; extern struct ConfigTypeInfo music_config_suffix[];