added support for sand (dirt) settings in BD engine to level editor
[rocksndiamonds.git] / src / editor.c
index d4cab46f0fa880d1098fdc698dbec20be90301d3..73d2c36f336d13cedc4b39741d0823a8b06670b7 100644 (file)
@@ -581,6 +581,8 @@ enum
   GADGET_ID_BD_BITER_EATS_ELEMENT,
   GADGET_ID_BD_BLADDER_CONVERTS_BY_ELEMENT,
   GADGET_ID_BD_NUT_CONTENT,
+  GADGET_ID_BD_EXPANDING_WALL_LOOKS_LIKE,
+  GADGET_ID_BD_SAND_LOOKS_LIKE,
   GADGET_ID_START_ELEMENT,
   GADGET_ID_ARTWORK_ELEMENT,
   GADGET_ID_EXPLOSION_ELEMENT,
@@ -1220,6 +1222,8 @@ enum
   ED_DRAWING_ID_BD_BITER_EATS_ELEMENT,
   ED_DRAWING_ID_BD_BLADDER_CONVERTS_BY_ELEMENT,
   ED_DRAWING_ID_BD_NUT_CONTENT,
+  ED_DRAWING_ID_BD_EXPANDING_WALL_LOOKS_LIKE,
+  ED_DRAWING_ID_BD_SAND_LOOKS_LIKE,
   ED_DRAWING_ID_START_ELEMENT,
   ED_DRAWING_ID_ARTWORK_ELEMENT,
   ED_DRAWING_ID_EXPLOSION_ELEMENT,
@@ -4580,6 +4584,22 @@ static struct
     &level.bd_nut_content,             1, 1,
     "When breaking, changes to:", NULL, NULL, NULL,    "Element created when breaking nut"
   },
+  {
+    ED_DRAWING_ID_BD_EXPANDING_WALL_LOOKS_LIKE,
+    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_EXPANDING_WALL_LOOKS_LIKE, GADGET_ID_NONE,
+    &level.bd_expanding_wall_looks_like,       1, 1,
+    "Use graphic of element:", NULL, NULL, NULL,       "Expanding wall looks like this element"
+  },
+  {
+    ED_DRAWING_ID_BD_SAND_LOOKS_LIKE,
+    ED_AREA_1X1_SETTINGS_XPOS(0),      ED_AREA_1X1_SETTINGS_YPOS(0),
+    ED_AREA_1X1_SETTINGS_XOFF,         ED_AREA_1X1_SETTINGS_YOFF,
+    GADGET_ID_BD_SAND_LOOKS_LIKE, GADGET_ID_NONE,
+    &level.bd_sand_looks_like, 1, 1,
+    "Use graphic of element:", NULL, NULL, NULL,       "Sand looks like this element"
+  },
 
   // ---------- level start element -------------------------------------------
 
@@ -11299,7 +11319,7 @@ static void DrawPropertiesInfo(void)
 #define TEXT_REPLICATION_DELAY         "Create delay (BD frames)"
 #define TEXT_HAMMER_BREAK_DELAY                "Delay for breaking walls"
 #define TEXT_HAMMER_REAPPEAR_DELAY     "Delay for reappearing walls"
-#define TEXT_SKELETONS_NEEDED          "Amount needed to use a pot"
+#define TEXT_SKELETONS_NEEDED          "Skeletons needed to use pot"
 #define TEXT_SKELETONS_WORTH           "Counts as this many diamonds"
 
 static struct
@@ -11441,6 +11461,8 @@ static struct
                                1, 100                                                          },
   { EL_BD_PNEUMATIC_HAMMER,    &level.bd_hammer_walls_reappear_delay,  TEXT_HAMMER_REAPPEAR_DELAY,
                                1, 200                                                          },
+  { EL_BD_POT,                 &level.bd_num_skeletons_needed_for_pot, TEXT_SKELETONS_NEEDED,
+                               0, 50                                                           },
   { EL_BD_SKELETON,            &level.bd_num_skeletons_needed_for_pot, TEXT_SKELETONS_NEEDED,
                                0, 50                                                           },
   { EL_BD_SKELETON,            &level.bd_skeleton_worth_num_diamonds,  TEXT_SKELETONS_WORTH,
@@ -11498,6 +11520,7 @@ static boolean checkPropertiesConfig(int element)
       IS_PLAYER_ELEMENT(element) ||
       IS_BD_PLAYER_ELEMENT(element) ||
       IS_BD_EXPANDABLE_WALL(properties_element) ||
+      IS_BD_EXPANDABLE_STEELWALL(properties_element) ||
       IS_BD_CONVEYOR_BELT(properties_element) ||
       IS_BD_CONVEYOR_BELT_SWITCH(properties_element) ||
       IS_SOKOBAN_OBJECT_OR_FIELD(element) ||
@@ -11505,6 +11528,7 @@ static boolean checkPropertiesConfig(int element)
       CAN_GROW(element) ||
       COULD_MOVE_INTO_ACID(element) ||
       MAYBE_DONT_COLLIDE_WITH(element) ||
+      element == EL_BD_SAND ||
       element == EL_BD_ROCK ||
       element == EL_BD_MEGA_ROCK ||
       element == EL_BD_SWEET ||
@@ -11842,6 +11866,11 @@ static void DrawPropertiesConfig(void)
     MapDrawingArea(ED_DRAWING_ID_BD_SNAP_ELEMENT);
   }
 
+  if (properties_element == EL_BD_SAND)
+  {
+    MapDrawingArea(ED_DRAWING_ID_BD_SAND_LOOKS_LIKE);
+  }
+
   if (properties_element == EL_BD_ROCK && level.game_engine_type == GAME_ENGINE_TYPE_BD)
   {
     counterbutton_info[ED_COUNTER_ID_BD_PUSHING_PROB].y =
@@ -11885,9 +11914,13 @@ static void DrawPropertiesConfig(void)
     MapDrawingArea(ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_3);
   }
 
-  if (IS_BD_EXPANDABLE_WALL(properties_element))
+  if (IS_BD_EXPANDABLE_WALL(properties_element) ||
+      IS_BD_EXPANDABLE_STEELWALL(properties_element))
   {
     MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_CHANGE_EXPANDING_WALL);
+
+    if (IS_BD_EXPANDABLE_WALL(properties_element))
+      MapDrawingArea(ED_DRAWING_ID_BD_EXPANDING_WALL_LOOKS_LIKE);
   }
 
   if (properties_element == EL_BD_REPLICATOR)