#define ED_AREA_ELEM_CONTENT3_YPOS (ED_SETTINGS_YPOS(2) + \
ED_GADGET_DISTANCE)
+#define ED_AREA_ELEM_CONTENT4_XPOS (17 * MINI_TILEX)
+#define ED_AREA_ELEM_CONTENT4_YPOS (ED_SETTINGS_YPOS(8) + \
+ ED_GADGET_DISTANCE - MINI_TILEY)
+
/* values for random placement background drawing area */
#define ED_AREA_RANDOM_BACKGROUND_XPOS (29 * MINI_TILEX)
#define ED_AREA_RANDOM_BACKGROUND_YPOS (31 * MINI_TILEY)
#define GADGET_ID_ELEMENT_CONTENT_7 (GADGET_ID_DRAWING_AREA_FIRST + 8)
#define GADGET_ID_AMOEBA_CONTENT (GADGET_ID_DRAWING_AREA_FIRST + 9)
#define GADGET_ID_CUSTOM_GRAPHIC (GADGET_ID_DRAWING_AREA_FIRST + 10)
-#define GADGET_ID_CUSTOM_CHANGED (GADGET_ID_DRAWING_AREA_FIRST + 11)
-#define GADGET_ID_RANDOM_BACKGROUND (GADGET_ID_DRAWING_AREA_FIRST + 12)
+#define GADGET_ID_CUSTOM_CONTENT (GADGET_ID_DRAWING_AREA_FIRST + 11)
+#define GADGET_ID_CUSTOM_CHANGED (GADGET_ID_DRAWING_AREA_FIRST + 12)
+#define GADGET_ID_RANDOM_BACKGROUND (GADGET_ID_DRAWING_AREA_FIRST + 13)
/* text input identifiers */
-#define GADGET_ID_TEXT_INPUT_FIRST (GADGET_ID_DRAWING_AREA_FIRST + 13)
+#define GADGET_ID_TEXT_INPUT_FIRST (GADGET_ID_DRAWING_AREA_FIRST + 14)
#define GADGET_ID_LEVEL_NAME (GADGET_ID_TEXT_INPUT_FIRST + 0)
#define GADGET_ID_LEVEL_AUTHOR (GADGET_ID_TEXT_INPUT_FIRST + 1)
#define GADGET_ID_SELECTBOX_FIRST (GADGET_ID_TEXT_INPUT_FIRST + 2)
#define GADGET_ID_CUSTOM_WALK_TO_ACTION (GADGET_ID_SELECTBOX_FIRST + 0)
-#define GADGET_ID_CUSTOM_WALKABLE_LAYER (GADGET_ID_SELECTBOX_FIRST + 1)
-#define GADGET_ID_CHANGE_TIME_UNITS (GADGET_ID_SELECTBOX_FIRST + 2)
-#define GADGET_ID_CHANGE_CAUSE (GADGET_ID_SELECTBOX_FIRST + 3)
+#define GADGET_ID_CUSTOM_MOVE_DIRECTION (GADGET_ID_SELECTBOX_FIRST + 1)
+#define GADGET_ID_CUSTOM_WALKABLE_LAYER (GADGET_ID_SELECTBOX_FIRST + 2)
+#define GADGET_ID_CHANGE_TIME_UNITS (GADGET_ID_SELECTBOX_FIRST + 3)
+#define GADGET_ID_CHANGE_CAUSE (GADGET_ID_SELECTBOX_FIRST + 4)
/* textbutton identifiers */
-#define GADGET_ID_TEXTBUTTON_FIRST (GADGET_ID_SELECTBOX_FIRST + 4)
+#define GADGET_ID_TEXTBUTTON_FIRST (GADGET_ID_SELECTBOX_FIRST + 5)
#define GADGET_ID_PROPERTIES_INFO (GADGET_ID_TEXTBUTTON_FIRST + 0)
#define GADGET_ID_PROPERTIES_CONFIG (GADGET_ID_TEXTBUTTON_FIRST + 1)
#define GADGET_ID_EM_SLIPPERY_GEMS (GADGET_ID_CHECKBUTTON_FIRST + 6)
#define GADGET_ID_CUSTOM_INDESTRUCTIBLE (GADGET_ID_CHECKBUTTON_FIRST + 7)
#define GADGET_ID_CUSTOM_WALK_TO_OBJECT (GADGET_ID_CHECKBUTTON_FIRST + 8)
-#define GADGET_ID_CUSTOM_CAN_FALL (GADGET_ID_CHECKBUTTON_FIRST + 9)
-#define GADGET_ID_CUSTOM_CAN_SMASH (GADGET_ID_CHECKBUTTON_FIRST + 10)
-#define GADGET_ID_CUSTOM_CAN_MOVE (GADGET_ID_CHECKBUTTON_FIRST + 11)
-#define GADGET_ID_CUSTOM_SLIPPERY (GADGET_ID_CHECKBUTTON_FIRST + 12)
-#define GADGET_ID_CUSTOM_WALKABLE (GADGET_ID_CHECKBUTTON_FIRST + 13)
-#define GADGET_ID_CUSTOM_USE_GRAPHIC (GADGET_ID_CHECKBUTTON_FIRST + 14)
-#define GADGET_ID_CUSTOM_CHANGEABLE (GADGET_ID_CHECKBUTTON_FIRST + 15)
-#define GADGET_ID_CHANGE_DELAY_FIXED (GADGET_ID_CHECKBUTTON_FIRST + 16)
-#define GADGET_ID_CHANGE_DELAY_RANDOM (GADGET_ID_CHECKBUTTON_FIRST + 17)
+#define GADGET_ID_CUSTOM_CAN_MOVE (GADGET_ID_CHECKBUTTON_FIRST + 9)
+#define GADGET_ID_CUSTOM_CAN_FALL (GADGET_ID_CHECKBUTTON_FIRST + 10)
+#define GADGET_ID_CUSTOM_CAN_SMASH (GADGET_ID_CHECKBUTTON_FIRST + 11)
+#define GADGET_ID_CUSTOM_CAN_EXPLODE (GADGET_ID_CHECKBUTTON_FIRST + 12)
+#define GADGET_ID_CUSTOM_SLIPPERY (GADGET_ID_CHECKBUTTON_FIRST + 13)
+#define GADGET_ID_CUSTOM_WALKABLE (GADGET_ID_CHECKBUTTON_FIRST + 14)
+#define GADGET_ID_CUSTOM_USE_GRAPHIC (GADGET_ID_CHECKBUTTON_FIRST + 15)
+#define GADGET_ID_CUSTOM_CHANGEABLE (GADGET_ID_CHECKBUTTON_FIRST + 16)
+#define GADGET_ID_CHANGE_DELAY_FIXED (GADGET_ID_CHECKBUTTON_FIRST + 17)
+#define GADGET_ID_CHANGE_DELAY_RANDOM (GADGET_ID_CHECKBUTTON_FIRST + 18)
/* gadgets for buttons in element list */
-#define GADGET_ID_ELEMENTLIST_FIRST (GADGET_ID_CHECKBUTTON_FIRST + 18)
+#define GADGET_ID_ELEMENTLIST_FIRST (GADGET_ID_CHECKBUTTON_FIRST + 19)
#define GADGET_ID_ELEMENTLIST_LAST (GADGET_ID_ELEMENTLIST_FIRST + \
ED_NUM_ELEMENTLIST_BUTTONS - 1)
#define ED_TEXTINPUT_ID_LEVEL_LAST ED_TEXTINPUT_ID_LEVEL_AUTHOR
/* values for selectbox gadgets */
-#define ED_SELECTBOX_ID_CUSTOM_WALK_TO_OBJECT 0
-#define ED_SELECTBOX_ID_CUSTOM_WALKABLE_LAYER 1
-#define ED_SELECTBOX_ID_CHANGE_TIME_UNITS 2
-#define ED_SELECTBOX_ID_CHANGE_CAUSE 3
+#define ED_SELECTBOX_ID_CUSTOM_WALK_TO_ACTION 0
+#define ED_SELECTBOX_ID_CUSTOM_MOVE_DIRECTION 1
+#define ED_SELECTBOX_ID_CUSTOM_WALKABLE_LAYER 2
+#define ED_SELECTBOX_ID_CHANGE_TIME_UNITS 3
+#define ED_SELECTBOX_ID_CHANGE_CAUSE 4
-#define ED_NUM_SELECTBOX 4
+#define ED_NUM_SELECTBOX 5
-#define ED_SELECTBOX_ID_CUSTOM_FIRST ED_SELECTBOX_ID_CUSTOM_WALK_TO_OBJECT
+#define ED_SELECTBOX_ID_CUSTOM_FIRST ED_SELECTBOX_ID_CUSTOM_WALK_TO_ACTION
#define ED_SELECTBOX_ID_CUSTOM_LAST ED_SELECTBOX_ID_CUSTOM_WALKABLE_LAYER
#define ED_SELECTBOX_ID_CHANGE_FIRST ED_SELECTBOX_ID_CHANGE_TIME_UNITS
#define ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS 4
#define ED_CHECKBUTTON_ID_CUSTOM_INDESTRUCTIBLE 5
#define ED_CHECKBUTTON_ID_CUSTOM_WALK_TO_OBJECT 6
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_FALL 7
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_SMASH 8
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_MOVE 9
-#define ED_CHECKBUTTON_ID_CUSTOM_SLIPPERY 10
-#define ED_CHECKBUTTON_ID_CUSTOM_WALKABLE 11
-#define ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC 12
-#define ED_CHECKBUTTON_ID_CUSTOM_CHANGEABLE 13
-#define ED_CHECKBUTTON_ID_CHANGE_DELAY_FIXED 14
-#define ED_CHECKBUTTON_ID_CHANGE_DELAY_RANDOM 15
-
-#define ED_NUM_CHECKBUTTONS 16
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_MOVE 7
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_FALL 8
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_SMASH 9
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_EXPLODE 10
+#define ED_CHECKBUTTON_ID_CUSTOM_SLIPPERY 11
+#define ED_CHECKBUTTON_ID_CUSTOM_WALKABLE 12
+#define ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC 13
+#define ED_CHECKBUTTON_ID_CUSTOM_CHANGEABLE 14
+#define ED_CHECKBUTTON_ID_CHANGE_DELAY_FIXED 15
+#define ED_CHECKBUTTON_ID_CHANGE_DELAY_RANDOM 16
+
+#define ED_NUM_CHECKBUTTONS 17
#define ED_CHECKBUTTON_ID_LEVEL_FIRST ED_CHECKBUTTON_ID_DOUBLE_SPEED
#define ED_CHECKBUTTON_ID_LEVEL_LAST ED_CHECKBUTTON_ID_RANDOM_RESTRICTED
MIN_ELEMENT_CONTENTS, MAX_ELEMENT_CONTENTS,
GADGET_ID_ELEMENT_CONTENT_DOWN, GADGET_ID_ELEMENT_CONTENT_UP,
GADGET_ID_ELEMENT_CONTENT_TEXT,
- &level.num_yam_contents,
+ &level.num_yamyam_contents,
"element content", NULL
},
{
};
static int index_walk_to_action = 0;
+static struct ValueTextInfo options_move_direction[] =
+{
+ { EP_DIGGABLE, "left" },
+ { EP_COLLECTIBLE, "right" },
+ { EP_PUSHABLE, "up" },
+ { EP_PUSHABLE, "down" },
+ { EP_PUSHABLE, "horizontal" },
+ { EP_PUSHABLE, "vertical" },
+ { EP_PUSHABLE, "all directions" },
+ { EP_PUSHABLE, "towards player" },
+ { EP_PUSHABLE, "away from player" },
+ { EP_PUSHABLE, "along left side" },
+ { EP_PUSHABLE, "along right side" },
+ { -1, NULL }
+};
+static int index_move_direction = 0;
+
static struct ValueTextInfo options_walkable_layer[] =
{
{ EP_WALKABLE_OVER, "over" },
0,
options_walk_to_action, &index_walk_to_action,
&custom_element.walk_to_action,
- NULL, "diggable, collectible or pushable"
+ NULL, "diggable/collectible/pushable"
+ },
+ {
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(5),
+ GADGET_ID_CUSTOM_MOVE_DIRECTION,
+ 0,
+ options_move_direction, &index_move_direction,
+ &custom_element.move_direction,
+ "can move", "element move direction"
},
{
- ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(9),
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(10),
GADGET_ID_CUSTOM_WALKABLE_LAYER,
0,
options_walkable_layer, &index_walkable_layer,
0,
options_time_units, &index_time_units,
&custom_element.change.delay_frames,
- "delay units given in", "time units for change"
+ "delay time given in", "delay time units for change"
},
{
ED_SETTINGS_XPOS(0), ED_COUNTER_YPOS(8),
},
{
ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(5),
+ GADGET_ID_CUSTOM_CAN_MOVE,
+ &custom_element_properties[EP_CAN_MOVE],
+ NULL, "element can move in some direction"
+ },
+ {
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(6),
GADGET_ID_CUSTOM_CAN_FALL,
&custom_element_properties[EP_CAN_FALL],
"can fall", "element can fall down"
},
{
- ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(6),
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(7),
GADGET_ID_CUSTOM_CAN_SMASH,
&custom_element_properties[EP_CAN_SMASH],
"can smash", "element can smash other elements"
},
{
- ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(7),
- GADGET_ID_CUSTOM_CAN_MOVE,
- &custom_element_properties[EP_CAN_MOVE],
- "can move", "element can move in some direction"
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(8),
+ GADGET_ID_CUSTOM_CAN_EXPLODE,
+ &custom_element_properties[EP_CAN_EXPLODE],
+ "can explode to:", "element can explode to other elements"
},
{
- ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(8),
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(9),
GADGET_ID_CUSTOM_SLIPPERY,
&custom_element_properties[EP_SLIPPERY],
"slippery", "other elements can fall down from it"
},
{
- ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(9),
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(10),
GADGET_ID_CUSTOM_WALKABLE,
&custom_element_properties[EP_WALKABLE],
NULL, "player can walk on the same field"
ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(2),
GADGET_ID_CUSTOM_USE_GRAPHIC,
&custom_element.use_gfx_element,
- "use graphic of element:", "use optional custom graphic element"
+ "use graphic of element:", "use graphic for custom element"
},
{
ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(1),
static boolean draw_with_brush = FALSE;
static int properties_element = 0;
-static short ElementContent[MAX_ELEMENT_CONTENTS][3][3];
static short FieldBackup[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
static short UndoBuffer[NUM_UNDO_STEPS][MAX_LEV_FIELDX][MAX_LEV_FIELDY];
static int undo_buffer_position = 0;
level_editor_gadget[id] = gi;
+ /* ... one areas for custom element explosion content ... */
+ id = GADGET_ID_CUSTOM_CONTENT;
+ gi = CreateGadget(GDI_CUSTOM_ID, id,
+ GDI_CUSTOM_TYPE_ID, i,
+ GDI_X, SX + ED_AREA_ELEM_CONTENT4_XPOS,
+ GDI_Y, SX + ED_AREA_ELEM_CONTENT4_YPOS,
+ GDI_WIDTH, 3 * MINI_TILEX,
+ GDI_HEIGHT, 3 * MINI_TILEY,
+ GDI_TYPE, GD_TYPE_DRAWING_AREA,
+ GDI_ITEM_SIZE, MINI_TILEX, MINI_TILEY,
+ GDI_EVENT_MASK, event_mask,
+ GDI_CALLBACK_INFO, HandleDrawingAreaInfo,
+ GDI_CALLBACK_ACTION, HandleDrawingAreas,
+ GDI_END);
+
+ if (gi == NULL)
+ Error(ERR_EXIT, "cannot create gadget");
+
+ level_editor_gadget[id] = gi;
+
/* ... one for each custom element change target element ... */
id = GADGET_ID_CUSTOM_CHANGED;
gi = CreateGadget(GDI_CUSTOM_ID, id,
int area_sx = SX + ED_AREA_RANDOM_BACKGROUND_XPOS;
int area_sy = SY + ED_AREA_RANDOM_BACKGROUND_YPOS;
- ElementContent[0][0][0] = random_placement_background_element;
-
DrawElementBorder(area_sx, area_sy, MINI_TILEX, MINI_TILEY, TRUE);
- DrawMiniElement(area_x, area_y, ElementContent[0][0][0]);
+ DrawMiniElement(area_x, area_y, random_placement_background_element);
MapDrawingArea(GADGET_ID_RANDOM_BACKGROUND);
}
int area_sx = SX + ED_AREA_ELEM_CONTENT_XPOS;
int area_sy = SY + ED_AREA_ELEM_CONTENT_YPOS;
- ElementContent[0][0][0] = level.amoeba_content;
-
DrawElementBorder(area_sx, area_sy, MINI_TILEX, MINI_TILEY, TRUE);
- DrawMiniElement(area_x, area_y, ElementContent[0][0][0]);
+ DrawMiniElement(area_x, area_y, level.amoeba_content);
DrawText(area_sx + TILEX, area_sy + 1, "Content of amoeba", FONT_TEXT_1);
return;
}
- ElementContent[0][0][0] = custom_element.gfx_element;
-
DrawElementBorder(area_sx, area_sy, MINI_TILEX, MINI_TILEY, TRUE);
-#if 1
- DrawMiniGraphicExt(drawto,
- gi->x,
- gi->y,
- el2edimg(ElementContent[0][0][0]));
-#else
- DrawMiniElement(area_x, area_y, ElementContent[0][0][0]);
-#endif
-
-#if 0
- DrawText(area_sx + TILEX, area_sy + 1, "Element after change", FONT_TEXT_1);
-#endif
+ DrawMiniGraphicExt(drawto, gi->x, gi->y,
+ el2edimg(custom_element.gfx_element));
MapDrawingArea(GADGET_ID_CUSTOM_GRAPHIC);
}
+static void DrawCustomContentArea()
+{
+ struct GadgetInfo *gi = level_editor_gadget[GADGET_ID_CUSTOM_CONTENT];
+ int area_sx = SX + ED_AREA_ELEM_CONTENT4_XPOS;
+ int area_sy = SY + ED_AREA_ELEM_CONTENT4_YPOS;
+ int x, y;
+
+ if (!IS_CUSTOM_ELEMENT(properties_element))
+ {
+ /* this should never happen */
+ Error(ERR_WARN, "element %d is no custom element", properties_element);
+
+ return;
+ }
+
+ DrawElementBorder(area_sx, area_sy, 3 * MINI_TILEX, 3 * MINI_TILEY, TRUE);
+
+ for (y=0; y<3; y++)
+ for (x=0; x<3; x++)
+ DrawMiniGraphicExt(drawto, gi->x + x * MINI_TILEX,gi->y + y * MINI_TILEY,
+ el2edimg(custom_element.content[x][y]));
+
+ MapDrawingArea(GADGET_ID_CUSTOM_CONTENT);
+}
+
static void DrawCustomChangedArea()
{
struct GadgetInfo *gi = level_editor_gadget[GADGET_ID_CUSTOM_CHANGED];
return;
}
- ElementContent[0][0][0] = custom_element.change.successor;
-
DrawElementBorder(area_sx, area_sy, MINI_TILEX, MINI_TILEY, TRUE);
-#if 1
- DrawMiniGraphicExt(drawto,
- gi->x,
- gi->y,
- el2edimg(ElementContent[0][0][0]));
-#else
- DrawMiniElement(area_x, area_y, ElementContent[0][0][0]);
-#endif
-
-#if 0
- DrawText(area_sx + TILEX, area_sy + 1, "Element after change", FONT_TEXT_1);
-#endif
+ DrawMiniGraphicExt(drawto, gi->x, gi->y,
+ el2edimg(custom_element.change.successor));
MapDrawingArea(GADGET_ID_CUSTOM_CHANGED);
}
int yoffset_right = ED_BORDER_SIZE;
int i, x, y;
- for (i=0; i<MAX_ELEMENT_CONTENTS; i++)
- for (y=0; y<3; y++)
- for (x=0; x<3; x++)
- ElementContent[i][x][y] = level.yam_content[i][x][y];
-
for (i=0; i<MAX_ELEMENT_CONTENTS; i++)
UnmapDrawingArea(GADGET_ID_ELEMENT_CONTENT_0 + i);
/* delete content areas in case of reducing number of them */
DrawBackground(SX, area_sy - MINI_TILEX, SXSIZE, 12 * MINI_TILEY);
- for (i=0; i<level.num_yam_contents; i++)
+ for (i=0; i<level.num_yamyam_contents; i++)
DrawElementBorder(area_sx + 5 * (i % 4) * MINI_TILEX,
area_sy + 6 * (i / 4) * MINI_TILEY,
3 * MINI_TILEX, 3 * MINI_TILEY, TRUE);
DrawText(area_sx + (5 * 4 - 1) * MINI_TILEX, area_sy + 2 * MINI_TILEY + 1,
"smashed", FONT_TEXT_1);
- for (i=0; i<level.num_yam_contents; i++)
+ for (i=0; i<level.num_yamyam_contents; i++)
{
for (y=0; y<3; y++)
for (x=0; x<3; x++)
DrawMiniElement(area_x + 5 * (i % 4) + x, area_y + 6 * (i / 4) + y,
- ElementContent[i][x][y]);
+ level.yamyam_content[i][x][y]);
DrawTextF(area_sx - SX + 5 * (i % 4) * MINI_TILEX + MINI_TILEX + 1,
area_sy - SY + 6 * (i / 4) * MINI_TILEY + 4 * MINI_TILEY - 4,
FONT_TEXT_1, "%d", i + 1);
}
- for (i=0; i<level.num_yam_contents; i++)
+ for (i=0; i<level.num_yamyam_contents; i++)
MapDrawingArea(GADGET_ID_ELEMENT_CONTENT_0 + i);
}
MapCheckbuttonGadget(i);
if (IS_CUSTOM_ELEMENT(properties_element))
+ {
DrawCustomGraphicElementArea();
+ DrawCustomContentArea();
+ }
else if (IS_AMOEBOID(properties_element))
DrawAmoebaContentArea();
else
FrameCounter = 0; /* restart animation frame counter */
}
+ else if (id == GADGET_ID_CUSTOM_CONTENT)
+ {
+ int i = properties_element - EL_CUSTOM_START;
+
+ custom_element.content[sx][sy] = new_element;
+ level.custom_element[i] = custom_element;
+ }
else if (id == GADGET_ID_CUSTOM_CHANGED)
{
int i = properties_element - EL_CUSTOM_START;
random_placement_background_element = new_element;
else if (id >= GADGET_ID_ELEMENT_CONTENT_0 &&
id <= GADGET_ID_ELEMENT_CONTENT_7)
- level.yam_content[id - GADGET_ID_ELEMENT_CONTENT_0][sx][sy] =
+ level.yamyam_content[id - GADGET_ID_ELEMENT_CONTENT_0][sx][sy] =
new_element;
}
break;
"Amoeba content");
else if (id == GADGET_ID_CUSTOM_GRAPHIC)
DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2,
- "Optional custom graphic element");
+ "Custom graphic element");
+ else if (id == GADGET_ID_CUSTOM_CONTENT)
+ DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2,
+ "Custom element content position: %d, %d", sx, sy);
else if (id == GADGET_ID_CUSTOM_CHANGED)
DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2,
"New element after change");