ED_GADGET_DISTANCE)
/* custom element content */
#define ED_AREA_ELEM_CONTENT4_XPOS (29 * MINI_TILEX)
-#define ED_AREA_ELEM_CONTENT4_YPOS (ED_SETTINGS_YPOS(12) + \
+#define ED_AREA_ELEM_CONTENT4_YPOS (ED_SETTINGS_YPOS(13) + \
ED_GADGET_DISTANCE - MINI_TILEY)
+/* movement enter/leave element */
+#define ED_AREA_ELEM_CONTENT4a_XPOS (29 * MINI_TILEX)
+#define ED_AREA_ELEM_CONTENT4a_YPOS (ED_SETTINGS_YPOS(7) + \
+ ED_GADGET_DISTANCE)
+#define ED_AREA_ELEM_CONTENT4b_XPOS (29 * MINI_TILEX)
+#define ED_AREA_ELEM_CONTENT4b_YPOS (ED_SETTINGS_YPOS(7) + \
+ ED_GADGET_DISTANCE)
/* custom change trigger element */
#define ED_AREA_ELEM_CONTENT5_YPOS (ED_SETTINGS_YPOS(6) + \
ED_GADGET_DISTANCE)
#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_CONTENT (GADGET_ID_DRAWING_AREA_FIRST + 11)
-#define GADGET_ID_CUSTOM_CHANGE_TARGET (GADGET_ID_DRAWING_AREA_FIRST + 12)
-#define GADGET_ID_CUSTOM_CHANGE_CONTENT (GADGET_ID_DRAWING_AREA_FIRST + 13)
-#define GADGET_ID_CUSTOM_CHANGE_TRIGGER (GADGET_ID_DRAWING_AREA_FIRST + 14)
-#define GADGET_ID_GROUP_CONTENT (GADGET_ID_DRAWING_AREA_FIRST + 15)
-#define GADGET_ID_RANDOM_BACKGROUND (GADGET_ID_DRAWING_AREA_FIRST + 16)
+#define GADGET_ID_CUSTOM_MOVE_ENTER (GADGET_ID_DRAWING_AREA_FIRST + 12)
+#define GADGET_ID_CUSTOM_MOVE_LEAVE (GADGET_ID_DRAWING_AREA_FIRST + 13)
+#define GADGET_ID_CUSTOM_CHANGE_TARGET (GADGET_ID_DRAWING_AREA_FIRST + 14)
+#define GADGET_ID_CUSTOM_CHANGE_CONTENT (GADGET_ID_DRAWING_AREA_FIRST + 15)
+#define GADGET_ID_CUSTOM_CHANGE_TRIGGER (GADGET_ID_DRAWING_AREA_FIRST + 16)
+#define GADGET_ID_GROUP_CONTENT (GADGET_ID_DRAWING_AREA_FIRST + 17)
+#define GADGET_ID_RANDOM_BACKGROUND (GADGET_ID_DRAWING_AREA_FIRST + 18)
/* text input identifiers */
-#define GADGET_ID_TEXT_INPUT_FIRST (GADGET_ID_DRAWING_AREA_FIRST + 17)
+#define GADGET_ID_TEXT_INPUT_FIRST (GADGET_ID_DRAWING_AREA_FIRST + 19)
#define GADGET_ID_LEVEL_NAME (GADGET_ID_TEXT_INPUT_FIRST + 0)
#define GADGET_ID_LEVEL_AUTHOR (GADGET_ID_TEXT_INPUT_FIRST + 1)
#define ED_DRAWING_ID_AMOEBA_CONTENT 9
#define ED_DRAWING_ID_CUSTOM_GRAPHIC 10
#define ED_DRAWING_ID_CUSTOM_CONTENT 11
-#define ED_DRAWING_ID_CUSTOM_CHANGE_TARGET 12
-#define ED_DRAWING_ID_CUSTOM_CHANGE_CONTENT 13
-#define ED_DRAWING_ID_CUSTOM_CHANGE_TRIGGER 14
-#define ED_DRAWING_ID_GROUP_CONTENT 15
-#define ED_DRAWING_ID_RANDOM_BACKGROUND 16
+#define ED_DRAWING_ID_CUSTOM_MOVE_ENTER 12
+#define ED_DRAWING_ID_CUSTOM_MOVE_LEAVE 13
+#define ED_DRAWING_ID_CUSTOM_CHANGE_TARGET 14
+#define ED_DRAWING_ID_CUSTOM_CHANGE_CONTENT 15
+#define ED_DRAWING_ID_CUSTOM_CHANGE_TRIGGER 16
+#define ED_DRAWING_ID_GROUP_CONTENT 17
+#define ED_DRAWING_ID_RANDOM_BACKGROUND 18
-#define ED_NUM_DRAWING_AREAS 17
+#define ED_NUM_DRAWING_AREAS 19
/*
NULL, "+random", NULL
},
{
- ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(7),
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(9),
0, 999,
GADGET_ID_MOVE_DELAY_FIX_DOWN, GADGET_ID_MOVE_DELAY_FIX_UP,
GADGET_ID_MOVE_DELAY_FIX_TEXT, GADGET_ID_NONE,
NULL, "move delay", NULL
},
{
- -1, ED_SETTINGS_YPOS(7),
+ -1, ED_SETTINGS_YPOS(9),
0, 999,
GADGET_ID_MOVE_DELAY_RND_DOWN, GADGET_ID_MOVE_DELAY_RND_UP,
GADGET_ID_MOVE_DELAY_RND_TEXT, GADGET_ID_MOVE_DELAY_FIX_UP,
"move/fall speed", NULL, "speed of element movement"
},
{
- -1, ED_SETTINGS_YPOS(9),
+ -1, ED_SETTINGS_YPOS(10),
GADGET_ID_CUSTOM_SMASH_TARGETS, GADGET_ID_CUSTOM_CAN_SMASH,
-1,
options_smash_targets,
"can smash", NULL, "elements that can be smashed"
},
{
- ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(10),
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(11),
GADGET_ID_CUSTOM_SLIPPERY_TYPE, GADGET_ID_NONE,
-1,
options_slippery_type,
"slippery", NULL, "where other elements fall down"
},
{
- ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(11),
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(12),
GADGET_ID_CUSTOM_DEADLINESS, GADGET_ID_NONE,
-1,
options_deadliness,
"deadly when", NULL, "deadliness of element"
},
{
- ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(12),
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(13),
GADGET_ID_CUSTOM_CONSISTENCY, GADGET_ID_NONE,
-1,
options_consistency,
NULL, NULL, "element can move in some direction"
},
{
- ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(9),
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(10),
GADGET_ID_CUSTOM_CAN_FALL, GADGET_ID_NONE,
&custom_element_properties[EP_CAN_FALL],
NULL, "can fall", "element can fall down"
},
{
- -1, ED_SETTINGS_YPOS(9),
+ -1, ED_SETTINGS_YPOS(10),
GADGET_ID_CUSTOM_CAN_SMASH, GADGET_ID_CUSTOM_CAN_FALL,
&custom_element_properties[EP_CAN_SMASH],
" ", NULL, "element can smash other elements"
},
{
- ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(10),
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(11),
GADGET_ID_CUSTOM_SLIPPERY, GADGET_ID_NONE,
&custom_element_properties[EP_SLIPPERY],
NULL, NULL, "other elements can fall down from it"
},
{
- ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(11),
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(12),
GADGET_ID_CUSTOM_DEADLY, GADGET_ID_NONE,
&custom_element_properties[EP_DEADLY],
NULL, NULL, "element can kill the player"
},
{
- ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(12),
+ ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(13),
GADGET_ID_CUSTOM_EXPLODE_RESULT, GADGET_ID_NONE,
&custom_element_properties[EP_EXPLODE_RESULT],
NULL, NULL, "set consistency/destructibility"
},
{
- ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(13),
+ ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(14),
GADGET_ID_CUSTOM_EXPLODE_FIRE, GADGET_ID_NONE,
&custom_element.can_explode_by_fire,
NULL, "by fire", "element can explode by fire/explosion"
},
{
- -1, ED_SETTINGS_YPOS(13),
+ -1, ED_SETTINGS_YPOS(14),
GADGET_ID_CUSTOM_EXPLODE_SMASH, GADGET_ID_CUSTOM_EXPLODE_FIRE,
&custom_element.can_explode_smashed,
" ", "smashed", "element can explode when smashed"
},
{
- -1, ED_SETTINGS_YPOS(13),
+ -1, ED_SETTINGS_YPOS(14),
GADGET_ID_CUSTOM_EXPLODE_IMPACT, GADGET_ID_CUSTOM_EXPLODE_SMASH,
&custom_element.can_explode_impact,
" ", "impact", "element can explode on impact"
"content:", NULL, NULL
},
+ /* ---------- custom enter and leave element (when moving) --------------- */
+
+ {
+ ED_SETTINGS_XPOS(1), ED_AREA_ELEM_CONTENT4a_YPOS,
+ 1, 1,
+ GADGET_ID_CUSTOM_MOVE_ENTER, GADGET_ID_NONE,
+ "can dig:", " ", NULL
+ },
+
+ {
+ -1, ED_AREA_ELEM_CONTENT4b_YPOS,
+ 1, 1,
+ GADGET_ID_CUSTOM_MOVE_LEAVE, GADGET_ID_CUSTOM_MOVE_ENTER,
+ "can leave behind:", NULL, NULL
+ },
+
/* ---------- custom change target --------------------------------------- */
{
EL_BD_FIREFLY,
EL_MOLE_LEFT,
-#if 0
- EL_MAZE_RUNNER,
-#else
EL_EMPTY,
-#endif
EL_MOLE_RIGHT,
EL_PACMAN,
DrawMiniGraphicExt(drawto,
gi->x + x * MINI_TILEX, gi->y + y * MINI_TILEY,
el2edimg(custom_element.content[x][y]));
+ else if (id == ED_DRAWING_ID_CUSTOM_MOVE_ENTER)
+ DrawMiniGraphicExt(drawto, gi->x, gi->y,
+ el2edimg(custom_element.move_enter_element));
+ else if (id == ED_DRAWING_ID_CUSTOM_MOVE_LEAVE)
+ DrawMiniGraphicExt(drawto, gi->x, gi->y,
+ el2edimg(custom_element.move_leave_element));
else if (id == ED_DRAWING_ID_CUSTOM_CHANGE_TARGET)
DrawMiniGraphicExt(drawto, gi->x, gi->y,
el2edimg(custom_element_change.target_element));
static void UnmapDrawingArea(int id)
{
- UnmapGadget(level_editor_gadget[id]);
+ UnmapGadget(level_editor_gadget[drawingarea_info[id].gadget_id]);
}
static void UnmapLevelEditorWindowGadgets()
static void CopyGroupElementPropertiesToEditor(int element)
{
group_element_info = *element_info[element].group;
+ custom_element = element_info[element]; /* needed for description */
+}
+
+static void CopyElementPropertiesToEditor(int element)
+{
+ if (IS_CUSTOM_ELEMENT(element))
+ CopyCustomElementPropertiesToEditor(element);
+ else if (IS_GROUP_ELEMENT(element))
+ CopyGroupElementPropertiesToEditor(element);
}
static void CopyCustomElementPropertiesToGame(int element)
static void CopyGroupElementPropertiesToGame(int element)
{
+ element_info[element] = custom_element;
+ *element_info[element].group = group_element_info;
+
/* mark that this group element has been modified */
element_info[element].modified_settings = TRUE;
+}
- *element_info[element].group = group_element_info;
+static void CopyElementPropertiesToGame(int element)
+{
+ if (IS_CUSTOM_ELEMENT(element))
+ CopyCustomElementPropertiesToGame(element);
+ else if (IS_GROUP_ELEMENT(element))
+ CopyGroupElementPropertiesToGame(element);
}
void DrawLevelEd()
int i;
/* draw additional "advanced" tabulator for custom elements */
- if (IS_CUSTOM_ELEMENT(properties_element))
+ if (IS_CUSTOM_ELEMENT(properties_element) ||
+ IS_GROUP_ELEMENT(properties_element))
id_last = ED_TEXTBUTTON_ID_PROPERTIES_ADVANCED;
for (i = id_first; i <= id_last; i++)
"[Custom Element %d]", properties_element - EL_CUSTOM_START + 1);
screen_line++;
}
+ else if (IS_GROUP_ELEMENT(properties_element))
+ {
+ DrawTextF(pad_x, pad_y + screen_line++ * font2_height, FONT_TEXT_3,
+ "[Group Element %d]", properties_element - EL_GROUP_START + 1);
+ screen_line++;
+ }
#endif
/* ----- print number of elements / percentage of this element in level */
/* draw drawing area gadgets */
DrawCustomContentArea();
+ MapDrawingArea(ED_DRAWING_ID_CUSTOM_MOVE_ENTER);
+ MapDrawingArea(ED_DRAWING_ID_CUSTOM_MOVE_LEAVE);
/* draw text input gadgets */
MapTextInputGadget(ED_TEXTINPUT_ID_ELEMENT_NAME);
}
-
- if (IS_GROUP_ELEMENT(properties_element))
+ else if (IS_GROUP_ELEMENT(properties_element))
{
/* draw stickybutton gadget */
i = ED_CHECKBUTTON_ID_STICK_ELEMENT;
checkbutton_info[i].y = ED_SETTINGS_YPOS(0);
MapCheckbuttonGadget(i);
+ /* draw counter gadgets */
MapCounterButtons(ED_COUNTER_ID_GROUP_CONTENT);
+ /* draw drawing area gadgets */
DrawGroupElementArea(properties_element);
+
+ /* draw text input gadgets */
+ MapTextInputGadget(ED_TEXTINPUT_ID_ELEMENT_NAME);
}
}
static void DrawPropertiesAdvancedDrawingAreas()
{
MapDrawingArea(ED_DRAWING_ID_CUSTOM_GRAPHIC);
- MapDrawingArea(ED_DRAWING_ID_CUSTOM_CHANGE_TARGET);
- MapDrawingArea(ED_DRAWING_ID_CUSTOM_CHANGE_TRIGGER);
- DrawCustomChangeContentArea();
+ if (IS_CUSTOM_ELEMENT(properties_element))
+ {
+ MapDrawingArea(ED_DRAWING_ID_CUSTOM_CHANGE_TARGET);
+ MapDrawingArea(ED_DRAWING_ID_CUSTOM_CHANGE_TRIGGER);
+
+ DrawCustomChangeContentArea();
+ }
redraw_mask |= REDRAW_FIELD;
}
checkbutton_info[i].y = ED_SETTINGS_YPOS(0);
MapCheckbuttonGadget(i);
- /* draw checkbutton gadgets */
- for (i = ED_CHECKBUTTON_ID_CHANGE_FIRST;
- i <= ED_CHECKBUTTON_ID_CHANGE_LAST; i++)
+ if (IS_CUSTOM_ELEMENT(properties_element))
+ {
+ /* draw checkbutton gadgets */
+ for (i = ED_CHECKBUTTON_ID_CHANGE_FIRST;
+ i <= ED_CHECKBUTTON_ID_CHANGE_LAST; i++)
MapCheckbuttonGadget(i);
- /* draw counter gadgets */
- for (i = ED_COUNTER_ID_CHANGE_FIRST; i <= ED_COUNTER_ID_CHANGE_LAST; i++)
- MapCounterButtons(i);
+ /* draw counter gadgets */
+ for (i = ED_COUNTER_ID_CHANGE_FIRST;
+ i <= ED_COUNTER_ID_CHANGE_LAST; i++)
+ MapCounterButtons(i);
- /* draw selectbox gadgets */
- for (i = ED_SELECTBOX_ID_CHANGE_FIRST; i <= ED_SELECTBOX_ID_CHANGE_LAST; i++)
- MapSelectboxGadget(i);
+ /* draw selectbox gadgets */
+ for (i = ED_SELECTBOX_ID_CHANGE_FIRST;
+ i <= ED_SELECTBOX_ID_CHANGE_LAST; i++)
+ MapSelectboxGadget(i);
- /* draw textbutton gadgets */
- for (i=ED_TEXTBUTTON_ID_CHANGE_FIRST; i <= ED_TEXTBUTTON_ID_CHANGE_LAST; i++)
- MapTextbuttonGadget(i);
+ /* draw textbutton gadgets */
+ for (i = ED_TEXTBUTTON_ID_CHANGE_FIRST;
+ i <= ED_TEXTBUTTON_ID_CHANGE_LAST; i++)
+ MapTextbuttonGadget(i);
+
+ /* draw graphicbutton gadgets */
+ for (i = ED_GRAPHICBUTTON_ID_CHANGE_FIRST;
+ i <= ED_GRAPHICBUTTON_ID_CHANGE_LAST; i++)
+ MapGraphicbuttonGadget(i);
+ }
+ else if (IS_GROUP_ELEMENT(properties_element))
+ {
+ /* draw checkbutton gadgets */
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC);
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE);
- /* draw graphicbutton gadgets */
- for (i = ED_GRAPHICBUTTON_ID_CHANGE_FIRST;
- i <= ED_GRAPHICBUTTON_ID_CHANGE_LAST; i++)
- MapGraphicbuttonGadget(i);
+ /* draw textbutton gadgets */
+ MapTextbuttonGadget(ED_TEXTBUTTON_ID_SAVE_AS_TEMPLATE);
+ }
/* draw drawing area gadgets */
DrawPropertiesAdvancedDrawingAreas();
/* make sure that previous properties edit mode exists for this element */
if (edit_mode_properties == ED_MODE_PROPERTIES_ADVANCED &&
- !IS_CUSTOM_ELEMENT(properties_element))
+ !IS_CUSTOM_ELEMENT(properties_element) &&
+ !IS_GROUP_ELEMENT(properties_element))
edit_mode_properties = ED_MODE_PROPERTIES_CONFIG;
- if (IS_CUSTOM_ELEMENT(properties_element))
- CopyCustomElementPropertiesToEditor(properties_element);
-
- if (IS_GROUP_ELEMENT(properties_element))
- CopyGroupElementPropertiesToEditor(properties_element);
+ CopyElementPropertiesToEditor(properties_element);
UnmapLevelEditorWindowGadgets();
UnmapLevelEditorToolboxDrawingGadgets();
new_element = GFX_ELEMENT(new_element);
custom_element.gfx_element = new_element;
- CopyCustomElementPropertiesToGame(properties_element);
+ CopyElementPropertiesToGame(properties_element);
UpdateCustomElementGraphicGadgets();
CopyCustomElementPropertiesToGame(properties_element);
}
+ else if (id == GADGET_ID_CUSTOM_MOVE_ENTER)
+ {
+ custom_element.move_enter_element = new_element;
+
+ CopyCustomElementPropertiesToGame(properties_element);
+ }
+ else if (id == GADGET_ID_CUSTOM_MOVE_LEAVE)
+ {
+ custom_element.move_leave_element = new_element;
+
+ CopyCustomElementPropertiesToGame(properties_element);
+ }
else if (id == GADGET_ID_CUSTOM_CHANGE_TARGET)
{
custom_element_change.target_element = new_element;
PickDrawingElement(button, custom_element.gfx_element);
else if (id == GADGET_ID_CUSTOM_CONTENT)
PickDrawingElement(button, custom_element.content[sx][sy]);
+ else if (id == GADGET_ID_CUSTOM_MOVE_ENTER)
+ PickDrawingElement(button, custom_element.move_enter_element);
+ else if (id == GADGET_ID_CUSTOM_MOVE_LEAVE)
+ PickDrawingElement(button, custom_element.move_leave_element);
else if (id == GADGET_ID_CUSTOM_CHANGE_TARGET)
PickDrawingElement(button, custom_element_change.target_element);
else if (id == GADGET_ID_CUSTOM_CHANGE_CONTENT)
PickDrawingElement(button, custom_element_change.content[sx][sy]);
else if (id == GADGET_ID_CUSTOM_CHANGE_TRIGGER)
PickDrawingElement(button, custom_element_change.trigger_element);
+ else if (id == GADGET_ID_GROUP_CONTENT)
+ PickDrawingElement(button, group_element_info.element[sx]);
else if (id == GADGET_ID_RANDOM_BACKGROUND)
PickDrawingElement(button, random_placement_background_element);
else if (id >= GADGET_ID_ELEMENT_CONTENT_0 &&
counter_id <= ED_COUNTER_ID_CUSTOM_LAST) ||
(counter_id >= ED_COUNTER_ID_CHANGE_FIRST &&
counter_id <= ED_COUNTER_ID_CHANGE_LAST))
- CopyCustomElementPropertiesToGame(properties_element);
+ CopyElementPropertiesToGame(properties_element);
}
static void HandleTextInputGadgets(struct GadgetInfo *gi)
if (type_id == ED_TEXTINPUT_ID_ELEMENT_NAME)
{
- CopyCustomElementPropertiesToGame(properties_element);
+ CopyElementPropertiesToGame(properties_element);
ModifyEditorElementList(); /* update changed button info text */
}
type_id <= ED_SELECTBOX_ID_CUSTOM_LAST) ||
(type_id >= ED_SELECTBOX_ID_CHANGE_FIRST &&
type_id <= ED_SELECTBOX_ID_CHANGE_LAST))
- CopyCustomElementPropertiesToGame(properties_element);
+ CopyElementPropertiesToGame(properties_element);
}
static void HandleTextbuttonGadgets(struct GadgetInfo *gi)
type_id <= ED_CHECKBUTTON_ID_CHANGE_LAST &&
type_id != ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE))
{
- CopyCustomElementPropertiesToGame(properties_element);
+ CopyElementPropertiesToGame(properties_element);
}
if (type_id == ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC)
static void HandleDrawingAreaInfo(struct GadgetInfo *gi)
{
static int start_lx, start_ly;
- char *infotext;
int id = gi->custom_id;
int sx = gi->event.x;
int sy = gi->event.y;
int max_sx = gi->drawing.area_xsize - 1;
int max_sy = gi->drawing.area_ysize - 1;
int actual_drawing_function = drawing_function;
+ int max_infotext_len = getMaxInfoTextLength();
+ char infotext[MAX_OUTPUT_LINESIZE + 1];
+ char *text;
+
+ infotext[0] = '\0'; /* start with empty info text */
/* pressed Control key: simulate picking element */
if (GetKeyModState() & KMOD_Control)
switch (actual_drawing_function)
{
case GADGET_ID_SINGLE_ITEMS:
- infotext = "Drawing single items";
+ text = "Drawing single items";
break;
case GADGET_ID_CONNECTED_ITEMS:
- infotext = "Drawing connected items";
+ text = "Drawing connected items";
break;
case GADGET_ID_LINE:
- infotext = "Drawing line";
+ text = "Drawing line";
break;
case GADGET_ID_ARC:
- infotext = "Drawing arc";
+ text = "Drawing arc";
break;
case GADGET_ID_TEXT:
- infotext = "Setting text cursor";
+ text = "Setting text cursor";
break;
case GADGET_ID_RECTANGLE:
- infotext = "Drawing rectangle";
+ text = "Drawing rectangle";
break;
case GADGET_ID_FILLED_BOX:
- infotext = "Drawing filled box";
+ text = "Drawing filled box";
break;
case GADGET_ID_FLOOD_FILL:
- infotext = "Flood fill";
+ text = "Flood fill";
break;
case GADGET_ID_GRAB_BRUSH:
- infotext = "Grabbing brush";
+ text = "Grabbing brush";
break;
case GADGET_ID_PICK_ELEMENT:
- infotext = "Picking element";
+ text = "Picking element";
break;
default:
- infotext = "Drawing position";
+ text = "Drawing position";
break;
}
+#if 1
+ if (actual_drawing_function == GADGET_ID_PICK_ELEMENT)
+ sprintf(infotext, "%s: %d, %d", text, lx, ly);
+ else
+ sprintf(infotext, "%s: %d, %d", text,
+ ABS(lx - start_lx) + 1, ABS(ly - start_ly) + 1);
+#else
if (actual_drawing_function == GADGET_ID_PICK_ELEMENT)
DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2,
"%s: %d, %d", infotext, lx, ly);
DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2,
"%s: %d, %d", infotext,
ABS(lx - start_lx) + 1, ABS(ly - start_ly) + 1);
+#endif
}
+#if 1
+ else if (actual_drawing_function == GADGET_ID_PICK_ELEMENT)
+ strncpy(infotext, getElementInfoText(Feld[lx][ly]), max_infotext_len);
+ else
+ sprintf(infotext, "Level position: %d, %d", lx, ly);
+#else
else if (actual_drawing_function == GADGET_ID_PICK_ELEMENT)
DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2,
"%s", getElementInfoText(Feld[lx][ly]));
else
DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2,
"Level position: %d, %d", lx, ly);
+#endif
}
/* misuse this function to draw brush cursor, if needed */
}
else if (actual_drawing_function == GADGET_ID_PICK_ELEMENT)
{
+ int element = EL_EMPTY;
+
if (id == GADGET_ID_AMOEBA_CONTENT)
- DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, "%s",
- getElementInfoText(level.amoeba_content));
+ element = level.amoeba_content;
else if (id == GADGET_ID_CUSTOM_GRAPHIC)
- DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, "%s",
- getElementInfoText(custom_element.gfx_element));
+ element = custom_element.gfx_element;
else if (id == GADGET_ID_CUSTOM_CONTENT)
- DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, "%s",
- getElementInfoText(custom_element.content[sx][sy]));
+ element = custom_element.content[sx][sy];
+ else if (id == GADGET_ID_CUSTOM_MOVE_ENTER)
+ element = custom_element.move_enter_element;
+ else if (id == GADGET_ID_CUSTOM_MOVE_LEAVE)
+ element = custom_element.move_leave_element;
else if (id == GADGET_ID_CUSTOM_CHANGE_TARGET)
- DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, "%s",
- getElementInfoText(custom_element_change.target_element));
+ element = custom_element_change.target_element;
else if (id == GADGET_ID_CUSTOM_CHANGE_CONTENT)
- DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, "%s",
- getElementInfoText(custom_element_change.content[sx][sy]));
+ element = custom_element_change.content[sx][sy];
else if (id == GADGET_ID_CUSTOM_CHANGE_TRIGGER)
- DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, "%s",
- getElementInfoText(custom_element_change.trigger_element));
+ element = custom_element_change.trigger_element;
+ else if (id == GADGET_ID_GROUP_CONTENT)
+ element = group_element_info.element[sx];
else if (id == GADGET_ID_RANDOM_BACKGROUND)
- DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, "%s",
- getElementInfoText(random_placement_background_element));
+ element = random_placement_background_element;
else if (id >= GADGET_ID_ELEMENT_CONTENT_0 &&
id <= GADGET_ID_ELEMENT_CONTENT_7)
- {
- int i = id - GADGET_ID_ELEMENT_CONTENT_0;
+ element = level.yamyam_content[id - GADGET_ID_ELEMENT_CONTENT_0][sx][sy];
- DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, "%s",
- getElementInfoText(level.yamyam_content[i][sx][sy]));
- }
+ strncpy(infotext, getElementInfoText(element), max_infotext_len);
}
else
{
if (id == GADGET_ID_AMOEBA_CONTENT)
- DrawTextS(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2,
- "Amoeba content");
+ strcpy(infotext, "Amoeba content");
else if (id == GADGET_ID_CUSTOM_GRAPHIC)
- DrawTextS(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2,
- "Custom graphic element");
+ strcpy(infotext, "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);
+ sprintf(infotext, "Custom element content position: %d, %d", sx, sy);
+ else if (id == GADGET_ID_CUSTOM_MOVE_ENTER)
+ strcpy(infotext, "Element that can be digged/collected");
+ else if (id == GADGET_ID_CUSTOM_MOVE_LEAVE)
+ strcpy(infotext, "Element that will be left behind");
else if (id == GADGET_ID_CUSTOM_CHANGE_TARGET)
- DrawTextS(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2,
- "New element after change");
+ strcpy(infotext, "New element after change");
else if (id == GADGET_ID_CUSTOM_CHANGE_CONTENT)
- DrawTextS(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2,
- "New extended elements after change");
+ strcpy(infotext, "New extended elements after change");
else if (id == GADGET_ID_CUSTOM_CHANGE_TRIGGER)
- DrawTextS(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2,
- "Other element triggering change");
+ strcpy(infotext, "Other element triggering change");
+ else if (id == GADGET_ID_GROUP_CONTENT)
+ sprintf(infotext, "Group element position: %d", sx + 1);
else if (id == GADGET_ID_RANDOM_BACKGROUND)
- DrawTextS(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2,
- "Random placement background");
+ strcpy(infotext, "Random placement background");
else if (id >= GADGET_ID_ELEMENT_CONTENT_0 &&
id <= GADGET_ID_ELEMENT_CONTENT_7)
- DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2,
- "Content area %d position: %d, %d",
- id - GADGET_ID_ELEMENT_CONTENT_0 + 1, sx, sy);
+ sprintf(infotext, "Content area %d position: %d, %d",
+ id - GADGET_ID_ELEMENT_CONTENT_0 + 1, sx, sy);
}
+
+ infotext[max_infotext_len] = '\0';
+
+ if (strlen(infotext) > 0)
+ DrawTextS(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, infotext);
}
void RequestExitLevelEditor(boolean ask_if_level_has_changed)