added support for bladder settings in BD engine to level editor
[rocksndiamonds.git] / src / editor.c
index 2837433467cc8e95e2005bfa87e06a5fd6f496a0..2ca3dfba9b78b79f44b409c4af2b4a7cbdba8258 100644 (file)
@@ -565,6 +565,8 @@ enum
   GADGET_ID_BD_AMOEBA_2_CONTENT_LOOKS_LIKE,
   GADGET_ID_BD_ACID_EATS_ELEMENT,
   GADGET_ID_BD_ACID_TURNS_TO_ELEMENT,
+  GADGET_ID_BD_BITER_EATS_ELEMENT,
+  GADGET_ID_BD_BLADDER_CONVERTS_BY_ELEMENT,
   GADGET_ID_START_ELEMENT,
   GADGET_ID_ARTWORK_ELEMENT,
   GADGET_ID_EXPLOSION_ELEMENT,
@@ -1176,6 +1178,8 @@ enum
   ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_LOOKS_LIKE,
   ED_DRAWING_ID_BD_ACID_EATS_ELEMENT,
   ED_DRAWING_ID_BD_ACID_TURNS_TO_ELEMENT,
+  ED_DRAWING_ID_BD_BITER_EATS_ELEMENT,
+  ED_DRAWING_ID_BD_BLADDER_CONVERTS_BY_ELEMENT,
   ED_DRAWING_ID_START_ELEMENT,
   ED_DRAWING_ID_ARTWORK_ELEMENT,
   ED_DRAWING_ID_EXPLOSION_ELEMENT,
@@ -4357,6 +4361,22 @@ static struct
     &level.bd_acid_turns_to_element,   1, 1,
     "Can leave behind:", NULL, NULL, NULL,     "Turns to this element after spreading"
   },
+  {
+    ED_DRAWING_ID_BD_BITER_EATS_ELEMENT,
+    ED_AREA_1X1_SETTINGS_XPOS(0),      ED_AREA_1X1_SETTINGS_YPOS(2),
+    ED_AREA_1X1_SETTINGS_XOFF,         ED_AREA_1X1_SETTINGS_YOFF,
+    GADGET_ID_BD_BITER_EATS_ELEMENT,   GADGET_ID_NONE,
+    &level.bd_biter_eats_element,      1, 1,
+    "Can eat:", NULL, NULL, NULL,      "Eats this element when moving"
+  },
+  {
+    ED_DRAWING_ID_BD_BLADDER_CONVERTS_BY_ELEMENT,
+    ED_AREA_1X1_SETTINGS_XPOS(0),      ED_AREA_1X1_SETTINGS_YPOS(1),
+    ED_AREA_1X1_SETTINGS_XOFF,         ED_AREA_1X1_SETTINGS_YOFF,
+    GADGET_ID_BD_BLADDER_CONVERTS_BY_ELEMENT, GADGET_ID_NONE,
+    &level.bd_bladder_converts_by_element,     1, 1,
+    "Turns to clock by touching:", NULL, NULL, NULL,   "Turns to clock by touching element"
+  },
 
   // ---------- level start element -------------------------------------------
 
@@ -10876,6 +10896,7 @@ static void DrawPropertiesInfo(void)
 #define TEXT_PERMEABILITY_BITS "slime permeability bits"
 #define TEXT_RANDOM_SEED       "slime random number seed"
 #define TEXT_ACID_SPREAD_RATE  "Spread rate (percent)"
+#define TEXT_BITER_MOVE_DELAY  "Move delay (BD frames)"
 
 static struct
 {
@@ -11000,6 +11021,16 @@ static struct
                                -1, 65535                                                       },
   { EL_BD_ACID,                        &level.bd_acid_spread_rate,             TEXT_ACID_SPREAD_RATE,
                                0, 100                                                          },
+  { EL_BD_BITER,               &level.bd_biter_move_delay,             TEXT_BITER_MOVE_DELAY,
+                               0, 3                                                            },
+  { EL_BD_BITER_RIGHT,         &level.bd_biter_move_delay,             TEXT_BITER_MOVE_DELAY,
+                               0, 3                                                            },
+  { EL_BD_BITER_UP,            &level.bd_biter_move_delay,             TEXT_BITER_MOVE_DELAY,
+                               0, 3                                                            },
+  { EL_BD_BITER_LEFT,          &level.bd_biter_move_delay,             TEXT_BITER_MOVE_DELAY,
+                               0, 3                                                            },
+  { EL_BD_BITER_DOWN,          &level.bd_biter_move_delay,             TEXT_BITER_MOVE_DELAY,
+                               0, 3                                                            },
   { EL_EXTRA_TIME,             &level.extra_time,                      TEXT_TIME_BONUS         },
   { EL_TIME_ORB_FULL,          &level.time_orb_time,                   TEXT_TIME_BONUS         },
   { EL_GAME_OF_LIFE,           &level.game_of_life[0],                 TEXT_GAME_OF_LIFE_1,0,8 },
@@ -11238,6 +11269,14 @@ static void DrawPropertiesConfig(void)
       MapDrawingArea(ED_DRAWING_ID_BD_ACID_EATS_ELEMENT);
       MapDrawingArea(ED_DRAWING_ID_BD_ACID_TURNS_TO_ELEMENT);
     }
+    else if (IS_BD_BITER(properties_element))
+    {
+      MapDrawingArea(ED_DRAWING_ID_BD_BITER_EATS_ELEMENT);
+    }
+    else if (properties_element == EL_BD_BLADDER)
+    {
+      MapDrawingArea(ED_DRAWING_ID_BD_BLADDER_CONVERTS_BY_ELEMENT);
+    }
     else if (properties_element == EL_YAMYAM ||
             properties_element == EL_YAMYAM_LEFT ||
             properties_element == EL_YAMYAM_RIGHT ||