added centering levels that are smaller than the playfield (MM engine)
[rocksndiamonds.git] / src / game_mm / mm_main.c
index 44ca0ad0830c88b252b1d8b57a2a786552183068..7eafc2f592995da6b488956cbd1c875928e2bab2 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,10 +92,10 @@ 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[] =
@@ -108,10 +117,10 @@ char *element_info_mm[] =
   "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)",
@@ -189,47 +198,47 @@ 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 (90\xb0)",
@@ -237,15 +246,15 @@ char *element_info_mm[] =
   "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)",
+  "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",
@@ -347,22 +356,22 @@ char *element_info_mm[] =
   "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",
@@ -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)",
+  "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 *);