+ {
+ ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_1,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(5),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_SLIME_EATS_ELEMENT_1, GADGET_ID_NONE,
+ &level.bd_slime_eats_element_1, 1, 1,
+ "Can eat:", NULL, NULL, NULL, "Element that can be eaten"
+ },
+ {
+ ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_1,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(5),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_SLIME_CONVERTS_TO_ELEMENT_1, GADGET_ID_BD_SLIME_EATS_ELEMENT_1,
+ &level.bd_slime_converts_to_element_1, 1, 1,
+ " and convert to:", NULL, NULL, NULL, "Eaten element is converted to"
+ },
+ {
+ ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_2,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(6),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_SLIME_EATS_ELEMENT_2, GADGET_ID_NONE,
+ &level.bd_slime_eats_element_2, 1, 1,
+ "Can eat:", NULL, NULL, NULL, "Element that can be eaten"
+ },
+ {
+ ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_2,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(6),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_SLIME_CONVERTS_TO_ELEMENT_2, GADGET_ID_BD_SLIME_EATS_ELEMENT_2,
+ &level.bd_slime_converts_to_element_2, 1, 1,
+ " and convert to:", NULL, NULL, NULL, "Eaten element is converted to"
+ },
+ {
+ ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_3,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(7),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_SLIME_EATS_ELEMENT_3, GADGET_ID_NONE,
+ &level.bd_slime_eats_element_3, 1, 1,
+ "Can eat:", NULL, NULL, NULL, "Element that can be eaten"
+ },
+ {
+ ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_3,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(7),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_SLIME_CONVERTS_TO_ELEMENT_3, GADGET_ID_BD_SLIME_EATS_ELEMENT_3,
+ &level.bd_slime_converts_to_element_3, 1, 1,
+ " and convert to:", NULL, NULL, NULL, "Eaten element is converted to"
+ },
+ {
+ ED_DRAWING_ID_BD_ACID_EATS_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_ACID_EATS_ELEMENT, GADGET_ID_NONE,
+ &level.bd_acid_eats_element, 1, 1,
+ "Can eat:", NULL, NULL, NULL, "Eats this element when spreading"
+ },
+ {
+ ED_DRAWING_ID_BD_ACID_TURNS_TO_ELEMENT,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(3),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_ACID_TURNS_TO_ELEMENT, GADGET_ID_NONE,
+ &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"
+ },
+ {
+ ED_DRAWING_ID_BD_NUT_CONTENT,
+ 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_NUT_CONTENT, GADGET_ID_NONE,
+ &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"
+ },
+ {
+ ED_DRAWING_ID_BD_ROCK_TURNS_TO_ON_FALLING,
+ 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_ROCK_TURNS_TO_ON_FALLING, GADGET_ID_NONE,
+ &level.bd_rock_turns_to_on_falling, 1, 1,
+ "Turns to when falling:", NULL, NULL, NULL, "Changes to this when falling starts"
+ },
+ {
+ ED_DRAWING_ID_BD_ROCK_TURNS_TO_ON_IMPACT,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(3),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_ROCK_TURNS_TO_ON_IMPACT, GADGET_ID_NONE,
+ &level.bd_rock_turns_to_on_impact, 1, 1,
+ "Turns to on impact:", NULL, NULL, NULL, "Changes to this when falling stops"
+ },
+ {
+ ED_DRAWING_ID_BD_DIAMOND_TURNS_TO_ON_FALLING,
+ 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_DIAMOND_TURNS_TO_ON_FALLING, GADGET_ID_NONE,
+ &level.bd_diamond_turns_to_on_falling, 1, 1,
+ "Turns to when falling:", NULL, NULL, NULL, "Changes to this when falling starts"
+ },
+ {
+ ED_DRAWING_ID_BD_DIAMOND_TURNS_TO_ON_IMPACT,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(3),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_BD_DIAMOND_TURNS_TO_ON_IMPACT, GADGET_ID_NONE,
+ &level.bd_diamond_turns_to_on_impact, 1, 1,
+ "Turns to on impact:", NULL, NULL, NULL, "Changes to this when falling stops"
+ },
+ {
+ ED_DRAWING_ID_BD_FIREFLY_EXPLODES_TO,
+ 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_FIREFLY_EXPLODES_TO, GADGET_ID_NONE,
+ &level.bd_firefly_explodes_to, 1, 1,
+ "Explodes to:", NULL, NULL, NULL, "Changes to this when exploding"
+ },
+ {
+ ED_DRAWING_ID_BD_FIREFLY_2_EXPLODES_TO,
+ 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_FIREFLY_2_EXPLODES_TO, GADGET_ID_NONE,
+ &level.bd_firefly_2_explodes_to, 1, 1,
+ "Explodes to:", NULL, NULL, NULL, "Changes to this when exploding"
+ },
+ {
+ ED_DRAWING_ID_BD_BUTTERFLY_EXPLODES_TO,
+ 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_BUTTERFLY_EXPLODES_TO, GADGET_ID_NONE,
+ &level.bd_butterfly_explodes_to, 1, 1,
+ "Explodes to:", NULL, NULL, NULL, "Changes to this when exploding"
+ },
+ {
+ ED_DRAWING_ID_BD_BUTTERFLY_2_EXPLODES_TO,
+ 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_BUTTERFLY_2_EXPLODES_TO, GADGET_ID_NONE,
+ &level.bd_butterfly_2_explodes_to, 1, 1,
+ "Explodes to:", NULL, NULL, NULL, "Changes to this when exploding"
+ },
+ {
+ ED_DRAWING_ID_BD_STONEFLY_EXPLODES_TO,
+ 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_STONEFLY_EXPLODES_TO, GADGET_ID_NONE,
+ &level.bd_stonefly_explodes_to, 1, 1,
+ "Explodes to:", NULL, NULL, NULL, "Changes to this when exploding"
+ },
+ {
+ ED_DRAWING_ID_BD_DRAGONFLY_EXPLODES_TO,
+ 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_DRAGONFLY_EXPLODES_TO, GADGET_ID_NONE,
+ &level.bd_dragonfly_explodes_to, 1, 1,
+ "Explodes to:", NULL, NULL, NULL, "Changes to this when exploding"
+ },
+ {
+ ED_DRAWING_ID_BD_DIAMOND_BIRTH_TURNS_TO,
+ 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_DIAMOND_BIRTH_TURNS_TO, GADGET_ID_NONE,
+ &level.bd_diamond_birth_turns_to, 1, 1,
+ "Explosion ends in:", NULL, NULL, NULL, "Changes to this after explosion"
+ },
+ {
+ ED_DRAWING_ID_BD_BOMB_EXPLOSION_TURNS_TO,
+ 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_BOMB_EXPLOSION_TURNS_TO, GADGET_ID_NONE,
+ &level.bd_bomb_explosion_turns_to, 1, 1,
+ "Explosion ends in:", NULL, NULL, NULL, "Changes to this after explosion"
+ },
+ {
+ ED_DRAWING_ID_BD_NITRO_EXPLOSION_TURNS_TO,
+ 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_NITRO_EXPLOSION_TURNS_TO, GADGET_ID_NONE,
+ &level.bd_nitro_explosion_turns_to, 1, 1,
+ "Explosion ends in:", NULL, NULL, NULL, "Changes to this after explosion"
+ },
+ {
+ ED_DRAWING_ID_BD_EXPLOSION_TURNS_TO,
+ 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_EXPLOSION_TURNS_TO, GADGET_ID_NONE,
+ &level.bd_explosion_turns_to, 1, 1,
+ "Explosion ends in:", NULL, NULL, NULL, "Changes to this after explosion"
+ },
+
+ // ---------- level start element -------------------------------------------
+
+ {
+ ED_DRAWING_ID_START_ELEMENT,
+ -1, ED_AREA_1X1_SETTINGS_YPOS(10),
+ 0, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_START_ELEMENT, GADGET_ID_USE_START_ELEMENT,
+ &level.start_element[0], 1, 1,
+ NULL, NULL, NULL, NULL, "Level start element"
+ },
+
+ // ---------- player artwork element ----------------------------------------
+
+ {
+ ED_DRAWING_ID_ARTWORK_ELEMENT,
+ -1, ED_AREA_1X1_SETTINGS_YPOS(11),
+ 0, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_ARTWORK_ELEMENT, GADGET_ID_USE_ARTWORK_ELEMENT,
+ &level.artwork_element[0], 1, 1,
+ NULL, NULL, NULL, NULL, "Element for player artwork"
+ },
+
+ // ---------- player explosion element --------------------------------------
+
+ {
+ ED_DRAWING_ID_EXPLOSION_ELEMENT,
+ -1, ED_AREA_1X1_SETTINGS_YPOS(12),
+ 0, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_EXPLOSION_ELEMENT, GADGET_ID_USE_EXPLOSION_ELEMENT,
+ &level.explosion_element[0], 1, 1,
+ NULL, NULL, NULL, NULL, "Element for player explosion"
+ },
+
+ // ---------- player initial inventory --------------------------------------
+
+ {
+ ED_DRAWING_ID_INVENTORY_CONTENT,
+ -1, ED_AREA_1X1_SETTINGS_YPOS(1),
+ 0, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_INVENTORY_CONTENT, GADGET_ID_USE_INITIAL_INVENTORY,
+ &level.initial_inventory_content[0][0], MAX_INITIAL_INVENTORY_SIZE, 1,
+ NULL, NULL, NULL, NULL, "Content for initial inventory"
+ },
+
+ // ---------- gray ball content -----------------------------------------
+
+ {
+ ED_DRAWING_ID_MM_BALL_CONTENT,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(2),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_MM_BALL_CONTENT, GADGET_ID_NONE,
+ &level.mm_ball_content[0], MAX_MM_BALL_CONTENTS, 1,
+ "Content:", NULL, NULL, NULL, "Content for gray ball"
+ },
+
+ // ---------- element settings: configure 1 (custom elements) ---------------
+
+ // ---------- custom graphic ------------------------------------------------
+
+ {
+ ED_DRAWING_ID_CUSTOM_GRAPHIC,
+ -1, ED_AREA_1X1_SETTINGS_YPOS(1),
+ 0, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_CUSTOM_GRAPHIC, GADGET_ID_CUSTOM_USE_GRAPHIC,
+ &custom_element.gfx_element_initial, 1, 1,
+ NULL, NULL, NULL, NULL, "Custom graphic element"
+ },
+
+ // ---------- element settings: configure 2 (custom elements) ---------------
+
+ // ---------- custom content (when exploding) -------------------------------
+
+ {
+ ED_DRAWING_ID_CUSTOM_CONTENT,
+ -1, ED_AREA_3X3_SETTINGS_YPOS(11),
+ 0, ED_AREA_3X3_SETTINGS_YOFF,
+ GADGET_ID_CUSTOM_CONTENT, GADGET_ID_NONE, // align three rows
+ &custom_element.content.e[0][0], 3, 3,
+ "Content:", NULL, NULL, NULL, NULL
+ },
+
+ // ---------- custom enter and leave element (when moving) ------------------
+
+ {
+ ED_DRAWING_ID_CUSTOM_MOVE_ENTER,
+ ED_AREA_1X1_SETTINGS_XPOS(1), ED_AREA_1X1_SETTINGS_YPOS(3),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_CUSTOM_MOVE_ENTER, GADGET_ID_NONE,
+ &custom_element.move_enter_element, 1, 1,
+ "Can dig:", " ", NULL, NULL, "Element that can be digged/collected"
+ },
+ {
+ ED_DRAWING_ID_CUSTOM_MOVE_LEAVE,
+ -1, ED_AREA_1X1_SETTINGS_YPOS(3),
+ 0, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_CUSTOM_MOVE_LEAVE, GADGET_ID_CUSTOM_MOVE_LEAVE_TYPE,
+ &custom_element.move_leave_element, 1, 1,
+ NULL, NULL, NULL, NULL, "Element that will be left behind"
+ },
+
+ // ---------- element settings: advanced (custom elements) ------------------
+
+ // ---------- custom change target ------------------------------------------
+
+ {
+ ED_DRAWING_ID_CUSTOM_CHANGE_TARGET,
+ -1, ED_AREA_1X1_SETTINGS_YPOS(1),
+ 0, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_CUSTOM_CHANGE_TARGET, GADGET_ID_CUSTOM_CAN_CHANGE,
+ &custom_element_change.target_element, 1, 1,
+ NULL, "after/when:", NULL, NULL, "New target element after change"
+ },
+
+ // ---------- custom change content (extended change target) ----------------
+
+ {
+ ED_DRAWING_ID_CUSTOM_CHANGE_CONTENT,
+ -1, ED_AREA_3X3_SETTINGS_YPOS(9),
+ 0, ED_AREA_3X3_SETTINGS_YOFF,
+ GADGET_ID_CUSTOM_CHANGE_CONTENT, GADGET_ID_NONE, // align three rows
+ &custom_element_change.target_content.e[0][0], 3, 3,
+ NULL, NULL, NULL, NULL, "New extended elements after change"
+ },
+
+ // ---------- custom change trigger (element causing change) ----------------
+
+ {
+ ED_DRAWING_ID_CUSTOM_CHANGE_TRIGGER,
+ -1, ED_AREA_1X1_SETTINGS_YPOS(5),
+ 0, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_CUSTOM_CHANGE_TRIGGER, GADGET_ID_CHANGE_OTHER_ACTION,
+ &custom_element_change.initial_trigger_element, 1, 1,
+ NULL, NULL, NULL, NULL, "Other element triggering change"
+ },
+
+ // ---------- custom change action (element used for action) ----------------
+
+ {
+ ED_DRAWING_ID_CUSTOM_CHANGE_ACTION,
+ -1, ED_AREA_1X1_SETTINGS_YPOS(13),
+ 0, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_CUSTOM_CHANGE_ACTION, GADGET_ID_ACTION_ARG,
+ &custom_element_change.action_element, 1, 1,
+ NULL, NULL, NULL, NULL, "Element used as action parameter"
+ },
+
+ // ---------- group element content -----------------------------------------
+
+ {
+ ED_DRAWING_ID_GROUP_CONTENT,
+ ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(2),
+ ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF,
+ GADGET_ID_GROUP_CONTENT, GADGET_ID_NONE,
+ &group_element_info.element[0], MAX_ELEMENTS_IN_GROUP, 1,
+ "Content:", NULL, NULL, NULL, NULL
+ },
+
+ // ---------- random background (for random painting) -----------------------
+
+ {
+ ED_DRAWING_ID_RANDOM_BACKGROUND,
+ -1, ED_AREA_1X1_LSETTINGS_YPOS(1),
+ 0, ED_AREA_1X1_LSETTINGS_YOFF,
+ GADGET_ID_RANDOM_BACKGROUND, GADGET_ID_RANDOM_RESTRICTED,
+ &random_placement_background_element, 1, 1,
+ NULL, NULL, NULL, NULL, "Random placement background"
+ },
+};
+
+
+// ----------------------------------------------------------------------------
+// some internally used variables
+// ----------------------------------------------------------------------------
+
+// maximal size of level editor drawing area
+static int MAX_ED_FIELDX, MAX_ED_FIELDY;
+
+// actual size of level editor drawing area
+static int ed_fieldx, ed_fieldy;
+
+// actual position of level editor drawing area in level playfield
+static int level_xpos = -1, level_ypos = -1;
+
+// actual tile size used to display playfield drawing area
+static int ed_tilesize = DEFAULT_EDITOR_TILESIZE;
+static int ed_tilesize_default = DEFAULT_EDITOR_TILESIZE;
+
+#define IN_ED_FIELD(x, y) IN_FIELD(x, y, ed_fieldx, ed_fieldy)
+
+// drawing elements on the three mouse buttons
+static int new_element1 = EL_WALL;
+static int new_element2 = EL_EMPTY;
+static int new_element3 = EL_SAND;
+
+#define IS_VALID_BUTTON(button) (button >= 1 && button <= 3)
+#define BUTTON_ELEMENT(button) ((button) == 1 ? new_element1 : \
+ (button) == 2 ? new_element2 : \
+ (button) == 3 ? new_element3 : EL_EMPTY)
+
+#define BUTTON_TILE_SIZE(x) ((x) >= TILESIZE ? TILESIZE : MINI_TILESIZE)
+
+static int use_permanent_palette = TRUE;
+
+#define PX (use_permanent_palette ? DX : SX)
+#define PY (use_permanent_palette ? DY : SY)
+#define PXSIZE (use_permanent_palette ? DXSIZE : SXSIZE)
+#define PYSIZE (use_permanent_palette ? DYSIZE : SYSIZE)
+
+// forward declaration for internal use
+static void CopyBrushToCursor(int, int);
+static void DeleteBrushFromCursor(void);
+static void ModifyEditorCounterValue(int, int);
+static void ModifyEditorCounterLimits(int, int, int);