rnd-20070121-2-src
[rocksndiamonds.git] / src / main.c
index 32d7fa7db33ddcecabf29db434c1d5a541698b28..5abc0ae1ffada1674d3440dc82f7da26289b5178 100644 (file)
@@ -59,6 +59,7 @@ short                 ChangeEvent[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 short                  WasJustMoving[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 short                  WasJustFalling[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 short                  CheckCollision[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+short                  CheckImpact[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 short                  AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 short                  AmoebaCnt[MAX_NUM_AMOEBA];
 short                  AmoebaCnt2[MAX_NUM_AMOEBA];
@@ -215,12 +216,12 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
   {
     "quicksand_empty",
     "quicksand",
-    "empty quicksand"
+    "quicksand (empty)"
   },
   {
     "quicksand_full",
     "quicksand",
-    "quicksand with rock"
+    "quicksand (with rock)"
   },
   {
     "amoeba_drop",
@@ -1114,17 +1115,17 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
   {
     "char_unused",
     "char",
-    "letter ''"
+    "letter 'button'"
   },
   {
     "char_unused",
     "char",
-    "letter ''"
+    "letter 'up'"
   },
   {
     "char_unused",
     "char",
-    "letter ''"
+    "letter 'down'"
   },
   {
     "expandable_wall_horizontal",
@@ -1427,17 +1428,17 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "wall with crystal"
   },
   {
-    "door_white",
+    "dc_gate_white",
     "gate",
-    "white door"
+    "white gate"
   },
   {
-    "door_white_gray",
+    "dc_gate_white_gray",
     "gate",
     "gray door (opened by white key)"
   },
   {
-    "key_white",
+    "dc_key_white",
     "key",
     "white key"
   },
@@ -1603,8 +1604,8 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
   },
   {
     "landmine",
-    "sand",
-    "land mine"
+    "landmine",
+    "land mine (not removable)"
   },
   {
     "envelope_obsolete",
@@ -1623,63 +1624,63 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
   },
   {
     "sign_exclamation",
-    "wall",
+    "sign",
     "sign (exclamation)"
   },
   {
     "sign_radioactivity",
-    "wall",
+    "sign",
     "sign (radio activity)"
   },
   {
     "sign_stop",
-    "wall",
+    "sign",
     "sign (stop)"
   },
   {
     "sign_wheelchair",
-    "wall",
+    "sign",
     "sign (wheel chair)"
   },
   {
     "sign_parking",
-    "wall",
+    "sign",
     "sign (parking)"
   },
   {
-    "sign_oneway",
-    "wall",
-    "sign (one way)"
+    "sign_no_entry",
+    "sign",
+    "sign (no entry)"
   },
   {
-    "sign_heart",
-    "wall",
-    "sign (heart)"
+    "sign_unused_1",
+    "sign",
+    "sign (unused)"
   },
   {
-    "sign_triangle",
-    "wall",
-    "sign (triangle)"
+    "sign_give_way",
+    "sign",
+    "sign (give way)"
   },
   {
-    "sign_round",
-    "wall",
-    "sign (round)"
+    "sign_entry_forbidden",
+    "sign",
+    "sign (entry forbidden)"
   },
   {
-    "sign_exit",
-    "wall",
-    "sign (exit)"
+    "sign_emergency_exit",
+    "sign",
+    "sign (emergency exit)"
   },
   {
-    "sign_yinyang",
-    "wall",
+    "sign_yin_yang",
+    "sign",
     "sign (yin yang)"
   },
   {
-    "sign_other",
-    "wall",
-    "sign (other)"
+    "sign_unused_2",
+    "sign",
+    "sign (unused)"
   },
   {
     "mole.left",
@@ -3786,6 +3787,661 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "any_element",
     "this element matches any element"
   },
+  {
+    "steel_char_space",
+    "steel_char",
+    "steel letter ' '"
+  },
+  {
+    "steel_char_exclam",
+    "steel_char",
+    "steel letter '!'"
+  },
+  {
+    "steel_char_quotedbl",
+    "steel_char",
+    "steel letter '\"'"
+  },
+  {
+    "steel_char_numbersign",
+    "steel_char",
+    "steel letter '#'"
+  },
+  {
+    "steel_char_dollar",
+    "steel_char",
+    "steel letter '$'"
+  },
+  {
+    "steel_char_percent",
+    "steel_char",
+    "steel letter '%'"
+  },
+  {
+    "steel_char_ampersand",
+    "steel_char",
+    "steel letter '&'"
+  },
+  {
+    "steel_char_apostrophe",
+    "steel_char",
+    "steel letter '''"
+  },
+  {
+    "steel_char_parenleft",
+    "steel_char",
+    "steel letter '('"
+  },
+  {
+    "steel_char_parenright",
+    "steel_char",
+    "steel letter ')'"
+  },
+  {
+    "steel_char_asterisk",
+    "steel_char",
+    "steel letter '*'"
+  },
+  {
+    "steel_char_plus",
+    "steel_char",
+    "steel letter '+'"
+  },
+  {
+    "steel_char_comma",
+    "steel_char",
+    "steel letter ','"
+  },
+  {
+    "steel_char_minus",
+    "steel_char",
+    "steel letter '-'"
+  },
+  {
+    "steel_char_period",
+    "steel_char",
+    "steel letter '.'"
+  },
+  {
+    "steel_char_slash",
+    "steel_char",
+    "steel letter '/'"
+  },
+  {
+    "steel_char_0",
+    "steel_char",
+    "steel letter '0'"
+  },
+  {
+    "steel_char_1",
+    "steel_char",
+    "steel letter '1'"
+  },
+  {
+    "steel_char_2",
+    "steel_char",
+    "steel letter '2'"
+  },
+  {
+    "steel_char_3",
+    "steel_char",
+    "steel letter '3'"
+  },
+  {
+    "steel_char_4",
+    "steel_char",
+    "steel letter '4'"
+  },
+  {
+    "steel_char_5",
+    "steel_char",
+    "steel letter '5'"
+  },
+  {
+    "steel_char_6",
+    "steel_char",
+    "steel letter '6'"
+  },
+  {
+    "steel_char_7",
+    "steel_char",
+    "steel letter '7'"
+  },
+  {
+    "steel_char_8",
+    "steel_char",
+    "steel letter '8'"
+  },
+  {
+    "steel_char_9",
+    "steel_char",
+    "steel letter '9'"
+  },
+  {
+    "steel_char_colon",
+    "steel_char",
+    "steel letter ':'"
+  },
+  {
+    "steel_char_semicolon",
+    "steel_char",
+    "steel letter ';'"
+  },
+  {
+    "steel_char_less",
+    "steel_char",
+    "steel letter '<'"
+  },
+  {
+    "steel_char_equal",
+    "steel_char",
+    "steel letter '='"
+  },
+  {
+    "steel_char_greater",
+    "steel_char",
+    "steel letter '>'"
+  },
+  {
+    "steel_char_question",
+    "steel_char",
+    "steel letter '?'"
+  },
+  {
+    "steel_char_at",
+    "steel_char",
+    "steel letter '@'"
+  },
+  {
+    "steel_char_a",
+    "steel_char",
+    "steel letter 'A'"
+  },
+  {
+    "steel_char_b",
+    "steel_char",
+    "steel letter 'B'"
+  },
+  {
+    "steel_char_c",
+    "steel_char",
+    "steel letter 'C'"
+  },
+  {
+    "steel_char_d",
+    "steel_char",
+    "steel letter 'D'"
+  },
+  {
+    "steel_char_e",
+    "steel_char",
+    "steel letter 'E'"
+  },
+  {
+    "steel_char_f",
+    "steel_char",
+    "steel letter 'F'"
+  },
+  {
+    "steel_char_g",
+    "steel_char",
+    "steel letter 'G'"
+  },
+  {
+    "steel_char_h",
+    "steel_char",
+    "steel letter 'H'"
+  },
+  {
+    "steel_char_i",
+    "steel_char",
+    "steel letter 'I'"
+  },
+  {
+    "steel_char_j",
+    "steel_char",
+    "steel letter 'J'"
+  },
+  {
+    "steel_char_k",
+    "steel_char",
+    "steel letter 'K'"
+  },
+  {
+    "steel_char_l",
+    "steel_char",
+    "steel letter 'L'"
+  },
+  {
+    "steel_char_m",
+    "steel_char",
+    "steel letter 'M'"
+  },
+  {
+    "steel_char_n",
+    "steel_char",
+    "steel letter 'N'"
+  },
+  {
+    "steel_char_o",
+    "steel_char",
+    "steel letter 'O'"
+  },
+  {
+    "steel_char_p",
+    "steel_char",
+    "steel letter 'P'"
+  },
+  {
+    "steel_char_q",
+    "steel_char",
+    "steel letter 'Q'"
+  },
+  {
+    "steel_char_r",
+    "steel_char",
+    "steel letter 'R'"
+  },
+  {
+    "steel_char_s",
+    "steel_char",
+    "steel letter 'S'"
+  },
+  {
+    "steel_char_t",
+    "steel_char",
+    "steel letter 'T'"
+  },
+  {
+    "steel_char_u",
+    "steel_char",
+    "steel letter 'U'"
+  },
+  {
+    "steel_char_v",
+    "steel_char",
+    "steel letter 'V'"
+  },
+  {
+    "steel_char_w",
+    "steel_char",
+    "steel letter 'W'"
+  },
+  {
+    "steel_char_x",
+    "steel_char",
+    "steel letter 'X'"
+  },
+  {
+    "steel_char_y",
+    "steel_char",
+    "steel letter 'Y'"
+  },
+  {
+    "steel_char_z",
+    "steel_char",
+    "steel letter 'Z'"
+  },
+  {
+    "steel_char_bracketleft",
+    "steel_char",
+    "steel letter '['"
+  },
+  {
+    "steel_char_backslash",
+    "steel_char",
+    "steel letter '\\'"
+  },
+  {
+    "steel_char_bracketright",
+    "steel_char",
+    "steel letter ']'"
+  },
+  {
+    "steel_char_asciicircum",
+    "steel_char",
+    "steel letter '^'"
+  },
+  {
+    "steel_char_underscore",
+    "steel_char",
+    "steel letter '_'"
+  },
+  {
+    "steel_char_copyright",
+    "steel_char",
+    "steel letter '©'"
+  },
+  {
+    "steel_char_aumlaut",
+    "steel_char",
+    "steel letter 'Ä'"
+  },
+  {
+    "steel_char_oumlaut",
+    "steel_char",
+    "steel letter 'Ö'"
+  },
+  {
+    "steel_char_uumlaut",
+    "steel_char",
+    "steel letter 'Ü'"
+  },
+  {
+    "steel_char_degree",
+    "steel_char",
+    "steel letter '°'"
+  },
+  {
+    "steel_char_trademark",
+    "steel_char",
+    "steel letter '®'"
+  },
+  {
+    "steel_char_cursor",
+    "steel_char",
+    "steel letter ' '"
+  },
+  {
+    "steel_char_unused",
+    "steel_char",
+    "steel letter ''"
+  },
+  {
+    "steel_char_unused",
+    "steel_char",
+    "steel letter ''"
+  },
+  {
+    "steel_char_unused",
+    "steel_char",
+    "steel letter ''"
+  },
+  {
+    "steel_char_unused",
+    "steel_char",
+    "steel letter ''"
+  },
+  {
+    "steel_char_unused",
+    "steel_char",
+    "steel letter ''"
+  },
+  {
+    "steel_char_unused",
+    "steel_char",
+    "steel letter ''"
+  },
+  {
+    "steel_char_unused",
+    "steel_char",
+    "steel letter 'button'"
+  },
+  {
+    "steel_char_unused",
+    "steel_char",
+    "steel letter 'up'"
+  },
+  {
+    "steel_char_unused",
+    "steel_char",
+    "steel letter 'down'"
+  },
+  {
+    "sperms",
+    "frankie",
+    "sperms"
+  },
+  {
+    "bullet",
+    "frankie",
+    "bullet"
+  },
+  {
+    "heart",
+    "frankie",
+    "heart"
+  },
+  {
+    "cross",
+    "frankie",
+    "cross"
+  },
+  {
+    "frankie",
+    "frankie",
+    "frankie"
+  },
+  {
+    "sign_sperms",
+    "sign",
+    "sign (sperms)"
+  },
+  {
+    "sign_bullet",
+    "sign",
+    "sign (bullet)"
+  },
+  {
+    "sign_heart",
+    "sign",
+    "sign (heart)"
+  },
+  {
+    "sign_cross",
+    "sign",
+    "sign (cross)"
+  },
+  {
+    "sign_frankie",
+    "sign",
+    "sign (frankie)"
+  },
+  {
+    "steel_exit_closed",
+    "steel_exit",
+    "closed steel exit"
+  },
+  {
+    "steel_exit_open",
+    "steel_exit",
+    "open steel exit"
+  },
+  {
+    "dc_steelwall_1_left",
+    "steelwall",
+    "steel wall (left)"
+  },
+  {
+    "dc_steelwall_1_right",
+    "steelwall",
+    "steel wall (right)"
+  },
+  {
+    "dc_steelwall_1_top",
+    "steelwall",
+    "steel wall (top)"
+  },
+  {
+    "dc_steelwall_1_bottom",
+    "steelwall",
+    "steel wall (bottom)"
+  },
+  {
+    "dc_steelwall_1_horizontal",
+    "steelwall",
+    "steel wall (top/bottom)"
+  },
+  {
+    "dc_steelwall_1_vertical",
+    "steelwall",
+    "steel wall (left/right)"
+  },
+  {
+    "dc_steelwall_1_topleft",
+    "steelwall",
+    "steel wall (top/left)"
+  },
+  {
+    "dc_steelwall_1_topright",
+    "steelwall",
+    "steel wall (top/right)"
+  },
+  {
+    "dc_steelwall_1_bottomleft",
+    "steelwall",
+    "steel wall (bottom/left)"
+  },
+  {
+    "dc_steelwall_1_bottomright",
+    "steelwall",
+    "steel wall (bottom/right)"
+  },
+  {
+    "dc_steelwall_1_topleft_2",
+    "steelwall",
+    "steel wall (top/left corner)"
+  },
+  {
+    "dc_steelwall_1_topright_2",
+    "steelwall",
+    "steel wall (top/right corner)"
+  },
+  {
+    "dc_steelwall_1_bottomleft_2",
+    "steelwall",
+    "steel wall (bottom/left corner)"
+  },
+  {
+    "dc_steelwall_1_bottomright_2",
+    "steelwall",
+    "steel wall (bottom/right corner)"
+  },
+  {
+    "dc_steelwall_2_left",
+    "steelwall",
+    "steel wall (left)"
+  },
+  {
+    "dc_steelwall_2_right",
+    "steelwall",
+    "steel wall (right)"
+  },
+  {
+    "dc_steelwall_2_top",
+    "steelwall",
+    "steel wall (top)"
+  },
+  {
+    "dc_steelwall_2_bottom",
+    "steelwall",
+    "steel wall (bottom)"
+  },
+  {
+    "dc_steelwall_2_horizontal",
+    "steelwall",
+    "steel wall (horizontal)"
+  },
+  {
+    "dc_steelwall_2_vertical",
+    "steelwall",
+    "steel wall (vertical)"
+  },
+  {
+    "dc_steelwall_2_middle",
+    "steelwall",
+    "steel wall (middle)"
+  },
+  {
+    "dc_steelwall_2_single",
+    "steelwall",
+    "steel wall (single)"
+  },
+  {
+    "dc_switchgate_switch_up",
+    "switchgate_switch",
+    "switch for switch gate (steel)"
+  },
+  {
+    "dc_switchgate_switch_down",
+    "switchgate_switch",
+    "switch for switch gate (steel)"
+  },
+  {
+    "dc_timegate_switch",
+    "timegate_switch",
+    "switch for time gate (steel)"
+  },
+  {
+    "dc_timegate_switch.active",
+    "timegate_switch",
+    "switch for time gate (steel)"
+  },
+  {
+    "dc_landmine",
+    "dc_landmine",
+    "land mine (DC style, removable)"
+  },
+  {
+    "expandable_steelwall",
+    "steelwall",
+    "growing steel wall"
+  },
+  {
+    "expandable_steelwall_horizontal",
+    "steelwall",
+    "growing steel wall (horizontal)"
+  },
+  {
+    "expandable_steelwall_vertical",
+    "steelwall",
+    "growing steel wall (vertical)"
+  },
+  {
+    "expandable_steelwall_any",
+    "steelwall",
+    "growing steel wall (any direction)"
+  },
+  {
+    "em_exit_closed",
+    "em_exit",
+    "closed exit (EM style)"
+  },
+  {
+    "em_exit_open",
+    "em_exit",
+    "open exit (EM style)"
+  },
+  {
+    "em_steel_exit_closed",
+    "em_steel_exit",
+    "closed steel exit (EM style)"
+  },
+  {
+    "em_steel_exit_open",
+    "em_steel_exit",
+    "open steel exit (EM style)"
+  },
+  {
+    "dc_gate_fake_gray",
+    "gate",
+    "gray door (opened by no key)"
+  },
+  {
+    "dc_magic_wall",
+    "dc_magic_wall",
+    "magic wall (DC style)"
+  },
+  {
+    "quicksand_fast_empty",
+    "quicksand",
+    "fast quicksand (empty)"
+  },
+  {
+    "quicksand_fast_full",
+    "quicksand",
+    "fast quicksand (with rock)"
+  },
 
   /* ----------------------------------------------------------------------- */
   /* "real" (and therefore drawable) runtime elements                        */
@@ -3931,6 +4587,36 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "exit",
     "-"
   },
+  {
+    "steel_exit.opening",
+    "steel_exit",
+    "-"
+  },
+  {
+    "steel_exit.closing",
+    "steel_exit",
+    "-"
+  },
+  {
+    "em_exit.opening",
+    "em_exit",
+    "-"
+  },
+  {
+    "em_exit.closing",
+    "em_exit",
+    "-"
+  },
+  {
+    "em_steel_exit.opening",
+    "em_steel_exit",
+    "-"
+  },
+  {
+    "em_steel_exit.closing",
+    "em_steel_exit",
+    "-"
+  },
   {
     "sp_exit.opening",
     "sp_exit",
@@ -3976,6 +4662,11 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "quicksand",
     "-"
   },
+  {
+    "quicksand_fast.emptying",
+    "quicksand",
+    "-"
+  },
   {
     "magic_wall.active",
     "magic_wall",
@@ -3986,6 +4677,11 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "magic_wall",
     "-"
   },
+  {
+    "dc_magic_wall.active",
+    "magic_wall",
+    "-"
+  },
   {
     "magic_wall_full",
     "magic_wall",
@@ -3996,6 +4692,11 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "magic_wall",
     "-"
   },
+  {
+    "dc_magic_wall_full",
+    "magic_wall",
+    "-"
+  },
   {
     "magic_wall.emptying",
     "magic_wall",
@@ -4006,6 +4707,11 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "magic_wall",
     "-"
   },
+  {
+    "dc_magic_wall.emptying",
+    "magic_wall",
+    "-"
+  },
   {
     "magic_wall_dead",
     "magic_wall",
@@ -4016,6 +4722,11 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "magic_wall",
     "-"
   },
+  {
+    "dc_magic_wall_dead",
+    "magic_wall",
+    "-"
+  },
 
   {
     "emc_fake_grass.active",
@@ -4082,6 +4793,11 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "gate",
     "",
   },
+  {
+    "dc_gate_white_gray.active",
+    "gate",
+    "",
+  },
   {
     "emc_dripper.active",
     "dripper",
@@ -4142,6 +4858,11 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "-",
     "-"
   },
+  {
+    "expandable_steelwall.growing",
+    "-",
+    "-"
+  },
   {
     "flames",
     "-",
@@ -4177,6 +4898,11 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "quicksand",
     "-"
   },
+  {
+    "quicksand_fast.filling",
+    "quicksand",
+    "-"
+  },
   {
     "magic_wall.filling",
     "-",
@@ -4187,6 +4913,11 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "-",
     "-"
   },
+  {
+    "dc_magic_wall.filling",
+    "-",
+    "-"
+  },
   {
     "element.snapping",
     "-",
@@ -4442,6 +5173,16 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "internal",
     "hide text elements"
   },
+  {
+    "internal_cascade_steel_chars",
+    "internal",
+    "show steel text elements"
+  },
+  {
+    "internal_cascade_steel_chars.active",
+    "internal",
+    "hide steel text elements"
+  },
   {
     "internal_cascade_ce",
     "internal",
@@ -4619,6 +5360,7 @@ struct SpecialSuffixInfo special_suffix_info[NUM_SPECIAL_GFX_ARGS + 1 + 1] =
 {
   { ".[DEFAULT]",      GFX_SPECIAL_ARG_DEFAULT,        },
   { ".TITLE",          GFX_SPECIAL_ARG_TITLE,          },
+  { ".MESSAGE",                GFX_SPECIAL_ARG_MESSAGE,        },
   { ".MAIN",           GFX_SPECIAL_ARG_MAIN,           },
   { ".LEVELS",         GFX_SPECIAL_ARG_LEVELS          },
   { ".SCORES",         GFX_SPECIAL_ARG_SCORES,         },