X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=82e049596d20baa54ed2d5c4eb2e36bcef659d3a;hb=6b83db8bee17d70c4e89dc3e3b703b7032aa5f27;hp=a5a57ee900b8abfa905e67f705d007658712a8fe;hpb=63ee0a61e7a4b4ec02c93d9647488f70784a6516;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index a5a57ee9..82e04959 100644 --- a/src/editor.c +++ b/src/editor.c @@ -94,31 +94,35 @@ #define ED_NUM_ELEMENTLIST_BUTTONS (ED_ELEMENTLIST_BUTTONS_HORIZ * \ ED_ELEMENTLIST_BUTTONS_VERT) -/* values for element properties window */ -#define ED_PROPERTIES_XPOS (TILEX - MINI_TILEX/2) - -/* values for level information window */ -#define ED_LEVELINFO_XPOS (TILEX - MINI_TILEX/2) -#define ED_LEVELINFO_YPOS (TILEY - MINI_TILEY/2) +/* values for the setting windows */ +#define ED_SETTINGS_XPOS (MINI_TILEX + 8) +#define ED_SETTINGS2_XPOS MINI_TILEX +#define ED_SETTINGS_YPOS MINI_TILEY +#define ED_SETTINGS2_YPOS (ED_SETTINGS_YPOS + 12 * TILEY - 2) /* values for counter gadgets */ -#define ED_COUNT_VALUE_XOFFSET 5 -#define ED_COUNT_VALUE_YOFFSET 3 -#define ED_COUNT_ELEM_SCORE_XPOS ED_PROPERTIES_XPOS +#define ED_COUNT_ELEM_SCORE_XPOS ED_SETTINGS_XPOS #define ED_COUNT_ELEM_SCORE_YPOS (14 * MINI_TILEY) -#define ED_COUNT_ELEM_CONTENT_XPOS ED_PROPERTIES_XPOS -#define ED_COUNT_ELEM_CONTENT_YPOS (17 * MINI_TILEY) -#define ED_COUNTER_YSTART (ED_LEVELINFO_YPOS + 3 * TILEY) +#define ED_COUNT_ELEM_CONTENT_XPOS ED_SETTINGS_XPOS +#define ED_COUNT_ELEM_CONTENT_YPOS (19 * MINI_TILEY) + +#define ED_COUNTER_YSTART (ED_SETTINGS_YPOS + 2 * TILEY) #define ED_COUNTER_YDISTANCE (3 * MINI_TILEY) #define ED_COUNTER_YPOS(n) (ED_COUNTER_YSTART + \ n * ED_COUNTER_YDISTANCE) +#define ED_COUNTER2_YPOS(n) (ED_COUNTER_YSTART + \ + n * ED_COUNTER_YDISTANCE - 2) /* standard distances */ #define ED_BORDER_SIZE 3 #define ED_GADGET_DISTANCE 2 /* values for element content drawing areas */ -#define ED_AREA_ELEM_CONTENT_XPOS (TILEX) -#define ED_AREA_ELEM_CONTENT_YPOS (10 * TILEY) +#define ED_AREA_ELEM_CONTENT_XPOS ( 2 * MINI_TILEX) +#define ED_AREA_ELEM_CONTENT_YPOS (22 * 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) /* values for scrolling gadgets */ #define ED_SCROLLBUTTON_XPOS 24 @@ -150,13 +154,13 @@ #define ED_CHECKBUTTON_XSIZE ED_BUTTON_COUNT_XSIZE #define ED_CHECKBUTTON_YSIZE ED_BUTTON_COUNT_YSIZE #define ED_CHECKBUTTON_UNCHECKED_XPOS ED_BUTTON_MINUS_XPOS -#define ED_CHECKBUTTON_UNCHECKED_YPOS ED_BUTTON_MINUS_YPOS #define ED_CHECKBUTTON_CHECKED_XPOS ED_BUTTON_PLUS_XPOS -#define ED_CHECKBUTTON_CHECKED_YPOS ED_BUTTON_PLUS_YPOS +#define ED_CHECKBUTTON_YPOS (ED_BUTTON_MINUS_YPOS + 22) +#define ED_STICKYBUTTON_YPOS (ED_BUTTON_MINUS_YPOS + 88) -/* control button identifiers */ #define GADGET_ID_NONE -1 +/* drawing toolbox buttons */ #define GADGET_ID_SINGLE_ITEMS 0 #define GADGET_ID_CONNECTED_ITEMS 1 #define GADGET_ID_LINE 2 @@ -238,11 +242,17 @@ #define GADGET_ID_ELEMENTLIST_FIRST 66 #define GADGET_ID_ELEMENTLIST_LAST 105 -/* checkbuttons for level settings */ +/* buttons for level settings */ #define GADGET_ID_RANDOM_PERCENTAGE 106 #define GADGET_ID_RANDOM_QUANTITY 107 +#define GADGET_ID_RANDOM_RESTRICTED 108 +#define GADGET_ID_DOUBLE_SPEED 109 +#define GADGET_ID_STICK_ELEMENT 110 -#define NUM_EDITOR_GADGETS 108 +/* another drawing area for random placement */ +#define GADGET_ID_RANDOM_BACKGROUND 111 + +#define NUM_EDITOR_GADGETS 112 /* radio button numbers */ #define RADIO_NR_NONE 0 @@ -254,26 +264,29 @@ #define ED_COUNTER_ID_ELEM_CONTENT 1 #define ED_COUNTER_ID_LEVEL_XSIZE 2 #define ED_COUNTER_ID_LEVEL_YSIZE 3 -#define ED_COUNTER_ID_LEVEL_RANDOM 4 -#define ED_COUNTER_ID_LEVEL_COLLECT 5 -#define ED_COUNTER_ID_LEVEL_TIMELIMIT 6 -#define ED_COUNTER_ID_LEVEL_TIMESCORE 7 +#define ED_COUNTER_ID_LEVEL_COLLECT 4 +#define ED_COUNTER_ID_LEVEL_TIMELIMIT 5 +#define ED_COUNTER_ID_LEVEL_TIMESCORE 6 +#define ED_COUNTER_ID_LEVEL_RANDOM 7 #define ED_NUM_COUNTERBUTTONS 8 +#define ED_COUNTER_ID_LEVEL_FIRST ED_COUNTER_ID_LEVEL_XSIZE +#define ED_COUNTER_ID_LEVEL_LAST ED_COUNTER_ID_LEVEL_RANDOM + /* values for scrollbutton gadgets */ -#define ED_SCROLLBUTTON_AREA_UP 0 -#define ED_SCROLLBUTTON_AREA_DOWN 1 -#define ED_SCROLLBUTTON_AREA_LEFT 2 -#define ED_SCROLLBUTTON_AREA_RIGHT 3 -#define ED_SCROLLBUTTON_LIST_UP 4 -#define ED_SCROLLBUTTON_LIST_DOWN 5 +#define ED_SCROLLBUTTON_ID_AREA_UP 0 +#define ED_SCROLLBUTTON_ID_AREA_DOWN 1 +#define ED_SCROLLBUTTON_ID_AREA_LEFT 2 +#define ED_SCROLLBUTTON_ID_AREA_RIGHT 3 +#define ED_SCROLLBUTTON_ID_LIST_UP 4 +#define ED_SCROLLBUTTON_ID_LIST_DOWN 5 #define ED_NUM_SCROLLBUTTONS 6 /* values for scrollbar gadgets */ -#define ED_SCROLLBAR_HORIZONTAL 0 -#define ED_SCROLLBAR_VERTICAL 1 +#define ED_SCROLLBAR_ID_HORIZONTAL 0 +#define ED_SCROLLBAR_ID_VERTICAL 1 #define ED_NUM_SCROLLBARS 2 @@ -283,11 +296,27 @@ #define ED_NUM_TEXTINPUT 2 +#define ED_TEXTINPUT_ID_LEVEL_FIRST ED_TEXTINPUT_ID_LEVEL_NAME +#define ED_TEXTINPUT_ID_LEVEL_LAST ED_TEXTINPUT_ID_LEVEL_AUTHOR + /* values for checkbutton gadgets */ -#define ED_CHECKBUTTON_PERCENTAGE 0 -#define ED_CHECKBUTTON_QUANTITY 1 +#define ED_CHECKBUTTON_ID_DOUBLE_SPEED 0 +#define ED_CHECKBUTTON_ID_RANDOM_RESTRICTED 1 +#define ED_CHECKBUTTON_ID_STICK_ELEMENT 2 + +#define ED_NUM_CHECKBUTTONS 3 + +#define ED_CHECKBUTTON_ID_LEVEL_FIRST ED_CHECKBUTTON_ID_DOUBLE_SPEED +#define ED_CHECKBUTTON_ID_LEVEL_LAST ED_CHECKBUTTON_ID_RANDOM_RESTRICTED + +/* values for radiobutton gadgets */ +#define ED_RADIOBUTTON_ID_PERCENTAGE 0 +#define ED_RADIOBUTTON_ID_QUANTITY 1 -#define ED_NUM_CHECKBUTTONS 2 +#define ED_NUM_RADIOBUTTONS 2 + +#define ED_RADIOBUTTON_ID_LEVEL_FIRST ED_RADIOBUTTON_ID_PERCENTAGE +#define ED_RADIOBUTTON_ID_LEVEL_LAST ED_RADIOBUTTON_ID_QUANTITY /* values for CopyLevelToUndoBuffer() */ #define UNDO_IMMEDIATE 0 @@ -347,7 +376,7 @@ static struct int gadget_id_down, gadget_id_up; int gadget_id_text; int **counter_value; - char *infotext; + char *infotext_above, *infotext_right; } counterbutton_info[ED_NUM_COUNTERBUTTONS] = { { @@ -356,7 +385,7 @@ static struct GADGET_ID_ELEM_SCORE_DOWN, GADGET_ID_ELEM_SCORE_UP, GADGET_ID_ELEM_SCORE_TEXT, &gadget_elem_score_value, - "element score" + "element score", NULL }, { ED_COUNT_ELEM_CONTENT_XPOS, ED_COUNT_ELEM_CONTENT_YPOS, @@ -364,55 +393,55 @@ static struct GADGET_ID_ELEM_CONTENT_DOWN, GADGET_ID_ELEM_CONTENT_UP, GADGET_ID_ELEM_CONTENT_TEXT, &gadget_elem_content_value, - "element content" + "element content", NULL }, { - ED_LEVELINFO_XPOS, ED_COUNTER_YPOS(0), + ED_SETTINGS_XPOS, ED_COUNTER_YPOS(2), MIN_LEV_FIELDX, MAX_LEV_FIELDX, GADGET_ID_LEVEL_XSIZE_DOWN, GADGET_ID_LEVEL_XSIZE_UP, GADGET_ID_LEVEL_XSIZE_TEXT, &gadget_level_xsize_value, - "playfield width" + "playfield size", "width", }, { - ED_LEVELINFO_XPOS, ED_COUNTER_YPOS(1), + ED_SETTINGS_XPOS + 2 * DXSIZE, ED_COUNTER_YPOS(2), MIN_LEV_FIELDY, MAX_LEV_FIELDY, GADGET_ID_LEVEL_YSIZE_DOWN, GADGET_ID_LEVEL_YSIZE_UP, GADGET_ID_LEVEL_YSIZE_TEXT, &gadget_level_ysize_value, - "playfield height" - }, - { - ED_LEVELINFO_XPOS, ED_COUNTER_YPOS(2), - 1, 100, - GADGET_ID_LEVEL_RANDOM_DOWN, GADGET_ID_LEVEL_RANDOM_UP, - GADGET_ID_LEVEL_RANDOM_TEXT, - &gadget_level_random_value, - "random elements" + NULL, "height", }, { - ED_LEVELINFO_XPOS, ED_COUNTER_YPOS(3), + ED_SETTINGS_XPOS, ED_COUNTER_YPOS(3), 0, 999, GADGET_ID_LEVEL_COLLECT_DOWN, GADGET_ID_LEVEL_COLLECT_UP, GADGET_ID_LEVEL_COLLECT_TEXT, &gadget_level_collect_value, - "number of emeralds to collect" + "number of emeralds to collect", NULL }, { - ED_LEVELINFO_XPOS, ED_COUNTER_YPOS(4), + ED_SETTINGS_XPOS, ED_COUNTER_YPOS(4), 0, 999, GADGET_ID_LEVEL_TIMELIMIT_DOWN, GADGET_ID_LEVEL_TIMELIMIT_UP, GADGET_ID_LEVEL_TIMELIMIT_TEXT, &gadget_level_timelimit_value, - "time available to solve level" + "time available to solve level", "(0 => no time limit)" }, { - ED_LEVELINFO_XPOS, ED_COUNTER_YPOS(5), + ED_SETTINGS_XPOS, ED_COUNTER_YPOS(5), 0, 255, GADGET_ID_LEVEL_TIMESCORE_DOWN, GADGET_ID_LEVEL_TIMESCORE_UP, GADGET_ID_LEVEL_TIMESCORE_TEXT, &gadget_level_timescore_value, - "score for each 10 seconds left" + "score for each 10 seconds left", NULL + }, + { + ED_SETTINGS_XPOS, ED_COUNTER2_YPOS(8), + 1, 100, + GADGET_ID_LEVEL_RANDOM_DOWN, GADGET_ID_LEVEL_RANDOM_UP, + GADGET_ID_LEVEL_RANDOM_TEXT, + &gadget_level_random_value, + "random element placement", "in" } }; @@ -420,21 +449,24 @@ static struct { int x, y; int gadget_id; + int size; char *value; char *infotext; } textinput_info[ED_NUM_TEXTINPUT] = { { - ED_LEVELINFO_XPOS, ED_COUNTER_YPOS(6), + ED_SETTINGS_XPOS, ED_COUNTER_YPOS(0), GADGET_ID_LEVEL_NAME, + MAX_LEVEL_NAME_LEN, level.name, - "Level Title" + "Title" }, { - ED_LEVELINFO_XPOS, ED_COUNTER_YPOS(7), + ED_SETTINGS_XPOS, ED_COUNTER_YPOS(1), GADGET_ID_LEVEL_AUTHOR, + MAX_LEVEL_AUTHOR_LEN, level.author, - "Level Author" + "Author" } }; @@ -474,13 +506,13 @@ static struct ED_ELEMENTLIST_UP_XPOS, ED_ELEMENTLIST_UP_ALT_YPOS, ED_ELEMENTLIST_UP_XPOS, ED_ELEMENTLIST_UP_YPOS, GADGET_ID_ELEMENTLIST_UP, - "scroll element list up" + "scroll element list up ('Page Up')" }, { ED_ELEMENTLIST_DOWN_XPOS, ED_ELEMENTLIST_DOWN_ALT_YPOS, ED_ELEMENTLIST_DOWN_XPOS, ED_ELEMENTLIST_DOWN_YPOS, GADGET_ID_ELEMENTLIST_DOWN, - "scroll element list down" + "scroll element list down ('Page Down')" } }; @@ -518,6 +550,9 @@ static struct static int random_placement_value = 10; static int random_placement_method = RANDOM_USE_QUANTITY; +static int random_placement_background_element = EL_ERDREICH; +static boolean random_placement_background_restricted = FALSE; +static boolean stick_element_properties_window = FALSE; static struct { @@ -527,21 +562,49 @@ static struct int *value; int checked_value; char *text, *infotext; -} checkbutton_info[ED_NUM_CHECKBUTTONS] = +} radiobutton_info[ED_NUM_RADIOBUTTONS] = { { - ED_LEVELINFO_XPOS + 160, ED_COUNTER_YPOS(2), + ED_SETTINGS_XPOS + 160, ED_COUNTER2_YPOS(8), GADGET_ID_RANDOM_PERCENTAGE, RADIO_NR_RANDOM_ELEMENTS, &random_placement_method, RANDOM_USE_PERCENTAGE, - "percentage", "use percentage for random elements" + "percentage", "use percentage for random elements" }, { - ED_LEVELINFO_XPOS + 340, ED_COUNTER_YPOS(2), + ED_SETTINGS_XPOS + 340, ED_COUNTER2_YPOS(8), GADGET_ID_RANDOM_QUANTITY, RADIO_NR_RANDOM_ELEMENTS, &random_placement_method, RANDOM_USE_QUANTITY, - "quantity", "use quantity for random elements" + "quantity", "use quantity for random elements" + } +}; + +static struct +{ + int x, y; + int gadget_id; + boolean *value; + char *text, *infotext; +} checkbutton_info[ED_NUM_CHECKBUTTONS] = +{ + { + ED_SETTINGS_XPOS, ED_COUNTER_YPOS(6) - MINI_TILEY, + GADGET_ID_DOUBLE_SPEED, + &level.double_speed, + "double speed movement", "set movement speed of player" + }, + { + ED_SETTINGS_XPOS, ED_COUNTER2_YPOS(9) - MINI_TILEY, + GADGET_ID_RANDOM_RESTRICTED, + &random_placement_background_restricted, + "restrict random placement to", "set random placement restriction" + }, + { + ED_SETTINGS_XPOS, ED_COUNTER_YPOS(4), + GADGET_ID_STICK_ELEMENT, + &stick_element_properties_window, + "stick window to edit content", "stick window to edit content" } }; @@ -592,7 +655,7 @@ static int undo_buffer_steps = 0; static int edit_mode; -static int counter_xsize = DXSIZE + 20; +static int counter_xsize = DXSIZE + FONT2_XSIZE - 2 * ED_GADGET_DISTANCE; int element_shift = 0; @@ -1173,7 +1236,7 @@ static void CreateControlButtons() deco_ypos = (ED_ELEMENTLIST_YSIZE - MINI_TILEY) / 2; gi = CreateGadget(GDI_CUSTOM_ID, id, - GDI_INFO_TEXT, "choose element", + GDI_INFO_TEXT, element_info[editor_element[i]], GDI_X, DX + gd_xoffset, GDI_Y, DY + gd_yoffset, GDI_WIDTH, ED_ELEMENTLIST_XSIZE, @@ -1337,7 +1400,7 @@ static void CreateDrawingAreas() level_editor_gadget[id] = gi; } - /* ... and one for the amoeba content */ + /* ... one for the amoeba content */ id = GADGET_ID_AMOEBA_CONTENT; gi = CreateGadget(GDI_CUSTOM_ID, id, GDI_X, SX + ED_AREA_ELEM_CONTENT_XPOS, @@ -1355,6 +1418,26 @@ static void CreateDrawingAreas() Error(ERR_EXIT, "cannot create gadget"); level_editor_gadget[id] = gi; + + /* ... and one for random placement background restrictions */ + + id = GADGET_ID_RANDOM_BACKGROUND; + gi = CreateGadget(GDI_CUSTOM_ID, id, + GDI_X, SX + ED_AREA_RANDOM_BACKGROUND_XPOS, + GDI_Y, SY + ED_AREA_RANDOM_BACKGROUND_YPOS, + GDI_WIDTH, MINI_TILEX, + GDI_HEIGHT, 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; } static void CreateTextInputGadgets() @@ -1384,7 +1467,7 @@ static void CreateTextInputGadgets() GDI_Y, SY + textinput_info[i].y, GDI_TYPE, GD_TYPE_TEXTINPUT_ALPHANUMERIC, GDI_TEXT_VALUE, textinput_info[i].value, - GDI_TEXT_SIZE, 30, + GDI_TEXT_SIZE, textinput_info[i].size, GDI_DESIGN_UNPRESSED, gd_pixmap, gd_x, gd_y, GDI_DESIGN_PRESSED, gd_pixmap, gd_x, gd_y, GDI_DESIGN_BORDER, ED_BORDER_SIZE, @@ -1459,32 +1542,59 @@ static void CreateScrollbarGadgets() static void CreateCheckbuttonGadgets() { + Pixmap gd_pixmap = pix[PIX_DOOR]; + struct GadgetInfo *gi; + unsigned long event_mask; + int gd_x1, gd_x2, gd_x3, gd_x4, gd_y; + boolean checked; int i; - /* create toolbox buttons */ - for (i=0; ievent.off_borders; boolean draw_level = (id == GADGET_ID_DRAWING_LEVEL); + int actual_drawing_function; int button = gi->event.button; int new_element = BUTTON_ELEMENT(button); int sx = gi->event.x, sy = gi->event.y; @@ -2910,11 +3117,16 @@ static void HandleDrawingAreas(struct GadgetInfo *gi) button = 0; #endif - +#if 0 if (!draw_level && drawing_function != GADGET_ID_SINGLE_ITEMS) return; +#endif - switch (drawing_function) + /* automatically switch to 'single item' drawing mode, if needed */ + actual_drawing_function = + (draw_level ? drawing_function : GADGET_ID_SINGLE_ITEMS); + + switch (actual_drawing_function) { case GADGET_ID_SINGLE_ITEMS: if (draw_level) @@ -2974,6 +3186,8 @@ static void HandleDrawingAreas(struct GadgetInfo *gi) if (id == GADGET_ID_AMOEBA_CONTENT) level.amoebe_inhalt = new_element; + else if (id == GADGET_ID_RANDOM_BACKGROUND) + random_placement_background_element = new_element; else if (id >= GADGET_ID_ELEM_CONTENT_0 && id <= GADGET_ID_ELEM_CONTENT_7) level.mampfer_inhalt[id - GADGET_ID_ELEM_CONTENT_0][sx][sy] = @@ -3042,7 +3256,7 @@ static void HandleDrawingAreas(struct GadgetInfo *gi) { CopyAreaToBrush(start_sx, start_sy, sx, sy, button); CopyBrushToCursor(sx, sy); - ClickOnGadget(level_editor_gadget[GADGET_ID_SINGLE_ITEMS]); + ClickOnGadget(level_editor_gadget[GADGET_ID_SINGLE_ITEMS],MB_LEFT); draw_with_brush = TRUE; } else if (drawing_function == GADGET_ID_TEXT) @@ -3073,7 +3287,7 @@ static void HandleDrawingAreas(struct GadgetInfo *gi) if (button_press_event) PickDrawingElement(button, Feld[lx][ly]); if (button_release_event) - ClickOnGadget(level_editor_gadget[last_drawing_function]); + ClickOnGadget(level_editor_gadget[last_drawing_function], MB_LEFT); break; default: @@ -3329,11 +3543,12 @@ static void HandleControlButtons(struct GadgetInfo *gi) { int gadget_id = GADGET_ID_ELEMENTLIST_FIRST + i; struct GadgetInfo *gi = level_editor_gadget[gadget_id]; - struct GadgetDesign *design = &gi->deco.design; + struct GadgetDesign *gd = &gi->deco.design; + int element = editor_element[element_shift + i]; UnmapGadget(gi); - getMiniGraphicSource(el2gfx(editor_element[element_shift + i]), - &design->pixmap, &design->x, &design->y); + getMiniGraphicSource(el2gfx(element), &gd->pixmap, &gd->x, &gd->y); + ModifyGadget(gi, GDI_INFO_TEXT, element_info[element], GDI_END); MapGadget(gi); } break; @@ -3420,7 +3635,7 @@ static void HandleControlButtons(struct GadgetInfo *gi) case GADGET_ID_CLEAR: for(x=0; xevent.y; int lx = sx + level_xpos; int ly = sy + level_ypos; + int min_sx = 0, min_sy = 0; + int max_sx = gi->drawing.area_xsize - 1; + int max_sy = gi->drawing.area_ysize - 1; ClearEditorGadgetInfoText(); + /* make sure to stay inside drawing area boundaries */ + sx = (sx < min_sx ? min_sx : sx > max_sx ? max_sx : sx); + sy = (sy < min_sy ? min_sy : sy > max_sy ? max_sy : sy); + if (id == GADGET_ID_DRAWING_LEVEL) { if (button_status) { - int min_sx = 0, min_sy = 0; - int max_sx = gi->drawing.area_xsize - 1; - int max_sy = gi->drawing.area_ysize - 1; int min_lx = 0, min_ly = 0; int max_lx = lev_fieldx - 1, max_ly = lev_fieldy - 1; - /* make sure to stay inside drawing area boundaries */ - sx = (sx < min_sx ? min_sx : sx > max_sx ? max_sx : sx); - sy = (sy < min_sy ? min_sy : sy > max_sy ? max_sy : sy); - /* get positions inside level field */ lx = sx + level_xpos; ly = sy + level_ypos; @@ -3788,8 +4023,11 @@ static void HandleDrawingAreaInfo(struct GadgetInfo *gi) else if (id == GADGET_ID_AMOEBA_CONTENT) DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FC_YELLOW, "Amoeba content"); + else if (id == GADGET_ID_RANDOM_BACKGROUND) + DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FC_YELLOW, + "Random placement background"); else DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FC_YELLOW, - "Cruncher %d content: %d, %d", + "Content area %d position: %d, %d", id - GADGET_ID_ELEM_CONTENT_0 + 1, sx, sy); }