changed comments from old to new style (one-line comments only)
[rocksndiamonds.git] / src / game_mm / mm_main.c
index 44ca0ad0830c88b252b1d8b57a2a786552183068..6ead97a63a311308f54fc33cea7719fdf42e4649 100644 (file)
@@ -22,11 +22,20 @@ short               Hit[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 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;
 
@@ -83,15 +92,15 @@ struct XY   Step[16] =
 
 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)",
@@ -101,17 +110,17 @@ char *element_info_mm[] =
   "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)",
@@ -121,7 +130,7 @@ char *element_info_mm[] =
   "opening exit",
   "open exit",
   "magic kettle",
-  "bomb",                                      /* 30 */
+  "bomb",                                      // 30
   "prism",
   "steel wall",
   "steel wall",
@@ -131,7 +140,7 @@ char *element_info_mm[] =
   "steel wall",
   "steel wall",
   "steel wall",
-  "steel wall",                                        /* 40 */
+  "steel wall",                                        // 40
   "steel wall",
   "steel wall",
   "steel wall",
@@ -141,7 +150,7 @@ char *element_info_mm[] =
   "steel wall",
   "wooden wall",
   "wooden wall",
-  "wooden wall",                               /* 50 */
+  "wooden wall",                               // 50
   "wooden wall",
   "wooden wall",
   "wooden wall",
@@ -151,7 +160,7 @@ char *element_info_mm[] =
   "wooden wall",
   "wooden wall",
   "wooden wall",
-  "wooden wall",                               /* 60 */
+  "wooden wall",                               // 60
   "wooden wall",
   "wooden wall",
   "wooden wall",
@@ -161,7 +170,7 @@ char *element_info_mm[] =
   "ice wall",
   "ice wall",
   "ice wall",
-  "ice wall",                                  /* 70 */
+  "ice wall",                                  // 70
   "ice wall",
   "ice wall",
   "ice wall",
@@ -171,7 +180,7 @@ char *element_info_mm[] =
   "ice wall",
   "ice wall",
   "ice wall",
-  "amoeba wall",                               /* 80 */
+  "amoeba wall",                               // 80
   "amoeba wall",
   "amoeba wall",
   "amoeba wall",
@@ -181,7 +190,7 @@ char *element_info_mm[] =
   "amoeba wall",
   "amoeba wall",
   "amoeba wall",
-  "amoeba wall",                               /* 90 */
+  "amoeba wall",                               // 90
   "amoeba wall",
   "amoeba wall",
   "amoeba wall",
@@ -189,69 +198,69 @@ char *element_info_mm[] =
   "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 '#'",
@@ -261,7 +270,7 @@ char *element_info_mm[] =
   "letter '''",
   "letter '('",
   "letter ')'",
-  "letter '*'",                                        /* 170 */
+  "letter '*'",                                        // 170
   "letter '+'",
   "letter ','",
   "letter '-'",
@@ -271,7 +280,7 @@ char *element_info_mm[] =
   "letter '1'",
   "letter '2'",
   "letter '3'",
-  "letter '4'",                                        /* 180 */
+  "letter '4'",                                        // 180
   "letter '5'",
   "letter '6'",
   "letter '7'",
@@ -281,7 +290,7 @@ char *element_info_mm[] =
   "letter ';'",
   "letter '<'",
   "letter '='",
-  "letter '>'",                                        /* 190 */
+  "letter '>'",                                        // 190
   "letter '?'",
   "letter '@'",
   "letter 'A'",
@@ -291,7 +300,7 @@ char *element_info_mm[] =
   "letter 'E'",
   "letter 'F'",
   "letter 'G'",
-  "letter 'H'",                                        /* 200 */
+  "letter 'H'",                                        // 200
   "letter 'I'",
   "letter 'J'",
   "letter 'K'",
@@ -301,7 +310,7 @@ char *element_info_mm[] =
   "letter 'O'",
   "letter 'P'",
   "letter 'Q'",
-  "letter 'R'",                                        /* 210 */
+  "letter 'R'",                                        // 210
   "letter 'S'",
   "letter 'T'",
   "letter 'U'",
@@ -311,7 +320,7 @@ char *element_info_mm[] =
   "letter 'Y'",
   "letter 'Z'",
   "letter '\xc4'",
-  "letter '\xd6'",                             /* 220 */
+  "letter '\xd6'",                             // 220
   "letter '\xdc'",
   "letter '^'",
   "letter ''",
@@ -321,7 +330,7 @@ char *element_info_mm[] =
   "letter ''",
   "letter ''",
   "letter ''",
-  "letter ''",                                 /* 230 */
+  "letter ''",                                 // 230
   "letter ''",
   "letter ''",
   "letter ''",
@@ -331,7 +340,7 @@ char *element_info_mm[] =
   "letter ''",
   "letter ''",
   "letter ''",
-  "mirror (0\xb0)",                            /* 240 */
+  "mirror (0\xb0)",                            // 240
   "mirror (11.25\xb0)",
   "mirror (22.5\xb0)",
   "mirror (33.75\xb0)",
@@ -341,28 +350,28 @@ char *element_info_mm[] =
   "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",
@@ -371,7 +380,7 @@ char *element_info_mm[] =
   "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",
@@ -381,7 +390,7 @@ char *element_info_mm[] =
   "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",
@@ -391,7 +400,7 @@ char *element_info_mm[] =
   "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",
@@ -401,7 +410,7 @@ char *element_info_mm[] =
   "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)",
@@ -411,7 +420,7 @@ char *element_info_mm[] =
   "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)",
@@ -421,7 +430,7 @@ char *element_info_mm[] =
   "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)",
@@ -431,90 +440,90 @@ char *element_info_mm[] =
   "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 *);