#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_SETTINGS_XPOS
-#define ED_COUNT_ELEM_CONTENT_YPOS (17 * MINI_TILEY)
+#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)
/* values for element content drawing areas */
#define ED_AREA_ELEM_CONTENT_XPOS ( 2 * MINI_TILEX)
-#define ED_AREA_ELEM_CONTENT_YPOS (20 * MINI_TILEY)
+#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_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 + 22)
#define ED_CHECKBUTTON_CHECKED_XPOS ED_BUTTON_PLUS_XPOS
-#define ED_CHECKBUTTON_CHECKED_YPOS (ED_BUTTON_PLUS_YPOS + 22)
+#define ED_CHECKBUTTON_YPOS (ED_BUTTON_MINUS_YPOS + 22)
+#define ED_STICKYBUTTON_YPOS (ED_BUTTON_MINUS_YPOS + 88)
#define GADGET_ID_NONE -1
#define GADGET_ID_RANDOM_QUANTITY 107
#define GADGET_ID_RANDOM_RESTRICTED 108
#define GADGET_ID_DOUBLE_SPEED 109
+#define GADGET_ID_STICK_ELEMENT 110
/* another drawing area for random placement */
-#define GADGET_ID_RANDOM_BACKGROUND 110
+#define GADGET_ID_RANDOM_BACKGROUND 111
-#define NUM_EDITOR_GADGETS 111
+#define NUM_EDITOR_GADGETS 112
/* radio button numbers */
#define RADIO_NR_NONE 0
#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
-#define ED_NUM_COUNTERBUTTONS 8
-
/* 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
#define ED_TEXTINPUT_ID_LEVEL_NAME 0
#define ED_TEXTINPUT_ID_LEVEL_AUTHOR 1
+#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
-#define ED_NUM_TEXTINPUT 2
-
/* values for checkbutton gadgets */
-#define ED_CHECKBUTTON_DOUBLE_SPEED 0
-#define ED_CHECKBUTTON_RANDOM_RESTRICTED 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_NUM_CHECKBUTTONS 2
+#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_PERCENTAGE 0
-#define ED_RADIOBUTTON_QUANTITY 1
+#define ED_RADIOBUTTON_ID_PERCENTAGE 0
+#define ED_RADIOBUTTON_ID_QUANTITY 1
#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
#define UNDO_ACCUMULATE 1
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
{
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"
}
};
EL_INVISIBLE_STEEL,
EL_UNSICHTBAR,
EL_SPEED_PILL,
- EL_LEERRAUM,
+ EL_BLACK_ORB,
EL_CHAR_A + ('S' - 'A'),
EL_CHAR_A + ('O' - 'A'),
EL_LEERRAUM,
EL_LEERRAUM,
- EL_CHAR_AUSRUF,
- EL_CHAR_ZOLL,
- EL_CHAR_DOLLAR,
- EL_CHAR_PROZ,
+ EL_CHAR(' '),
+ EL_CHAR('!'),
+ EL_CHAR('"'),
+ EL_CHAR('#'),
+
+ EL_CHAR('$'),
+ EL_CHAR('%'),
+ EL_CHAR('&'),
+ EL_CHAR('\''),
+
+ EL_CHAR('('),
+ EL_CHAR(')'),
+ EL_CHAR('*'),
+ EL_CHAR('+'),
+
+ EL_CHAR(','),
+ EL_CHAR('-'),
+ EL_CHAR('.'),
+ EL_CHAR('/'),
+
+ EL_CHAR('0'),
+ EL_CHAR('1'),
+ EL_CHAR('2'),
+ EL_CHAR('3'),
+
+ EL_CHAR('4'),
+ EL_CHAR('5'),
+ EL_CHAR('6'),
+ EL_CHAR('7'),
+
+ EL_CHAR('8'),
+ EL_CHAR('9'),
+ EL_CHAR(':'),
+ EL_CHAR(';'),
+
+ EL_CHAR('<'),
+ EL_CHAR('='),
+ EL_CHAR('>'),
+ EL_CHAR('?'),
+
+ EL_CHAR('@'),
+ EL_CHAR('A'),
+ EL_CHAR('B'),
+ EL_CHAR('C'),
- EL_CHAR_APOSTR,
- EL_CHAR_KLAMM1,
- EL_CHAR_KLAMM2,
- EL_CHAR_PLUS,
+ EL_CHAR('D'),
+ EL_CHAR('E'),
+ EL_CHAR('F'),
+ EL_CHAR('G'),
- EL_CHAR_KOMMA,
- EL_CHAR_MINUS,
- EL_CHAR_PUNKT,
- EL_CHAR_SLASH,
-
- EL_CHAR_0 + 0,
- EL_CHAR_0 + 1,
- EL_CHAR_0 + 2,
- EL_CHAR_0 + 3,
-
- EL_CHAR_0 + 4,
- EL_CHAR_0 + 5,
- EL_CHAR_0 + 6,
- EL_CHAR_0 + 7,
-
- EL_CHAR_0 + 8,
- EL_CHAR_0 + 9,
- EL_CHAR_DOPPEL,
- EL_CHAR_SEMIKL,
-
- EL_CHAR_LT,
- EL_CHAR_GLEICH,
- EL_CHAR_GT,
- EL_CHAR_FRAGE,
-
- EL_CHAR_AT,
- EL_CHAR_A + 0,
- EL_CHAR_A + 1,
- EL_CHAR_A + 2,
-
- EL_CHAR_A + 3,
- EL_CHAR_A + 4,
- EL_CHAR_A + 5,
- EL_CHAR_A + 6,
-
- EL_CHAR_A + 7,
- EL_CHAR_A + 8,
- EL_CHAR_A + 9,
- EL_CHAR_A + 10,
-
- EL_CHAR_A + 11,
- EL_CHAR_A + 12,
- EL_CHAR_A + 13,
- EL_CHAR_A + 14,
-
- EL_CHAR_A + 15,
- EL_CHAR_A + 16,
- EL_CHAR_A + 17,
- EL_CHAR_A + 18,
-
- EL_CHAR_A + 19,
- EL_CHAR_A + 20,
- EL_CHAR_A + 21,
- EL_CHAR_A + 22,
-
- EL_CHAR_A + 23,
- EL_CHAR_A + 24,
- EL_CHAR_A + 25,
- EL_CHAR_AE,
-
- EL_CHAR_OE,
- EL_CHAR_UE,
- EL_CHAR_COPY,
- EL_LEERRAUM
+ EL_CHAR('H'),
+ EL_CHAR('I'),
+ EL_CHAR('J'),
+ EL_CHAR('K'),
+
+ EL_CHAR('L'),
+ EL_CHAR('M'),
+ EL_CHAR('N'),
+ EL_CHAR('O'),
+
+ EL_CHAR('P'),
+ EL_CHAR('Q'),
+ EL_CHAR('R'),
+ EL_CHAR('S'),
+
+ EL_CHAR('T'),
+ EL_CHAR('U'),
+ EL_CHAR('V'),
+ EL_CHAR('W'),
+
+ EL_CHAR('X'),
+ EL_CHAR('Y'),
+ EL_CHAR('Z'),
+ EL_CHAR('Ä'),
+
+ EL_CHAR('Ö'),
+ EL_CHAR('Ü'),
+ EL_CHAR('^'),
+ EL_CHAR(' ')
};
int elements_in_list = sizeof(editor_element)/sizeof(int);
Pixmap gd_pixmap = pix[PIX_DOOR];
struct GadgetInfo *gi;
unsigned long event_mask;
- int gd_x1, gd_x2, gd_x3, gd_x4, gd_y1, gd_y2;
+ int gd_x1, gd_x2, gd_x3, gd_x4, gd_y;
boolean checked;
int i;
gd_x2 = DOOR_GFX_PAGEX3 + ED_CHECKBUTTON_UNCHECKED_XPOS;
gd_x3 = DOOR_GFX_PAGEX4 + ED_CHECKBUTTON_CHECKED_XPOS;
gd_x4 = DOOR_GFX_PAGEX3 + ED_CHECKBUTTON_CHECKED_XPOS;
- gd_y1 = DOOR_GFX_PAGEY1 + ED_CHECKBUTTON_UNCHECKED_YPOS;
- gd_y2 = DOOR_GFX_PAGEY1 + ED_CHECKBUTTON_CHECKED_YPOS;
+ gd_y = DOOR_GFX_PAGEY1 + ED_CHECKBUTTON_YPOS;
for (i=0; i<ED_NUM_RADIOBUTTONS; i++)
{
GDI_TYPE, GD_TYPE_RADIO_BUTTON,
GDI_RADIO_NR, radiobutton_info[i].radio_button_nr,
GDI_CHECKED, checked,
- GDI_DESIGN_UNPRESSED, gd_pixmap, gd_x1, gd_y1,
- GDI_DESIGN_PRESSED, gd_pixmap, gd_x2, gd_y1,
- GDI_ALT_DESIGN_UNPRESSED, gd_pixmap, gd_x3, gd_y2,
- GDI_ALT_DESIGN_PRESSED, gd_pixmap, gd_x4, gd_y2,
+ GDI_DESIGN_UNPRESSED, gd_pixmap, gd_x1, gd_y,
+ GDI_DESIGN_PRESSED, gd_pixmap, gd_x2, gd_y,
+ GDI_ALT_DESIGN_UNPRESSED, gd_pixmap, gd_x3, gd_y,
+ GDI_ALT_DESIGN_PRESSED, gd_pixmap, gd_x4, gd_y,
GDI_EVENT_MASK, event_mask,
GDI_CALLBACK_ACTION, HandleControlButtons,
GDI_END);
{
int id = checkbutton_info[i].gadget_id;
+ if (id == GADGET_ID_STICK_ELEMENT)
+ gd_y = DOOR_GFX_PAGEY1 + ED_STICKYBUTTON_YPOS;
+ else
+ gd_y = DOOR_GFX_PAGEY1 + ED_CHECKBUTTON_YPOS;
+
gi = CreateGadget(GDI_CUSTOM_ID, id,
GDI_INFO_TEXT, checkbutton_info[i].infotext,
GDI_X, SX + checkbutton_info[i].x,
GDI_HEIGHT, ED_CHECKBUTTON_YSIZE,
GDI_TYPE, GD_TYPE_CHECK_BUTTON,
GDI_CHECKED, *checkbutton_info[i].value,
- GDI_DESIGN_UNPRESSED, gd_pixmap, gd_x1, gd_y1,
- GDI_DESIGN_PRESSED, gd_pixmap, gd_x2, gd_y1,
- GDI_ALT_DESIGN_UNPRESSED, gd_pixmap, gd_x3, gd_y2,
- GDI_ALT_DESIGN_PRESSED, gd_pixmap, gd_x4, gd_y2,
+ GDI_DESIGN_UNPRESSED, gd_pixmap, gd_x1, gd_y,
+ GDI_DESIGN_PRESSED, gd_pixmap, gd_x2, gd_y,
+ GDI_ALT_DESIGN_UNPRESSED, gd_pixmap, gd_x3, gd_y,
+ GDI_ALT_DESIGN_PRESSED, gd_pixmap, gd_x4, gd_y,
GDI_EVENT_MASK, event_mask,
GDI_CALLBACK_ACTION, HandleControlButtons,
GDI_END);
for (i=0; i<ED_NUM_SCROLLBUTTONS; i++)
{
- if (((i == ED_SCROLLBUTTON_AREA_LEFT || i == ED_SCROLLBUTTON_AREA_RIGHT) &&
+ if (((i == ED_SCROLLBUTTON_ID_AREA_LEFT ||
+ i == ED_SCROLLBUTTON_ID_AREA_RIGHT) &&
no_horizontal_scrollbar) ||
- ((i == ED_SCROLLBUTTON_AREA_UP || i == ED_SCROLLBUTTON_AREA_DOWN) &&
+ ((i == ED_SCROLLBUTTON_ID_AREA_UP ||
+ i == ED_SCROLLBUTTON_ID_AREA_DOWN) &&
no_vertical_scrollbar))
continue;
for (i=0; i<ED_NUM_SCROLLBARS; i++)
{
- if ((i == ED_SCROLLBAR_HORIZONTAL && no_horizontal_scrollbar) ||
- (i == ED_SCROLLBAR_VERTICAL && no_vertical_scrollbar))
+ if ((i == ED_SCROLLBAR_ID_HORIZONTAL && no_horizontal_scrollbar) ||
+ (i == ED_SCROLLBAR_ID_VERTICAL && no_vertical_scrollbar))
continue;
MapGadget(level_editor_gadget[scrollbar_info[i].gadget_id]);
xoffset = (ed_fieldx == MAX_ED_FIELDX ? ED_SCROLLBUTTON_XSIZE : 0);
yoffset = (ed_fieldy == MAX_ED_FIELDY ? ED_SCROLLBUTTON_YSIZE : 0);
- x = SX + scrollbutton_info[ED_SCROLLBUTTON_AREA_RIGHT].x + xoffset;
- y = SX + scrollbutton_info[ED_SCROLLBUTTON_AREA_DOWN].y + yoffset;
+ x = SX + scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_RIGHT].x + xoffset;
+ y = SX + scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_DOWN].y + yoffset;
ModifyGadget(level_editor_gadget[GADGET_ID_SCROLL_RIGHT], GDI_X, x, GDI_END);
ModifyGadget(level_editor_gadget[GADGET_ID_SCROLL_DOWN], GDI_Y, y, GDI_END);
- width = scrollbar_info[ED_SCROLLBAR_HORIZONTAL].width + xoffset;
- height = scrollbar_info[ED_SCROLLBAR_VERTICAL].height + yoffset;
+ width = scrollbar_info[ED_SCROLLBAR_ID_HORIZONTAL].width + xoffset;
+ height = scrollbar_info[ED_SCROLLBAR_ID_VERTICAL].height + yoffset;
ModifyGadget(level_editor_gadget[GADGET_ID_SCROLL_HORIZONTAL],
GDI_WIDTH, width,
}
/* draw radiobutton gadgets */
- for (i=0; i<ED_NUM_RADIOBUTTONS; i++)
+ for (i=ED_RADIOBUTTON_ID_LEVEL_FIRST; i<=ED_RADIOBUTTON_ID_LEVEL_LAST; i++)
{
boolean checked =
(*radiobutton_info[i].value == radiobutton_info[i].checked_value);
}
/* draw checkbutton gadgets */
- for (i=0; i<ED_NUM_CHECKBUTTONS; i++)
+ for (i=ED_CHECKBUTTON_ID_LEVEL_FIRST; i<=ED_CHECKBUTTON_ID_LEVEL_LAST; i++)
{
x = checkbutton_info[i].x + xoffset_right2;
y = checkbutton_info[i].y + yoffset_right2;
/* copy border to the right location */
XCopyArea(display, drawto, drawto, gc,
- area_sx, area_sy, (5 * 4 + 1) * MINI_TILEX, 12 * MINI_TILEY,
+ area_sx, area_sy, (5 * 4 + 1) * MINI_TILEX, 11 * MINI_TILEY,
area_sx - MINI_TILEX/2, area_sy - MINI_TILEY/2);
DrawText(area_sx + (5 * 4 - 1) * MINI_TILEX, area_sy + 0 * MINI_TILEY + 1,
float percentage;
int xoffset_right = counter_xsize;
int yoffset_right = ED_BORDER_SIZE;
+ int xoffset_right2 = ED_CHECKBUTTON_XSIZE + 2 * ED_GADGET_DISTANCE;
+ int yoffset_right2 = ED_BORDER_SIZE;
int xstart = 2;
int ystart = 4;
int font_color = FC_GREEN;
if (HAS_CONTENT(properties_element))
{
+
+#if 1
+ /* draw stickybutton gadget */
+ i = ED_CHECKBUTTON_ID_STICK_ELEMENT;
+ x = checkbutton_info[i].x + xoffset_right2;
+ y = checkbutton_info[i].y + yoffset_right2;
+
+ DrawTextF(x, y, font_color, checkbutton_info[i].text);
+ ModifyGadget(level_editor_gadget[checkbutton_info[i].gadget_id],
+ GDI_CHECKED, *checkbutton_info[i].value, GDI_END);
+ MapCheckbuttonGadget(i);
+#endif
+
+
if (IS_AMOEBOID(properties_element))
DrawAmoebaContentArea();
else
}
/* values for DrawLevelText() modes */
-#define TEXT_INIT 0
-#define TEXT_SETCURSOR 1
-#define TEXT_WRITECHAR 2
-#define TEXT_BACKSPACE 3
-#define TEXT_NEWLINE 4
-#define TEXT_END 5
+#define TEXT_INIT 0
+#define TEXT_SETCURSOR 1
+#define TEXT_WRITECHAR 2
+#define TEXT_BACKSPACE 3
+#define TEXT_NEWLINE 4
+#define TEXT_END 5
+#define TEXT_QUERY_TYPING 6
-static void DrawLevelText(int sx, int sy, char letter, int mode)
+static int DrawLevelText(int sx, int sy, char letter, int mode)
{
static short delete_buffer[MAX_LEV_FIELDX];
static int start_sx, start_sy;
static int last_sx, last_sy;
static boolean typing = FALSE;
int letter_element = EL_CHAR_ASCII0 + letter;
- int lx, ly;
+ int lx = 0, ly = 0;
/* map lower case letters to upper case and convert special characters */
if (letter >= 'a' && letter <= 'z')
if (mode != TEXT_INIT)
{
if (!typing)
- return;
+ return FALSE;
if (mode != TEXT_SETCURSOR)
{
if (sx > start_sx)
{
Feld[lx - 1][ly] = delete_buffer[sx - start_sx - 1];
- DrawMiniElement(sx - 1, sy, new_element3);
+ DrawMiniElement(sx - 1, sy, Feld[lx - 1][ly]);
DrawLevelText(sx - 1, sy, 0, TEXT_SETCURSOR);
}
break;
typing = FALSE;
break;
+ case TEXT_QUERY_TYPING:
+ break;
+
default:
break;
}
+
+ return typing;
}
static void SetTextCursor(int unused_sx, int unused_sy, int sx, int sy,
int sx = gi->event.x, sy = gi->event.y;
int min_sx = 0, min_sy = 0;
int max_sx = gi->drawing.area_xsize - 1, max_sy = gi->drawing.area_ysize - 1;
- int lx, ly;
+ int lx = 0, ly = 0;
int min_lx = 0, min_ly = 0;
int max_lx = lev_fieldx - 1, max_ly = lev_fieldy - 1;
int x, y;
break;
case GADGET_ID_PICK_ELEMENT:
+
+ /*
if (button_press_event)
PickDrawingElement(button, Feld[lx][ly]);
+ */
+
if (button_release_event)
ClickOnGadget(level_editor_gadget[last_drawing_function], MB_LEFT);
+ else
+ PickDrawingElement(button, Feld[lx][ly]);
+
break;
default:
break;
case GADGET_ID_RANDOM_PERCENTAGE:
- *radiobutton_info[ED_RADIOBUTTON_PERCENTAGE].value =
- radiobutton_info[ED_RADIOBUTTON_PERCENTAGE].checked_value;
+ *radiobutton_info[ED_RADIOBUTTON_ID_PERCENTAGE].value =
+ radiobutton_info[ED_RADIOBUTTON_ID_PERCENTAGE].checked_value;
break;
case GADGET_ID_RANDOM_QUANTITY:
- *radiobutton_info[ED_RADIOBUTTON_QUANTITY].value =
- radiobutton_info[ED_RADIOBUTTON_QUANTITY].checked_value;
+ *radiobutton_info[ED_RADIOBUTTON_ID_QUANTITY].value =
+ radiobutton_info[ED_RADIOBUTTON_ID_QUANTITY].checked_value;
break;
case GADGET_ID_RANDOM_RESTRICTED:
- *checkbutton_info[ED_CHECKBUTTON_RANDOM_RESTRICTED].value ^= TRUE;
+ *checkbutton_info[ED_CHECKBUTTON_ID_RANDOM_RESTRICTED].value ^= TRUE;
break;
case GADGET_ID_DOUBLE_SPEED:
- *checkbutton_info[ED_CHECKBUTTON_DOUBLE_SPEED].value ^= TRUE;
+ *checkbutton_info[ED_CHECKBUTTON_ID_DOUBLE_SPEED].value ^= TRUE;
+ break;
+
+ case GADGET_ID_STICK_ELEMENT:
+ *checkbutton_info[ED_CHECKBUTTON_ID_STICK_ELEMENT].value ^= TRUE;
break;
default:
PickDrawingElement(button, new_element);
- if (!HAS_CONTENT(properties_element))
+ if (!HAS_CONTENT(properties_element) ||
+ !stick_element_properties_window)
{
properties_element = new_element;
if (edit_mode == ED_MODE_PROPERTIES)
DrawPropertiesWindow();
}
+
+ if (drawing_function == GADGET_ID_PICK_ELEMENT)
+ ClickOnGadget(level_editor_gadget[last_drawing_function], MB_LEFT);
}
#ifdef DEBUG
else if (gi->event.type == GD_EVENT_PRESSED)
char letter = getCharFromKeySym(key);
int button = MB_LEFT;
- if (drawing_function == GADGET_ID_TEXT)
+ if (drawing_function == GADGET_ID_TEXT &&
+ DrawLevelText(0, 0, 0, TEXT_QUERY_TYPING) == TRUE)
{
if (letter)
DrawLevelText(0, 0, letter, TEXT_WRITECHAR);
int sy = gi->event.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;
break;
}
- DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FC_YELLOW,
- "%s: %d, %d", infotext,
- ABS(lx - start_lx) + 1,
- ABS(ly - start_ly) + 1);
+ if (drawing_function == GADGET_ID_PICK_ELEMENT)
+ DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FC_YELLOW,
+ "%s: %d, %d", infotext, lx, ly);
+ else
+ DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FC_YELLOW,
+ "%s: %d, %d", infotext,
+ ABS(lx - start_lx) + 1, ABS(ly - start_ly) + 1);
}
+ else if (drawing_function == GADGET_ID_PICK_ELEMENT)
+ DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FC_YELLOW,
+ "%s", element_info[Feld[lx][ly]]);
else
DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FC_YELLOW,
"Level position: %d, %d", lx, ly);
"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);
}