added support for expanding wall settings in BD engine to level editor
[rocksndiamonds.git] / src / editor.c
index 4411b1996cc7a8f802395696869bf2f82558ab33..391aae986ad2e72c54fe0658f92050c002db2756 100644 (file)
@@ -566,6 +566,7 @@ enum
   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,
@@ -728,6 +729,7 @@ enum
   GADGET_ID_BD_VOODOO_DIES_BY_ROCK,
   GADGET_ID_BD_VOODOO_VANISH_BY_EXPLOSION,
   GADGET_ID_BD_SLIME_IS_PREDICTABLE,
+  GADGET_ID_BD_CHANGE_EXPANDING_WALL,
   GADGET_ID_ENVELOPE_AUTOWRAP,
   GADGET_ID_ENVELOPE_CENTERED,
   GADGET_ID_MM_LASER_RED,
@@ -1073,6 +1075,7 @@ enum
   ED_CHECKBUTTON_ID_BD_VOODOO_DIES_BY_ROCK,
   ED_CHECKBUTTON_ID_BD_VOODOO_VANISH_BY_EXPLOSION,
   ED_CHECKBUTTON_ID_BD_SLIME_IS_PREDICTABLE,
+  ED_CHECKBUTTON_ID_BD_CHANGE_EXPANDING_WALL,
   ED_CHECKBUTTON_ID_ENVELOPE_AUTOWRAP,
   ED_CHECKBUTTON_ID_ENVELOPE_CENTERED,
   ED_CHECKBUTTON_ID_MM_LASER_RED,
@@ -1178,6 +1181,7 @@ enum
   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,
@@ -3808,6 +3812,14 @@ static struct
     NULL, NULL,
     "Slime is predictable",            "Use predictable random numbers"
   },
+  {
+    ED_CHECKBUTTON_ID_BD_CHANGE_EXPANDING_WALL,
+    ED_ELEMENT_SETTINGS_XPOS(0),       ED_ELEMENT_SETTINGS_YPOS(0),
+    GADGET_ID_BD_CHANGE_EXPANDING_WALL, GADGET_ID_NONE,
+    &level.bd_change_expanding_wall,
+    NULL, NULL,
+    "Change direction",                        "Switch horizontal/vertical direction"
+  },
   {
     ED_CHECKBUTTON_ID_ENVELOPE_AUTOWRAP,
     ED_ELEMENT_SETTINGS_XPOS(0),       ED_ELEMENT_SETTINGS_YPOS(1),
@@ -4367,6 +4379,14 @@ static struct
     &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 -------------------------------------------
 
@@ -11073,6 +11093,7 @@ static boolean checkPropertiesConfig(int element)
       IS_DF_LASER(element) ||
       IS_PLAYER_ELEMENT(element) ||
       IS_BD_PLAYER_ELEMENT(element) ||
+      IS_BD_EXPANDABLE_WALL(properties_element) ||
       IS_SOKOBAN_OBJECT_OR_FIELD(element) ||
       HAS_EDITOR_CONTENT(element) ||
       CAN_GROW(element) ||
@@ -11263,6 +11284,10 @@ static void DrawPropertiesConfig(void)
     {
       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 ||
@@ -11426,6 +11451,11 @@ static void DrawPropertiesConfig(void)
     MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_MAGIC_WALL_STOPS_AMOEBA);
   }
 
+  if (IS_BD_EXPANDABLE_WALL(properties_element))
+  {
+    MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_CHANGE_EXPANDING_WALL);
+  }
+
   // special case: slippery walls option for gems only available in R'n'D game engine
   if (IS_GEM(properties_element) && level.game_engine_type == GAME_ENGINE_TYPE_RND)
     MapCheckbuttonGadget(ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS);