// (c) 1994-2017 by Artsoft Entertainment
// Holger Schemel
// info@artsoft.org
-// http://www.artsoft.org/
+// https://www.artsoft.org/
// ----------------------------------------------------------------------------
// mm_main.c
// ============================================================================
short Box[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short Angle[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+short Frame[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+
unsigned int Elementeigenschaften[MAX_ELEMENTS];
+struct LaserInfo laser;
+
short LX,LY, XS,YS, ELX,ELY;
short CT,Ct;
+int dSX, dSY;
+int cSX, cSY;
+int cSX2, cSY2;
+int cFX, cFY;
+
Pixel pen_fg, pen_bg, pen_ray, pen_magicolor[2];
int color_status;
short Sign[16] =
{
- 0xA,0xF,0xB,0xF,
- 0x3,0xF,0x7,0xF,
- 0x5,0xF,0xD,0xF,
- 0xC,0xF,0xE,0xF
+ 0xA, 0xF, 0xB, 0xF,
+ 0x3, 0xF, 0x7, 0xF,
+ 0x5, 0xF, 0xD, 0xF,
+ 0xC, 0xF, 0xE, 0xF
};
char *element_info_mm[] =
{
- "empty space", /* 0 */
+ "empty space", // 0
"mirror (0\xb0)",
"mirror (11.25\xb0)",
"mirror (22.5\xb0)",
"mirror (67.5\xb0)",
"mirror (78.75\xb0)",
"mirror (90\xb0)",
- "mirror (101.25\xb0)", /* 10 */
+ "mirror (101.25\xb0)", // 10
"mirror (112.5\xb0)",
"mirror (123.75\xb0)",
"mirror (135\xb0)",
"mirror (146.25\xb0)",
"mirror (157.5\xb0)",
"mirror (168.75\xb0)",
- "fixed steel polarisator (0\xb0)",
- "fixed steel polarisator (90\xb0)",
- "fixed steel polarisator (45\xb0)",
- "fixed steel polarisator (135\xb0)", /* 20 */
+ "fixed steel polarizer (0\xb0)",
+ "fixed steel polarizer (90\xb0)",
+ "fixed steel polarizer (45\xb0)",
+ "fixed steel polarizer (135\xb0)", // 20
"Gregor McDuffin (looking right)",
"Gregor McDuffin (looking up)",
"Gregor McDuffin (looking left)",
"opening exit",
"open exit",
"magic kettle",
- "bomb", /* 30 */
+ "bomb", // 30
"prism",
"steel wall",
"steel wall",
"steel wall",
"steel wall",
"steel wall",
- "steel wall", /* 40 */
+ "steel wall", // 40
"steel wall",
"steel wall",
"steel wall",
"steel wall",
"wooden wall",
"wooden wall",
- "wooden wall", /* 50 */
+ "wooden wall", // 50
"wooden wall",
"wooden wall",
"wooden wall",
"wooden wall",
"wooden wall",
"wooden wall",
- "wooden wall", /* 60 */
+ "wooden wall", // 60
"wooden wall",
"wooden wall",
"wooden wall",
"ice wall",
"ice wall",
"ice wall",
- "ice wall", /* 70 */
+ "ice wall", // 70
"ice wall",
"ice wall",
"ice wall",
"ice wall",
"ice wall",
"ice wall",
- "amoeba wall", /* 80 */
+ "amoeba wall", // 80
"amoeba wall",
"amoeba wall",
"amoeba wall",
"amoeba wall",
"amoeba wall",
"amoeba wall",
- "amoeba wall", /* 90 */
+ "amoeba wall", // 90
"amoeba wall",
"amoeba wall",
"amoeba wall",
"amoeba wall",
"wooden block",
"gray ball",
- "beamer (0\xb0)",
- "beamer (22.5\xb0)",
- "beamer (45\xb0)", /* 100 */
- "beamer (67.5\xb0)",
- "beamer (90\xb0)",
- "beamer (112.5\xb0)",
- "beamer (135\xb0)",
- "beamer (157.5\xb0)",
- "beamer (180\xb0)",
- "beamer (202.5\xb0)",
- "beamer (225\xb0)",
- "beamer (247.5\xb0)",
- "beamer (270\xb0)", /* 110 */
- "beamer (292.5\xb0)",
- "beamer (315\xb0)",
- "beamer (337.5\xb0)",
+ "teleporter (0\xb0)",
+ "teleporter (22.5\xb0)",
+ "teleporter (45\xb0)", // 100
+ "teleporter (67.5\xb0)",
+ "teleporter (90\xb0)",
+ "teleporter (112.5\xb0)",
+ "teleporter (135\xb0)",
+ "teleporter (157.5\xb0)",
+ "teleporter (180\xb0)",
+ "teleporter (202.5\xb0)",
+ "teleporter (225\xb0)",
+ "teleporter (247.5\xb0)",
+ "teleporter (270\xb0)", // 110
+ "teleporter (292.5\xb0)",
+ "teleporter (315\xb0)",
+ "teleporter (337.5\xb0)",
"fuse",
"pac man (starts moving right)",
"pac man (starts moving up)",
"pac man (starts moving left)",
"pac man (starts moving down)",
- "polarisator (0\xb0)",
- "polarisator (11.25\xb0)", /* 120 */
- "polarisator (22.5\xb0)",
- "polarisator (33.75\xb0)",
- "polarisator (45\xb0)",
- "polarisator (56.25\xb0)",
- "polarisator (67.5\xb0)",
- "polarisator (78.75\xb0)",
- "polarisator (90\xb0)",
- "polarisator (101.25\xb0)",
- "polarisator (112.5\xb0)",
- "polarisator (123.75\xb0)", /* 130 */
- "polarisator (135\xb0)",
- "polarisator (146.25\xb0)",
- "polarisator (157.5\xb0)",
- "polarisator (168.75\xb0)",
- "two-way polarisator (0\xb0)",
- "two-way polarisator (22.5\xb0)",
- "two-way polarisator (45\xb0)",
- "two-way polarisator (67.5\xb0)",
+ "polarizer (0\xb0)",
+ "polarizer (11.25\xb0)", // 120
+ "polarizer (22.5\xb0)",
+ "polarizer (33.75\xb0)",
+ "polarizer (45\xb0)",
+ "polarizer (56.25\xb0)",
+ "polarizer (67.5\xb0)",
+ "polarizer (78.75\xb0)",
+ "polarizer (90\xb0)",
+ "polarizer (101.25\xb0)",
+ "polarizer (112.5\xb0)",
+ "polarizer (123.75\xb0)", // 130
+ "polarizer (135\xb0)",
+ "polarizer (146.25\xb0)",
+ "polarizer (157.5\xb0)",
+ "polarizer (168.75\xb0)",
+ "two-way polarizer (0\xb0)",
+ "two-way polarizer (22.5\xb0)",
+ "two-way polarizer (45\xb0)",
+ "two-way polarizer (67.5\xb0)",
"fixed mirror (0\xb0)",
- "fixed mirror (45\xb0)", /* 140 */
+ "fixed mirror (45\xb0)", // 140
"fixed mirror (90\xb0)",
"fixed mirror (135\xb0)",
"reflecting stone lock",
"key",
"light bulb (dark)",
- "ligh bulb (glowing)",
+ "light bulb (glowing)",
"bonus ball",
"reflecting stone block",
"wooden lock",
- "extra energy ball (full)", /* 150 */
- "fixed wooden polarisator (0\xb0)",
- "fixed wooden polarisator (90\xb0)",
- "fixed wooden polarisator (45\xb0)",
- "fixed wooden polarisator (135\xb0)",
+ "extra energy ball (full)", // 150
+ "fixed wooden polarizer (0\xb0)",
+ "fixed wooden polarizer (90\xb0)",
+ "fixed wooden polarizer (45\xb0)",
+ "fixed wooden polarizer (135\xb0)",
"extra energy ball (empty)",
"unused",
"unused",
"unused",
"unused",
- "letter ' '", /* 160 */
+ "letter ' '", // 160
"letter '!'",
"letter '\"'",
"letter '#'",
"letter '''",
"letter '('",
"letter ')'",
- "letter '*'", /* 170 */
+ "letter '*'", // 170
"letter '+'",
"letter ','",
"letter '-'",
"letter '1'",
"letter '2'",
"letter '3'",
- "letter '4'", /* 180 */
+ "letter '4'", // 180
"letter '5'",
"letter '6'",
"letter '7'",
"letter ';'",
"letter '<'",
"letter '='",
- "letter '>'", /* 190 */
+ "letter '>'", // 190
"letter '?'",
"letter '@'",
"letter 'A'",
"letter 'E'",
"letter 'F'",
"letter 'G'",
- "letter 'H'", /* 200 */
+ "letter 'H'", // 200
"letter 'I'",
"letter 'J'",
"letter 'K'",
"letter 'O'",
"letter 'P'",
"letter 'Q'",
- "letter 'R'", /* 210 */
+ "letter 'R'", // 210
"letter 'S'",
"letter 'T'",
"letter 'U'",
"letter 'Y'",
"letter 'Z'",
"letter '\xc4'",
- "letter '\xd6'", /* 220 */
+ "letter '\xd6'", // 220
"letter '\xdc'",
"letter '^'",
"letter ''",
"letter ''",
"letter ''",
"letter ''",
- "letter ''", /* 230 */
+ "letter ''", // 230
"letter ''",
"letter ''",
"letter ''",
"letter ''",
"letter ''",
"letter ''",
- "mirror (0\xb0)", /* 240 */
+ "mirror (0\xb0)", // 240
"mirror (11.25\xb0)",
"mirror (22.5\xb0)",
"mirror (33.75\xb0)",
"mirror (78.75\xb0)",
"mirror (90\xb0)",
"mirror (101.25\xb0)",
- "mirror (112.5\xb0)", /* 250 */
+ "mirror (112.5\xb0)", // 250
"mirror (123.75\xb0)",
"mirror (135\xb0)",
"mirror (146.25\xb0)",
"mirror (157.5\xb0)",
"mirror (168.75\xb0)",
- "fixed wooden polarisator (0\xb0)",
- "fixed wooden polarisator (22.5\xb0)",
- "fixed wooden polarisator (45\xb0)",
- "fixed wooden polarisator (67.5\xb0)",
- "fixed wooden polarisator (90\xb0)", /* 260 */
- "fixed wooden polarisator (112.5\xb0)",
- "fixed wooden polarisator (135\xb0)",
- "fixed wooden polarisator (157.5\xb0)",
- "fixed steel polarisator (0\xb0)",
- "fixed steel polarisator (22.5\xb0)",
- "fixed steel polarisator (45\xb0)",
- "fixed steel polarisator (67.5\xb0)",
- "fixed steel polarisator (90\xb0)",
- "fixed steel polarisator (112.5\xb0)",
- "fixed steel polarisator (135\xb0)", /* 270 */
- "fixed steel polarisator (157.5\xb0)",
+ "fixed wooden polarizer (0\xb0)",
+ "fixed wooden polarizer (22.5\xb0)",
+ "fixed wooden polarizer (45\xb0)",
+ "fixed wooden polarizer (67.5\xb0)",
+ "fixed wooden polarizer (90\xb0)", // 260
+ "fixed wooden polarizer (112.5\xb0)",
+ "fixed wooden polarizer (135\xb0)",
+ "fixed wooden polarizer (157.5\xb0)",
+ "fixed steel polarizer (0\xb0)",
+ "fixed steel polarizer (22.5\xb0)",
+ "fixed steel polarizer (45\xb0)",
+ "fixed steel polarizer (67.5\xb0)",
+ "fixed steel polarizer (90\xb0)",
+ "fixed steel polarizer (112.5\xb0)",
+ "fixed steel polarizer (135\xb0)", // 270
+ "fixed steel polarizer (157.5\xb0)",
"deflektor style wooden wall",
"deflektor style wooden wall",
"deflektor style wooden wall",
"deflektor style wooden wall",
"deflektor style wooden wall",
"deflektor style wooden wall",
- "deflektor style wooden wall", /* 280 */
+ "deflektor style wooden wall", // 280
"deflektor style wooden wall",
"deflektor style wooden wall",
"deflektor style wooden wall",
"deflektor style wooden wall",
"deflektor style steel wall",
"deflektor style steel wall",
- "deflektor style steel wall", /* 290 */
+ "deflektor style steel wall", // 290
"deflektor style steel wall",
"deflektor style steel wall",
"deflektor style steel wall",
"deflektor style steel wall",
"deflektor style steel wall",
"deflektor style steel wall",
- "deflektor style steel wall", /* 300 */
+ "deflektor style steel wall", // 300
"deflektor style steel wall",
"deflektor style steel wall",
"deflektor style steel wall",
"refractor",
"laser cannon (shooting right)",
"laser cannon (shooting up)",
- "laser cannon (shooting left)", /* 310 */
+ "laser cannon (shooting left)", // 310
"laser cannon (shooting down)",
"laser receiver (directed right)",
"laser receiver (directed up)",
"fibre optic (1b)",
"fibre optic (2a)",
"fibre optic (2b)",
- "fibre optic (3a)", /* 320 */
+ "fibre optic (3a)", // 320
"fibre optic (3b)",
"fibre optic (4a)",
"fibre optic (4b)",
"rotating mirror (33.75\xb0)",
"rotating mirror (45\xb0)",
"rotating mirror (56.25\xb0)",
- "rotating mirror (67.5\xb0)", /* 330 */
+ "rotating mirror (67.5\xb0)", // 330
"rotating mirror (78.75\xb0)",
"rotating mirror (90\xb0)",
"rotating mirror (101.25\xb0)",
"rotating mirror (146.25\xb0)",
"rotating mirror (157.5\xb0)",
"rotating mirror (168.75\xb0)",
- "rotating wooden polarisator (0\xb0)", /* 340 */
- "rotating wooden polarisator (22.5\xb0)",
- "rotating wooden polarisator (45\xb0)",
- "rotating wooden polarisator (67.5\xb0)",
- "rotating wooden polarisator (90\xb0)",
- "rotating wooden polarisator (112.5\xb0)",
- "rotating wooden polarisator (135\xb0)",
- "rotating wooden polarisator (157.5\xb0)",
- "rotating steel polarisator (0\xb0)",
- "rotating steel polarisator (22.5\xb0)",
- "rotating steel polarisator (45\xb0)", /* 350 */
- "rotating steel polarisator (67.5\xb0)",
- "rotating steel polarisator (90\xb0)",
- "rotating steel polarisator (112.5\xb0)",
- "rotating steel polarisator (135\xb0)",
- "rotating steel polarisator (157.5\xb0)",
- "red beamer (0\xb0)",
- "red beamer (22.5\xb0)",
- "red beamer (45\xb0)",
- "red beamer (67.5\xb0)",
- "red beamer (90\xb0)", /* 360 */
- "red beamer (112.5\xb0)",
- "red beamer (135\xb0)",
- "red beamer (157.5\xb0)",
- "red beamer (180\xb0)",
- "red beamer (202.5\xb0)",
- "red beamer (225\xb0)",
- "red beamer (247.5\xb0)",
- "red beamer (270\xb0)",
- "red beamer (292.5\xb0)",
- "red beamer (315\xb0)", /* 370 */
- "red beamer (337.5\xb0)",
- "yellow beamer (0\xb0)",
- "yellow beamer (22.5\xb0)",
- "yellow beamer (45\xb0)",
- "yellow beamer (67.5\xb0)",
- "yellow beamer (90\xb0)",
- "yellow beamer (112.5\xb0)",
- "yellow beamer (135\xb0)",
- "yellow beamer (157.5\xb0)",
- "yellow beamer (180\xb0)", /* 380 */
- "yellow beamer (202.5\xb0)",
- "yellow beamer (225\xb0)",
- "yellow beamer (247.5\xb0)",
- "yellow beamer (270\xb0)",
- "yellow beamer (292.5\xb0)",
- "yellow beamer (315\xb0)",
- "yellow beamer (337.5\xb0)",
- "green beamer (0\xb0)",
- "green beamer (22.5\xb0)",
- "green beamer (45\xb0)", /* 390 */
- "green beamer (67.5\xb0)",
- "green beamer (90\xb0)",
- "green beamer (112.5\xb0)",
- "green beamer (135\xb0)",
- "green beamer (157.5\xb0)",
- "green beamer (180\xb0)",
- "green beamer (202.5\xb0)",
- "green beamer (225\xb0)",
- "green beamer (247.5\xb0)",
- "green beamer (270\xb0)", /* 400 */
- "green beamer (292.5\xb0)",
- "green beamer (315\xb0)",
- "green beamer (337.5\xb0)",
- "blue beamer (0\xb0)",
- "blue beamer (22.5\xb0)",
- "blue beamer (45\xb0)",
- "blue beamer (67.5\xb0)",
- "blue beamer (90\xb0)",
- "blue beamer (112.5\xb0)",
- "blue beamer (135\xb0)", /* 410 */
- "blue beamer (157.5\xb0)",
- "blue beamer (180\xb0)",
- "blue beamer (202.5\xb0)",
- "blue beamer (225\xb0)",
- "blue beamer (247.5\xb0)",
- "blue beamer (270\xb0)",
- "blue beamer (292.5\xb0)",
- "blue beamer (315\xb0)",
- "blue beamer (337.5\xb0)",
- "unknown", /* 420 */
+ "rotating wooden polarizer (0\xb0)", // 340
+ "rotating wooden polarizer (22.5\xb0)",
+ "rotating wooden polarizer (45\xb0)",
+ "rotating wooden polarizer (67.5\xb0)",
+ "rotating wooden polarizer (90\xb0)",
+ "rotating wooden polarizer (112.5\xb0)",
+ "rotating wooden polarizer (135\xb0)",
+ "rotating wooden polarizer (157.5\xb0)",
+ "rotating steel polarizer (0\xb0)",
+ "rotating steel polarizer (22.5\xb0)",
+ "rotating steel polarizer (45\xb0)", // 350
+ "rotating steel polarizer (67.5\xb0)",
+ "rotating steel polarizer (90\xb0)",
+ "rotating steel polarizer (112.5\xb0)",
+ "rotating steel polarizer (135\xb0)",
+ "rotating steel polarizer (157.5\xb0)",
+ "red teleporter (0\xb0)",
+ "red teleporter (22.5\xb0)",
+ "red teleporter (45\xb0)",
+ "red teleporter (67.5\xb0)",
+ "red teleporter (90\xb0)", // 360
+ "red teleporter (112.5\xb0)",
+ "red teleporter (135\xb0)",
+ "red teleporter (157.5\xb0)",
+ "red teleporter (180\xb0)",
+ "red teleporter (202.5\xb0)",
+ "red teleporter (225\xb0)",
+ "red teleporter (247.5\xb0)",
+ "red teleporter (270\xb0)",
+ "red teleporter (292.5\xb0)",
+ "red teleporter (315\xb0)", // 370
+ "red teleporter (337.5\xb0)",
+ "yellow teleporter (0\xb0)",
+ "yellow teleporter (22.5\xb0)",
+ "yellow teleporter (45\xb0)",
+ "yellow teleporter (67.5\xb0)",
+ "yellow teleporter (90\xb0)",
+ "yellow teleporter (112.5\xb0)",
+ "yellow teleporter (135\xb0)",
+ "yellow teleporter (157.5\xb0)",
+ "yellow teleporter (180\xb0)", // 380
+ "yellow teleporter (202.5\xb0)",
+ "yellow teleporter (225\xb0)",
+ "yellow teleporter (247.5\xb0)",
+ "yellow teleporter (270\xb0)",
+ "yellow teleporter (292.5\xb0)",
+ "yellow teleporter (315\xb0)",
+ "yellow teleporter (337.5\xb0)",
+ "green teleporter (0\xb0)",
+ "green teleporter (22.5\xb0)",
+ "green teleporter (45\xb0)", // 390
+ "green teleporter (67.5\xb0)",
+ "green teleporter (90\xb0)",
+ "green teleporter (112.5\xb0)",
+ "green teleporter (135\xb0)",
+ "green teleporter (157.5\xb0)",
+ "green teleporter (180\xb0)",
+ "green teleporter (202.5\xb0)",
+ "green teleporter (225\xb0)",
+ "green teleporter (247.5\xb0)",
+ "green teleporter (270\xb0)", // 400
+ "green teleporter (292.5\xb0)",
+ "green teleporter (315\xb0)",
+ "green teleporter (337.5\xb0)",
+ "blue teleporter (0\xb0)",
+ "blue teleporter (22.5\xb0)",
+ "blue teleporter (45\xb0)",
+ "blue teleporter (67.5\xb0)",
+ "blue teleporter (90\xb0)",
+ "blue teleporter (112.5\xb0)",
+ "blue teleporter (135\xb0)", // 410
+ "blue teleporter (157.5\xb0)",
+ "blue teleporter (180\xb0)",
+ "blue teleporter (202.5\xb0)",
+ "blue teleporter (225\xb0)",
+ "blue teleporter (247.5\xb0)",
+ "blue teleporter (270\xb0)",
+ "blue teleporter (292.5\xb0)",
+ "blue teleporter (315\xb0)",
+ "blue teleporter (337.5\xb0)",
+ "unknown", // 420
/*
"-------------------------------",
*/
};
-int num_element_info_mm = sizeof(element_info_mm)/sizeof(char *);
+int num_element_info_mm = sizeof(element_info_mm) / sizeof(char *);