#define ED_GADGET_DISTANCE 2
#define ED_GADGET_TEXT_DISTANCE (2 * ED_GADGET_DISTANCE)
+#define ED_GADGET_LINE_DISTANCE (2 * ED_GADGET_DISTANCE)
#define ED_DRAWINGAREA_TEXT_DISTANCE (ED_GADGET_TEXT_DISTANCE + \
MINI_TILEX / 2)
#define ED_ELEMENT_SETTINGS_YPOS(n) (ED_ELEMENT_SETTINGS_YSTART + \
(n) * ED_SETTINGS_YOFFSET)
-#define ED_LEVEL_SETTINGS_TABS_XPOS(n) (ED_LEVEL_SETTINGS_XPOS(0) + \
- (n) * ED_SETTINGS_TAB_XOFFSET)
-#define ED_LEVEL_SETTINGS_TABS_YPOS(n) (ED_LEVEL_SETTINGS_YSTART - \
+#define ED_LEVEL_SETTINGS_TABS_YPOS (ED_LEVEL_SETTINGS_YSTART - \
3 * MINI_TILEY)
-
-#define ED_ELEMENT_SETTINGS_TABS_XPOS(n) (ED_ELEMENT_SETTINGS_XPOS(0) + \
- (n) * ED_SETTINGS_TAB_XOFFSET)
-#define ED_ELEMENT_SETTINGS_TABS_YPOS(n) (ED_ELEMENT_SETTINGS_YSTART - \
+#define ED_ELEMENT_SETTINGS_TABS_YPOS (ED_ELEMENT_SETTINGS_YSTART - \
2 * MINI_TILEY)
#define ED_SETTINGS1_YPOS MINI_TILEY
-#define ED_SETTINGS2_XPOS MINI_TILEX
-#define ED_SETTINGS2_YPOS (ED_SETTINGS1_YPOS + 12 * TILEY - 2)
-/* values for counter gadgets */
-#define ED_COUNTER_YSTART (ED_SETTINGS1_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)
+#define ED_ELEMENT_SETTINGS_ELEM_XPOS (2 * MINI_TILEX)
+#define ED_ELEMENT_SETTINGS_ELEM_YPOS (4 * MINI_TILEY + MINI_TILEY / 2)
/* values for element content drawing areas */
#define ED_AREA_1X1_SETTINGS_XPOS(n) (ED_ELEMENT_SETTINGS_XPOS(n))
6 * ((n) / 4) * MINI_TILEY)
/* values for scrolling gadgets for drawing area */
-#define ED_SCROLLBUTTON_XPOS 24
-#define ED_SCROLLBUTTON_YPOS 0
-#define ED_SCROLLBAR_XPOS 24
-#define ED_SCROLLBAR_YPOS 64
-
#define ED_SCROLLBUTTON_XSIZE 16
#define ED_SCROLLBUTTON_YSIZE 16
#define ED_SCROLL_VERTICAL_YSIZE (SYSIZE - 4 * ED_SCROLLBUTTON_YSIZE)
/* values for scrolling gadgets for element list */
-#define ED_SCROLLBUTTON2_XPOS 50
-#define ED_SCROLLBUTTON2_YPOS 0
-#define ED_SCROLLBAR2_XPOS 50
-#define ED_SCROLLBAR2_YPOS 20
-
#define ED_SCROLLBUTTON2_XSIZE (graphic_info[IMG_EDITOR_PALETTE_SCROLL_UP].width)
#define ED_SCROLLBUTTON2_YSIZE (graphic_info[IMG_EDITOR_PALETTE_SCROLL_UP].height)
2 * ED_SCROLLBUTTON2_YSIZE)
/* values for checkbutton gadgets */
-#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_CHECKED_XPOS ED_BUTTON_PLUS_XPOS
-#define ED_CHECKBUTTON_YPOS (ED_BUTTON_MINUS_YPOS + 22)
-#define ED_RADIOBUTTON_YPOS (ED_BUTTON_MINUS_YPOS + 44)
-#define ED_STICKYBUTTON_YPOS (ED_BUTTON_MINUS_YPOS + 66)
-
-/* values for some special graphic buttons */
-#define ED_COPY_CHANGE_PAGE_XPOS 25
-#define ED_COPY_CHANGE_PAGE_YPOS 50
-#define ED_PASTE_CHANGE_PAGE_XPOS 25
-#define ED_PASTE_CHANGE_PAGE_YPOS 70
-
-/* some values for text input, selectbox and counter gadgets */
-#define ED_BUTTON_COUNT_YPOS 60
-#define ED_BUTTON_COUNT_XSIZE 20
-#define ED_BUTTON_COUNT_YSIZE 20
-#define ED_WIN_COUNT_XPOS (2 + ED_BUTTON_COUNT_XSIZE + 2)
-#define ED_WIN_COUNT_YPOS ED_BUTTON_COUNT_YPOS
-#define ED_WIN_COUNT_XSIZE 52
-#define ED_WIN_COUNT_YSIZE ED_BUTTON_COUNT_YSIZE
-
-#define ED_BUTTON_MINUS_XPOS 2
-#define ED_BUTTON_MINUS_YPOS ED_BUTTON_COUNT_YPOS
-#define ED_BUTTON_MINUS_XSIZE ED_BUTTON_COUNT_XSIZE
-#define ED_BUTTON_MINUS_YSIZE ED_BUTTON_COUNT_YSIZE
-#define ED_BUTTON_PLUS_XPOS (ED_WIN_COUNT_XPOS + \
- ED_WIN_COUNT_XSIZE + 2)
-#define ED_BUTTON_PLUS_YPOS ED_BUTTON_COUNT_YPOS
-#define ED_BUTTON_PLUS_XSIZE ED_BUTTON_COUNT_XSIZE
-#define ED_BUTTON_PLUS_YSIZE ED_BUTTON_COUNT_YSIZE
-
-#define ED_SELECTBOX_XPOS ED_WIN_COUNT_XPOS
-#define ED_SELECTBOX_YPOS (ED_WIN_COUNT_YPOS + \
- 2 + ED_WIN_COUNT_YSIZE)
-#define ED_SELECTBOX_XSIZE ED_WIN_COUNT_XSIZE
-#define ED_SELECTBOX_YSIZE ED_WIN_COUNT_YSIZE
-
-#define ED_SELECTBOX_BUTTON_XSIZE 14
-
-#define ED_TEXTBUTTON_XPOS ED_WIN_COUNT_XPOS
-#define ED_TEXTBUTTON_YPOS (ED_WIN_COUNT_YPOS + \
- 4 * (2 + ED_WIN_COUNT_YSIZE))
-#define ED_TEXTBUTTON_INACTIVE_YPOS ED_TEXTBUTTON_YPOS
-
-#define ED_TEXTBUTTON_TAB_XPOS ED_WIN_COUNT_XPOS
-#define ED_TEXTBUTTON_TAB_YPOS (ED_WIN_COUNT_YPOS + \
- 2 * (2 + ED_WIN_COUNT_YSIZE))
-#define ED_TEXTBUTTON_TAB_INACTIVE_YPOS (ED_WIN_COUNT_YPOS + \
- 3 * (2 + ED_WIN_COUNT_YSIZE))
-
-#define ED_TEXTBUTTON_XSIZE ED_WIN_COUNT_XSIZE
-#define ED_TEXTBUTTON_YSIZE ED_WIN_COUNT_YSIZE
+#define ED_CHECKBUTTON_XSIZE 20
+#define ED_CHECKBUTTON_YSIZE 20
/* values for ClearEditorGadgetInfoText() and HandleEditorGadgetInfoText() */
#define INFOTEXT_XPOS SX
"Author:", "Author"
},
{
- 5 * MINI_TILEX - 2, 5 * MINI_TILEY - ED_BORDER_SIZE + 1,
+ -1, -1, /* these values are not constant, but can change at runtime */
GADGET_ID_ELEMENT_NAME,
MAX_ELEMENT_NAME_LEN - 2, /* currently 2 chars less editable */
custom_element.description,
} textbutton_info[ED_NUM_TEXTBUTTONS] =
{
{
- ED_LEVEL_SETTINGS_TABS_XPOS(0), ED_LEVEL_SETTINGS_TABS_YPOS(0),
+ ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_TABS_YPOS,
GADGET_ID_LEVELINFO_LEVEL, GADGET_ID_NONE,
8, "Level",
NULL, NULL, "Configure level properties"
},
{
- ED_LEVEL_SETTINGS_TABS_XPOS(1), ED_LEVEL_SETTINGS_TABS_YPOS(0),
- GADGET_ID_LEVELINFO_EDITOR, GADGET_ID_NONE,
+ -1, -1,
+ GADGET_ID_LEVELINFO_EDITOR, GADGET_ID_LEVELINFO_LEVEL,
8, "Editor",
NULL, NULL, "Configure editor properties"
},
{
- ED_ELEMENT_SETTINGS_TABS_XPOS(0), ED_ELEMENT_SETTINGS_TABS_YPOS(0),
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_TABS_YPOS,
GADGET_ID_PROPERTIES_INFO, GADGET_ID_NONE,
8, "Info",
NULL, NULL, "Show information about element"
},
{
- ED_ELEMENT_SETTINGS_TABS_XPOS(1), ED_ELEMENT_SETTINGS_TABS_YPOS(0),
- GADGET_ID_PROPERTIES_CONFIG, GADGET_ID_NONE,
+ -1, -1,
+ GADGET_ID_PROPERTIES_CONFIG, GADGET_ID_PROPERTIES_INFO,
8, "Config",
NULL, NULL, "Configure element properties"
},
{
- ED_ELEMENT_SETTINGS_TABS_XPOS(1), ED_ELEMENT_SETTINGS_TABS_YPOS(0),
- GADGET_ID_PROPERTIES_CONFIG_1, GADGET_ID_NONE,
+ -1, -1,
+ GADGET_ID_PROPERTIES_CONFIG_1, GADGET_ID_PROPERTIES_INFO,
8, "Config 1",
NULL, NULL, "Configure element properties, part 1"
},
{
- ED_ELEMENT_SETTINGS_TABS_XPOS(2), ED_ELEMENT_SETTINGS_TABS_YPOS(0),
- GADGET_ID_PROPERTIES_CONFIG_2, GADGET_ID_NONE,
+ -1, -1,
+ GADGET_ID_PROPERTIES_CONFIG_2, GADGET_ID_PROPERTIES_CONFIG_1,
8, "Config 2",
NULL, NULL, "Configure element properties, part 2"
},
{
- ED_ELEMENT_SETTINGS_TABS_XPOS(3), ED_ELEMENT_SETTINGS_TABS_YPOS(0),
- GADGET_ID_PROPERTIES_CHANGE, GADGET_ID_NONE,
+ -1, -1,
+ GADGET_ID_PROPERTIES_CHANGE, GADGET_ID_PROPERTIES_CONFIG_2,
8, "Change",
NULL, NULL, "Configure custom element change pages"
},
{
- -1, ED_ELEMENT_SETTINGS_YPOS(14),
+ -1, -1,
GADGET_ID_SAVE_AS_TEMPLATE, GADGET_ID_CUSTOM_USE_TEMPLATE,
-1, "Save",
" ", "As Template", "Save current settings as new template"
},
{
- -1, ED_ELEMENT_SETTINGS_YPOS(14),
+ -1, -1,
GADGET_ID_ADD_CHANGE_PAGE, GADGET_ID_PASTE_CHANGE_PAGE,
-1, "New",
NULL, NULL, "Add new change page"
},
{
- -1, ED_ELEMENT_SETTINGS_YPOS(14),
+ -1, -1,
GADGET_ID_DEL_CHANGE_PAGE, GADGET_ID_ADD_CHANGE_PAGE,
-1, "Delete",
NULL, NULL, "Delete current change page"
static struct
{
- int gd_x, gd_y;
+ int graphic;
int x, y;
- int width, height;
int gadget_id;
int gadget_id_align;
char *text_left, *text_right, *infotext;
} graphicbutton_info[ED_NUM_GRAPHICBUTTONS] =
{
{
- ED_BUTTON_MINUS_XPOS, ED_BUTTON_COUNT_YPOS,
+ IMG_EDITOR_COUNTER_DOWN,
ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(14),
- ED_BUTTON_COUNT_XSIZE, ED_BUTTON_COUNT_YSIZE,
GADGET_ID_PREV_CHANGE_PAGE, GADGET_ID_NONE,
NULL, NULL, "select previous change page"
},
{
- ED_BUTTON_PLUS_XPOS, ED_BUTTON_COUNT_YPOS,
+ IMG_EDITOR_COUNTER_UP,
-1, ED_ELEMENT_SETTINGS_YPOS(14),
- ED_BUTTON_COUNT_XSIZE, ED_BUTTON_COUNT_YSIZE,
GADGET_ID_NEXT_CHANGE_PAGE, GADGET_ID_SELECT_CHANGE_PAGE,
NULL, "change page", "select next change page"
},
{
- ED_COPY_CHANGE_PAGE_XPOS, ED_COPY_CHANGE_PAGE_YPOS,
+ IMG_EDITOR_BUTTON_GFX_CP_COPY,
-1, ED_ELEMENT_SETTINGS_YPOS(14),
- ED_BUTTON_COUNT_XSIZE, ED_BUTTON_COUNT_YSIZE,
GADGET_ID_COPY_CHANGE_PAGE, GADGET_ID_NEXT_CHANGE_PAGE,
" ", NULL, "copy settings from this change page"
},
{
- ED_PASTE_CHANGE_PAGE_XPOS, ED_PASTE_CHANGE_PAGE_YPOS,
+ IMG_EDITOR_BUTTON_GFX_CP_PASTE,
-1, ED_ELEMENT_SETTINGS_YPOS(14),
- ED_BUTTON_COUNT_XSIZE, ED_BUTTON_COUNT_YSIZE,
GADGET_ID_PASTE_CHANGE_PAGE, GADGET_ID_COPY_CHANGE_PAGE,
NULL, NULL, "paste settings to this change page"
},
#define BUTTON_ELEMENT(button) ((button) == 1 ? new_element1 : \
(button) == 2 ? new_element2 : \
(button) == 3 ? new_element3 : EL_EMPTY)
-#define BUTTON_STEPSIZE(button) ((button) == 1 ? 1 : (button) == 2 ? 5 : 10)
+#define BUTTON_STEPSIZE(button) ((button) == 1 ? 1 : \
+ (button) == 2 ? 5 : \
+ (button) == 3 ? 10 : \
+ (button))
/* forward declaration for internal use */
static void ModifyEditorCounterValue(int, int);
int graphic = controlbutton_info[i].graphic;
struct XY *pos = controlbutton_info[i].pos;
struct GraphicInfo *gd = &graphic_info[graphic];
- Bitmap *gd_bitmap = gd->bitmap;
int gd_x1 = gd->src_x;
int gd_y1 = gd->src_y;
int gd_x2 = gd->src_x + gd->pressed_xoffset;
int gd_y1a = gd->src_y + gd->active_yoffset;
int gd_x2a = gd->src_x + gd->active_xoffset + gd->pressed_xoffset;
int gd_y2a = gd->src_y + gd->active_yoffset + gd->pressed_yoffset;
- int width = gd->width;
- int height = gd->height;
int x = pos->x;
int y = pos->y;
unsigned int event_mask;
GDI_INFO_TEXT, controlbutton_info[i].infotext,
GDI_X, x,
GDI_Y, y,
- GDI_WIDTH, width,
- GDI_HEIGHT, height,
+ GDI_WIDTH, gd->width,
+ GDI_HEIGHT, gd->height,
GDI_TYPE, type,
GDI_STATE, GD_BUTTON_UNPRESSED,
GDI_RADIO_NR, radio_button_nr,
GDI_CHECKED, checked,
- GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x1, gd_y1,
- GDI_DESIGN_PRESSED, gd_bitmap, gd_x2, gd_y2,
- GDI_ALT_DESIGN_UNPRESSED, gd_bitmap, gd_x1a, gd_y1a,
- GDI_ALT_DESIGN_PRESSED, gd_bitmap, gd_x2a, gd_y2a,
+ GDI_DESIGN_UNPRESSED, gd->bitmap, gd_x1, gd_y1,
+ GDI_DESIGN_PRESSED, gd->bitmap, gd_x2, gd_y2,
+ GDI_ALT_DESIGN_UNPRESSED, gd->bitmap, gd_x1a, gd_y1a,
+ GDI_ALT_DESIGN_PRESSED, gd->bitmap, gd_x2a, gd_y2a,
GDI_EVENT_MASK, event_mask,
GDI_CALLBACK_INFO, HandleEditorGadgetInfoText,
GDI_CALLBACK_ACTION, HandleControlButtons,
for (j = 0; j < 2; j++)
{
- Bitmap *gd_bitmap = graphic_info[IMG_GLOBAL_DOOR].bitmap;
struct GadgetInfo *gi;
int id = (j == 0 ?
counterbutton_info[i].gadget_id_down :
counterbutton_info[i].gadget_id_up);
- int gd_xoffset;
- int gd_x, gd_y, gd_x1, gd_x2, gd_y1, gd_y2;
- int x_size, y_size;
+ int graphic;
+ struct GraphicInfo *gd;
+ int gd_x1, gd_x2, gd_y1, gd_y2;
unsigned int event_mask;
char infotext[max_infotext_len + 1];
if (i == ED_COUNTER_ID_SELECT_LEVEL)
{
- int graphic = (j == 0 ?
- IMG_EDITOR_BUTTON_GFX_PREV_LEVEL :
- IMG_EDITOR_BUTTON_GFX_NEXT_LEVEL);
- struct GraphicInfo *gd = &graphic_info[graphic];
-
- gd_bitmap = gd->bitmap;
+ graphic = (j == 0 ?
+ IMG_EDITOR_BUTTON_GFX_PREV_LEVEL :
+ IMG_EDITOR_BUTTON_GFX_NEXT_LEVEL);
event_mask |= GD_EVENT_RELEASED;
x = DX + editor.button.next_level.x;
y = DY + editor.button.next_level.y;
}
-
- gd_x1 = gd->src_x;
- gd_y1 = gd->src_y;
- gd_x2 = gd->src_x + gd->pressed_xoffset;
- gd_y2 = gd->src_y + gd->pressed_yoffset;
- x_size = gd->width;
- y_size = gd->height;
}
else
{
- gd_xoffset = (j == 0 ? ED_BUTTON_MINUS_XPOS : ED_BUTTON_PLUS_XPOS);
- gd_x1 = DOOR_GFX_PAGEX4 + gd_xoffset;
- gd_x2 = DOOR_GFX_PAGEX3 + gd_xoffset;
- gd_y1 = DOOR_GFX_PAGEY1 + ED_BUTTON_COUNT_YPOS;
- gd_y2 = gd_y1;
- x_size = ED_BUTTON_COUNT_XSIZE;
- y_size = ED_BUTTON_COUNT_YSIZE;
+ graphic = (j == 0 ?
+ IMG_EDITOR_COUNTER_DOWN :
+ IMG_EDITOR_COUNTER_UP);
}
+ gd = &graphic_info[graphic];
+
+ gd_x1 = gd->src_x;
+ gd_y1 = gd->src_y;
+ gd_x2 = gd->src_x + gd->pressed_xoffset;
+ gd_y2 = gd->src_y + gd->pressed_yoffset;
+
sprintf(infotext, "%s counter value by 1, 5 or 10",
(j == 0 ? "decrease" : "increase"));
GDI_INFO_TEXT, infotext,
GDI_X, x,
GDI_Y, y,
- GDI_WIDTH, x_size,
- GDI_HEIGHT, y_size,
+ GDI_WIDTH, gd->width,
+ GDI_HEIGHT, gd->height,
GDI_TYPE, GD_TYPE_NORMAL_BUTTON,
GDI_STATE, GD_BUTTON_UNPRESSED,
- GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x1, gd_y1,
- GDI_DESIGN_PRESSED, gd_bitmap, gd_x2, gd_y2,
+ GDI_DESIGN_UNPRESSED, gd->bitmap, gd_x1, gd_y1,
+ GDI_DESIGN_PRESSED, gd->bitmap, gd_x2, gd_y2,
GDI_EVENT_MASK, event_mask,
GDI_CALLBACK_INFO, HandleEditorGadgetInfoText,
GDI_CALLBACK_ACTION, HandleCounterButtons,
{
int font_type = FONT_INPUT_1;
int font_type_active = FONT_INPUT_1_ACTIVE;
- int gd_width = ED_WIN_COUNT_XSIZE;
- int border_size = ED_BORDER_SIZE;
id = counterbutton_info[i].gadget_id_text;
+
event_mask = GD_EVENT_TEXT_RETURN | GD_EVENT_TEXT_LEAVING;
if (i == ED_COUNTER_ID_SELECT_LEVEL)
{
- int graphic = IMG_EDITOR_INPUT_GFX_LEVEL_NUMBER;
- struct GraphicInfo *gd = &graphic_info[graphic];
+ graphic = IMG_EDITOR_INPUT_GFX_LEVEL_NUMBER;
- gd_bitmap = gd->bitmap;
+ font_type = FONT_LEVEL_NUMBER;
+ font_type_active = FONT_LEVEL_NUMBER_ACTIVE;
x = DX + editor.input.level_number.x;
y = DY + editor.input.level_number.y;
-
- gd_x = gd->src_x;
- gd_y = gd->src_y;
- gd_width = gd->width;
- border_size = gd->border_size;
-
- font_type = FONT_LEVEL_NUMBER;
- font_type_active = FONT_LEVEL_NUMBER_ACTIVE;
}
else
{
- gd_x = DOOR_GFX_PAGEX4 + ED_WIN_COUNT_XPOS;
- gd_y = DOOR_GFX_PAGEY1 + ED_WIN_COUNT_YPOS;
+ graphic = IMG_EDITOR_COUNTER_INPUT;
}
+ gd = &graphic_info[graphic];
+
+ gd_x1 = gd->src_x;
+ gd_y1 = gd->src_y;
+ gd_x2 = gd->src_x + gd->active_xoffset;
+ gd_y2 = gd->src_y + gd->active_yoffset;
+
gi = CreateGadget(GDI_CUSTOM_ID, id,
GDI_CUSTOM_TYPE_ID, i,
GDI_INFO_TEXT, "enter counter value",
GDI_TEXT_SIZE, 3, /* minimal counter text size */
GDI_TEXT_FONT, font_type,
GDI_TEXT_FONT_ACTIVE, font_type_active,
- GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x, gd_y,
- GDI_DESIGN_PRESSED, gd_bitmap, gd_x, gd_y,
- GDI_BORDER_SIZE, border_size, border_size,
- GDI_DESIGN_WIDTH, gd_width,
+ GDI_DESIGN_UNPRESSED, gd->bitmap, gd_x1, gd_y1,
+ GDI_DESIGN_PRESSED, gd->bitmap, gd_x2, gd_y2,
+ GDI_BORDER_SIZE, gd->border_size, gd->border_size,
+ GDI_DESIGN_WIDTH, gd->width,
GDI_EVENT_MASK, event_mask,
GDI_CALLBACK_INFO, HandleEditorGadgetInfoText,
GDI_CALLBACK_ACTION, HandleCounterButtons,
static void CreateTextInputGadgets()
{
+ struct GraphicInfo *gd = &graphic_info[IMG_EDITOR_INPUT_TEXT];
+ int border_size = gd->border_size;
+ int font_nr = FONT_INPUT_1;
+ int font_height = getFontHeight(font_nr);
+ int x = ED_ELEMENT_SETTINGS_ELEM_XPOS;
+ int y = ED_ELEMENT_SETTINGS_ELEM_YPOS;
+ int xoffset = TILEX + ED_ELEMENT_BORDER + 3 * border_size;
+ int yoffset = (TILEY - font_height) / 2;
int max_infotext_len = getMaxInfoTextLength();
int i;
+ /* these values are not constant, but can change at runtime */
+ textinput_info[ED_TEXTINPUT_ID_ELEMENT_NAME].x = x + xoffset - border_size;
+ textinput_info[ED_TEXTINPUT_ID_ELEMENT_NAME].y = y + yoffset - border_size;
+
for (i = 0; i < ED_NUM_TEXTINPUT; i++)
{
- Bitmap *gd_bitmap = graphic_info[IMG_GLOBAL_DOOR].bitmap;
- int gd_x, gd_y;
+ int gd_x1 = gd->src_x;
+ int gd_y1 = gd->src_y;
+ int gd_x2 = gd->src_x + gd->active_xoffset;
+ int gd_y2 = gd->src_y + gd->active_yoffset;
struct GadgetInfo *gi;
unsigned int event_mask;
char infotext[MAX_OUTPUT_LINESIZE + 1];
event_mask = GD_EVENT_TEXT_RETURN | GD_EVENT_TEXT_LEAVING;
- gd_x = DOOR_GFX_PAGEX4 + ED_WIN_COUNT_XPOS;
- gd_y = DOOR_GFX_PAGEY1 + ED_WIN_COUNT_YPOS;
-
sprintf(infotext, "Enter %s", textinput_info[i].infotext);
infotext[max_infotext_len] = '\0';
GDI_TEXT_SIZE, textinput_info[i].size,
GDI_TEXT_FONT, FONT_INPUT_1,
GDI_TEXT_FONT_ACTIVE, FONT_INPUT_1_ACTIVE,
- GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x, gd_y,
- GDI_DESIGN_PRESSED, gd_bitmap, gd_x, gd_y,
- GDI_BORDER_SIZE, ED_BORDER_SIZE, ED_BORDER_SIZE,
- GDI_DESIGN_WIDTH, ED_WIN_COUNT_XSIZE,
+ GDI_DESIGN_UNPRESSED, gd->bitmap, gd_x1, gd_y1,
+ GDI_DESIGN_PRESSED, gd->bitmap, gd_x2, gd_y2,
+ GDI_BORDER_SIZE, gd->border_size, gd->border_size,
+ GDI_DESIGN_WIDTH, gd->width,
GDI_EVENT_MASK, event_mask,
GDI_CALLBACK_INFO, HandleEditorGadgetInfoText,
GDI_CALLBACK_ACTION, HandleTextInputGadgets,
for (i = 0; i < ED_NUM_TEXTAREAS; i++)
{
- Bitmap *gd_bitmap = graphic_info[IMG_GLOBAL_DOOR].bitmap;
- int gd_x, gd_y;
+ struct GraphicInfo *gd = &graphic_info[IMG_EDITOR_INPUT_TEXTAREA];
+ int gd_x1 = gd->src_x;
+ int gd_y1 = gd->src_y;
+ int gd_x2 = gd->src_x + gd->active_xoffset;
+ int gd_y2 = gd->src_y + gd->active_yoffset;
struct GadgetInfo *gi;
unsigned int event_mask;
char infotext[MAX_OUTPUT_LINESIZE + 1];
event_mask = GD_EVENT_TEXT_LEAVING;
- gd_x = DOOR_GFX_PAGEX4 + ED_WIN_COUNT_XPOS;
- gd_y = DOOR_GFX_PAGEY1 + ED_WIN_COUNT_YPOS;
-
sprintf(infotext, "Enter %s", textarea_info[i].infotext);
infotext[max_infotext_len] = '\0';
GDI_AREA_SIZE, area_xsize, area_ysize,
GDI_TEXT_FONT, FONT_INPUT_1,
GDI_TEXT_FONT_ACTIVE, FONT_INPUT_1_ACTIVE,
- GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x, gd_y,
- GDI_DESIGN_PRESSED, gd_bitmap, gd_x, gd_y,
- GDI_BORDER_SIZE, ED_BORDER_SIZE, ED_BORDER_SIZE,
- GDI_DESIGN_WIDTH, ED_WIN_COUNT_XSIZE,
+ GDI_DESIGN_UNPRESSED, gd->bitmap, gd_x1, gd_y1,
+ GDI_DESIGN_PRESSED, gd->bitmap, gd_x2, gd_y2,
+ GDI_BORDER_SIZE, gd->border_size, gd->border_size,
+ GDI_DESIGN_WIDTH, gd->width,
GDI_EVENT_MASK, event_mask,
GDI_CALLBACK_INFO, HandleEditorGadgetInfoText,
GDI_CALLBACK_ACTION, HandleTextAreaGadgets,
for (i = 0; i < ED_NUM_SELECTBOX; i++)
{
- Bitmap *gd_bitmap = graphic_info[IMG_GLOBAL_DOOR].bitmap;
- int gd_x, gd_y;
+ struct GraphicInfo *gd = &graphic_info[IMG_EDITOR_SELECTBOX_INPUT];
+ struct GraphicInfo *gd2 = &graphic_info[IMG_EDITOR_SELECTBOX_BUTTON];
+ int gd_x1 = gd->src_x;
+ int gd_y1 = gd->src_y;
+ int gd_x2 = gd->src_x + gd->active_xoffset;
+ int gd_y2 = gd->src_y + gd->active_yoffset;
+ int selectbox_button_xsize = gd2->width;
struct GadgetInfo *gi;
unsigned int event_mask;
char infotext[MAX_OUTPUT_LINESIZE + 1];
event_mask = GD_EVENT_RELEASED |
GD_EVENT_TEXT_RETURN | GD_EVENT_TEXT_LEAVING;
- gd_x = DOOR_GFX_PAGEX4 + ED_SELECTBOX_XPOS;
- gd_y = DOOR_GFX_PAGEY1 + ED_SELECTBOX_YPOS;
-
/* determine horizontal position to the right of specified gadget */
if (selectbox_info[i].gadget_id_align != GADGET_ID_NONE)
x = (right_gadget_border[selectbox_info[i].gadget_id_align] +
GDI_TEXT_FONT, FONT_INPUT_1,
GDI_TEXT_FONT_ACTIVE, FONT_INPUT_1_ACTIVE,
GDI_TEXT_FONT_UNSELECTABLE, FONT_TEXT_1,
- GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x, gd_y,
- GDI_DESIGN_PRESSED, gd_bitmap, gd_x, gd_y,
- GDI_BORDER_SIZE, ED_BORDER_SIZE, ED_BORDER_SIZE,
- GDI_BORDER_SIZE_SELECTBUTTON, ED_SELECTBOX_BUTTON_XSIZE,
- GDI_DESIGN_WIDTH, ED_WIN_COUNT_XSIZE,
+ GDI_DESIGN_UNPRESSED, gd->bitmap, gd_x1, gd_y1,
+ GDI_DESIGN_PRESSED, gd->bitmap, gd_x2, gd_y2,
+ GDI_BORDER_SIZE, gd->border_size, gd->border_size,
+ GDI_BORDER_SIZE_SELECTBUTTON, selectbox_button_xsize,
+ GDI_DESIGN_WIDTH, gd->width,
GDI_EVENT_MASK, event_mask,
GDI_CALLBACK_INFO, HandleEditorGadgetInfoText,
GDI_CALLBACK_ACTION, HandleSelectboxGadgets,
for (i = 0; i < ED_NUM_TEXTBUTTONS; i++)
{
- Bitmap *gd_bitmap = graphic_info[IMG_GLOBAL_DOOR].bitmap;
- int gd_x1, gd_x2, gd_y1, gd_y2;
+ int id = textbutton_info[i].gadget_id;
+ int is_tab_button =
+ ((id >= GADGET_ID_LEVELINFO_LEVEL && id <= GADGET_ID_LEVELINFO_EDITOR) ||
+ (id >= GADGET_ID_PROPERTIES_INFO && id <= GADGET_ID_PROPERTIES_CHANGE));
+ int graphic =
+ (is_tab_button ? IMG_EDITOR_TABBUTTON : IMG_EDITOR_TEXTBUTTON);
+ int gadget_distance =
+ (is_tab_button ? ED_GADGET_DISTANCE : ED_GADGET_TEXT_DISTANCE);
+ struct GraphicInfo *gd = &graphic_info[graphic];
+ int gd_x1 = gd->src_x;
+ int gd_y1 = gd->src_y;
+ int gd_x2 = gd->src_x + gd->pressed_xoffset;
+ int gd_y2 = gd->src_y + gd->pressed_yoffset;
+ int gd_x1a = gd->src_x + gd->active_xoffset;
+ int gd_y1a = gd->src_y + gd->active_yoffset;
+ int border_xsize = gd->border_size + gd->draw_xoffset;
+ int border_ysize = gd->border_size;
struct GadgetInfo *gi;
unsigned int event_mask;
char infotext[MAX_OUTPUT_LINESIZE + 1];
- int id = textbutton_info[i].gadget_id;
int x = SX + textbutton_info[i].x;
int y = SY + textbutton_info[i].y;
event_mask = GD_EVENT_RELEASED;
- if ((id >= GADGET_ID_LEVELINFO_LEVEL && id <= GADGET_ID_LEVELINFO_EDITOR) ||
- (id >= GADGET_ID_PROPERTIES_INFO && id <= GADGET_ID_PROPERTIES_CHANGE))
- {
- gd_x1 = DOOR_GFX_PAGEX4 + ED_TEXTBUTTON_TAB_XPOS;
- gd_x2 = DOOR_GFX_PAGEX3 + ED_TEXTBUTTON_TAB_XPOS;
- gd_y1 = DOOR_GFX_PAGEY1 + ED_TEXTBUTTON_TAB_YPOS;
- gd_y2 = DOOR_GFX_PAGEY1 + ED_TEXTBUTTON_TAB_INACTIVE_YPOS;
- }
- else
- {
- gd_x1 = DOOR_GFX_PAGEX4 + ED_TEXTBUTTON_XPOS;
- gd_x2 = DOOR_GFX_PAGEX3 + ED_TEXTBUTTON_XPOS;
- gd_y1 = DOOR_GFX_PAGEY1 + ED_TEXTBUTTON_YPOS;
- gd_y2 = DOOR_GFX_PAGEY1 + ED_TEXTBUTTON_INACTIVE_YPOS;
- }
-
sprintf(infotext, "%s", textbutton_info[i].infotext);
infotext[max_infotext_len] = '\0';
/* determine horizontal position to the right of specified gadget */
if (textbutton_info[i].gadget_id_align != GADGET_ID_NONE)
- x = (right_gadget_border[textbutton_info[i].gadget_id_align] +
- ED_GADGET_TEXT_DISTANCE);
+ {
+ int gadget_id_align = textbutton_info[i].gadget_id_align;
+
+ x = right_gadget_border[gadget_id_align] + gadget_distance;
+
+ if (textbutton_info[i].y == -1)
+ y = level_editor_gadget[gadget_id_align]->y;
+ }
/* determine horizontal offset for leading text */
if (textbutton_info[i].text_left != NULL)
GDI_TYPE, GD_TYPE_TEXT_BUTTON,
GDI_TEXT_VALUE, textbutton_info[i].text,
GDI_TEXT_SIZE, textbutton_info[i].size,
- GDI_TEXT_FONT, FONT_INPUT_2_ACTIVE,
- GDI_TEXT_FONT_ACTIVE, FONT_INPUT_2,
- GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x1, gd_y1,
- GDI_DESIGN_PRESSED, gd_bitmap, gd_x2, gd_y1,
- GDI_ALT_DESIGN_UNPRESSED, gd_bitmap, gd_x1, gd_y2,
- GDI_BORDER_SIZE, ED_BORDER_TEXT_XSIZE, ED_BORDER_SIZE,
- GDI_DESIGN_WIDTH, ED_WIN_COUNT_XSIZE,
+ GDI_TEXT_FONT, FONT_INPUT_2,
+ GDI_TEXT_FONT_ACTIVE, FONT_INPUT_2_ACTIVE,
+ GDI_DESIGN_UNPRESSED, gd->bitmap, gd_x1, gd_y1,
+ GDI_DESIGN_PRESSED, gd->bitmap, gd_x2, gd_y2,
+ GDI_ALT_DESIGN_UNPRESSED, gd->bitmap, gd_x1a, gd_y1a,
+ GDI_BORDER_SIZE, border_xsize, border_ysize,
+ GDI_DESIGN_WIDTH, gd->width,
GDI_DECORATION_SHIFTING, 1, 1,
GDI_EVENT_MASK, event_mask,
GDI_CALLBACK_INFO, HandleEditorGadgetInfoText,
static void CreateGraphicbuttonGadgets()
{
- Bitmap *gd_bitmap = graphic_info[IMG_GLOBAL_DOOR].bitmap;
struct GadgetInfo *gi;
unsigned int event_mask;
int i;
for (i = 0; i < ED_NUM_GRAPHICBUTTONS; i++)
{
int id = graphicbutton_info[i].gadget_id;
- int gd_x1, gd_x2, gd_y1, gd_y2;
int x = SX + graphicbutton_info[i].x;
int y = SY + graphicbutton_info[i].y;
+ struct GraphicInfo *gd = &graphic_info[graphicbutton_info[i].graphic];
+ int gd_x1 = gd->src_x;
+ int gd_y1 = gd->src_y;
+ int gd_x2 = gd->src_x + gd->pressed_xoffset;
+ int gd_y2 = gd->src_y + gd->pressed_yoffset;
event_mask = GD_EVENT_PRESSED | GD_EVENT_REPEATED;
- if (i <= ED_GRAPHICBUTTON_ID_NEXT_CHANGE_PAGE)
- {
- gd_x1 = DOOR_GFX_PAGEX4 + graphicbutton_info[i].gd_x;
- gd_y1 = DOOR_GFX_PAGEY1 + graphicbutton_info[i].gd_y;
- gd_x2 = DOOR_GFX_PAGEX3 + graphicbutton_info[i].gd_x;
- gd_y2 = gd_y1;
- }
- else /* (i <= ED_GRAPHICBUTTON_ID_PASTE_CHANGE_PAGE) */
- {
- gd_x1 = DOOR_GFX_PAGEX6 + graphicbutton_info[i].gd_x;
- gd_y1 = DOOR_GFX_PAGEY1 + graphicbutton_info[i].gd_y;
- gd_x2 = gd_x1 - ED_BUTTON_COUNT_XSIZE;
- gd_y2 = gd_y1;
- }
-
/* determine horizontal position to the right of specified gadget */
if (graphicbutton_info[i].gadget_id_align != GADGET_ID_NONE)
x = (right_gadget_border[graphicbutton_info[i].gadget_id_align] +
GDI_INFO_TEXT, graphicbutton_info[i].infotext,
GDI_X, x,
GDI_Y, y,
- GDI_WIDTH, graphicbutton_info[i].width,
- GDI_HEIGHT, graphicbutton_info[i].height,
+ GDI_WIDTH, gd->width,
+ GDI_HEIGHT, gd->height,
GDI_TYPE, GD_TYPE_NORMAL_BUTTON,
GDI_STATE, GD_BUTTON_UNPRESSED,
- GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x1, gd_y1,
- GDI_DESIGN_PRESSED, gd_bitmap, gd_x2, gd_y2,
+ GDI_DESIGN_UNPRESSED, gd->bitmap, gd_x1, gd_y1,
+ GDI_DESIGN_PRESSED, gd->bitmap, gd_x2, gd_y2,
GDI_EVENT_MASK, event_mask,
GDI_CALLBACK_INFO, HandleEditorGadgetInfoText,
GDI_CALLBACK_ACTION, HandleGraphicbuttonGadgets,
static void CreateCheckbuttonGadgets()
{
- Bitmap *gd_bitmap = graphic_info[IMG_GLOBAL_DOOR].bitmap;
struct GadgetInfo *gi;
unsigned int event_mask;
- int gd_x1, gd_x2, gd_x3, gd_x4, gd_y;
int i;
event_mask = GD_EVENT_PRESSED;
- gd_x1 = DOOR_GFX_PAGEX4 + ED_CHECKBUTTON_UNCHECKED_XPOS;
- 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_y = DOOR_GFX_PAGEY1 + ED_RADIOBUTTON_YPOS;
-
for (i = 0; i < ED_NUM_CHECKBUTTONS; i++)
{
int id = checkbutton_info[i].gadget_id;
+ int graphic = (id == GADGET_ID_STICK_ELEMENT ? IMG_EDITOR_STICKYBUTTON :
+ IMG_EDITOR_CHECKBOX);
+ struct GraphicInfo *gd = &graphic_info[graphic];
+ int gd_x1 = gd->src_x;
+ int gd_y1 = gd->src_y;
+ int gd_x2 = gd->src_x + gd->pressed_xoffset;
+ int gd_y2 = gd->src_y + gd->pressed_yoffset;
+ int gd_x1a = gd->src_x + gd->active_xoffset;
+ int gd_y1a = gd->src_y + gd->active_yoffset;
+ int gd_x2a = gd->src_x + gd->active_xoffset + gd->pressed_xoffset;
+ int gd_y2a = gd->src_y + gd->active_yoffset + gd->pressed_yoffset;
int x = SX + checkbutton_info[i].x;
int y = SY + checkbutton_info[i].y;
- if (id == GADGET_ID_STICK_ELEMENT)
- gd_y = DOOR_GFX_PAGEY1 + ED_STICKYBUTTON_YPOS;
- else
- gd_y = DOOR_GFX_PAGEY1 + ED_CHECKBUTTON_YPOS;
-
/* determine horizontal position to the right of specified gadget */
if (checkbutton_info[i].gadget_id_align != GADGET_ID_NONE)
x = (right_gadget_border[checkbutton_info[i].gadget_id_align] +
GDI_INFO_TEXT, checkbutton_info[i].infotext,
GDI_X, x,
GDI_Y, y,
- GDI_WIDTH, ED_CHECKBUTTON_XSIZE,
- GDI_HEIGHT, ED_CHECKBUTTON_YSIZE,
+ GDI_WIDTH, gd->width,
+ GDI_HEIGHT, gd->height,
GDI_TYPE, GD_TYPE_CHECK_BUTTON,
GDI_CHECKED, *checkbutton_info[i].value,
- GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x1, gd_y,
- GDI_DESIGN_PRESSED, gd_bitmap, gd_x2, gd_y,
- GDI_ALT_DESIGN_UNPRESSED, gd_bitmap, gd_x3, gd_y,
- GDI_ALT_DESIGN_PRESSED, gd_bitmap, gd_x4, gd_y,
+ GDI_DESIGN_UNPRESSED, gd->bitmap, gd_x1, gd_y1,
+ GDI_DESIGN_PRESSED, gd->bitmap, gd_x2, gd_y2,
+ GDI_ALT_DESIGN_UNPRESSED, gd->bitmap, gd_x1a, gd_y1a,
+ GDI_ALT_DESIGN_PRESSED, gd->bitmap, gd_x2a, gd_y2a,
GDI_EVENT_MASK, event_mask,
GDI_CALLBACK_INFO, HandleEditorGadgetInfoText,
GDI_CALLBACK_ACTION, HandleCheckbuttons,
static void CreateRadiobuttonGadgets()
{
- Bitmap *gd_bitmap = graphic_info[IMG_GLOBAL_DOOR].bitmap;
+ struct GraphicInfo *gd = &graphic_info[IMG_EDITOR_RADIOBUTTON];
+ int gd_x1 = gd->src_x;
+ int gd_y1 = gd->src_y;
+ int gd_x2 = gd->src_x + gd->pressed_xoffset;
+ int gd_y2 = gd->src_y + gd->pressed_yoffset;
+ int gd_x1a = gd->src_x + gd->active_xoffset;
+ int gd_y1a = gd->src_y + gd->active_yoffset;
+ int gd_x2a = gd->src_x + gd->active_xoffset + gd->pressed_xoffset;
+ int gd_y2a = gd->src_y + gd->active_yoffset + gd->pressed_yoffset;
struct GadgetInfo *gi;
unsigned int event_mask;
- int gd_x1, gd_x2, gd_x3, gd_x4, gd_y;
int i;
event_mask = GD_EVENT_PRESSED;
- gd_x1 = DOOR_GFX_PAGEX4 + ED_CHECKBUTTON_UNCHECKED_XPOS;
- 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_y = DOOR_GFX_PAGEY1 + ED_RADIOBUTTON_YPOS;
-
for (i = 0; i < ED_NUM_RADIOBUTTONS; i++)
{
int id = radiobutton_info[i].gadget_id;
GDI_INFO_TEXT, radiobutton_info[i].infotext,
GDI_X, x,
GDI_Y, y,
- GDI_WIDTH, ED_CHECKBUTTON_XSIZE,
- GDI_HEIGHT, ED_CHECKBUTTON_YSIZE,
+ GDI_WIDTH, gd->width,
+ GDI_HEIGHT, gd->height,
GDI_TYPE, GD_TYPE_RADIO_BUTTON,
GDI_RADIO_NR, radiobutton_info[i].radio_button_nr,
GDI_CHECKED, checked,
- GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x1, gd_y,
- GDI_DESIGN_PRESSED, gd_bitmap, gd_x2, gd_y,
- GDI_ALT_DESIGN_UNPRESSED, gd_bitmap, gd_x3, gd_y,
- GDI_ALT_DESIGN_PRESSED, gd_bitmap, gd_x4, gd_y,
+ GDI_DESIGN_UNPRESSED, gd->bitmap, gd_x1, gd_y1,
+ GDI_DESIGN_PRESSED, gd->bitmap, gd_x2, gd_y2,
+ GDI_ALT_DESIGN_UNPRESSED, gd->bitmap, gd_x1a, gd_y1a,
+ GDI_ALT_DESIGN_PRESSED, gd->bitmap, gd_x2a, gd_y2a,
GDI_EVENT_MASK, event_mask,
GDI_CALLBACK_INFO, HandleEditorGadgetInfoText,
GDI_CALLBACK_ACTION, HandleRadiobuttons,
static void MapCounterButtons(int id)
{
+ int font_nr = FONT_TEXT_1;
+ int font_height = getFontHeight(font_nr);
int gadget_id_down = counterbutton_info[id].gadget_id_down;
int gadget_id_text = counterbutton_info[id].gadget_id_text;
int gadget_id_up = counterbutton_info[id].gadget_id_up;
struct GadgetInfo *gi_up = level_editor_gadget[gadget_id_up];
int xoffset_left = getTextWidthForGadget(counterbutton_info[id].text_left);
int xoffset_right = ED_GADGET_TEXT_DISTANCE;
- int yoffset_above = MINI_TILEX + ED_GADGET_DISTANCE;
- int yoffset = ED_BORDER_SIZE;
+ int yoffset_above = font_height + ED_GADGET_LINE_DISTANCE;
+ int yoffset = (gi_down->height - font_height) / 2;
int x_left = gi_down->x - xoffset_left;
int x_right; /* set after gadget position was modified */
int y_above = gi_down->y - yoffset_above;
y = gi_up->y + yoffset;
if (counterbutton_info[id].text_above)
- DrawText(x, y_above, counterbutton_info[id].text_above, FONT_TEXT_1);
+ DrawText(x, y_above, counterbutton_info[id].text_above, font_nr);
if (counterbutton_info[id].text_left)
- DrawText(x_left, y, counterbutton_info[id].text_left, FONT_TEXT_1);
+ DrawText(x_left, y, counterbutton_info[id].text_left, font_nr);
if (counterbutton_info[id].text_right)
- DrawText(x_right, y, counterbutton_info[id].text_right, FONT_TEXT_1);
+ DrawText(x_right, y, counterbutton_info[id].text_right, font_nr);
MapGadget(gi_down);
MapGadget(gi_text);
static void MapDrawingArea(int id)
{
+ int font_nr = FONT_TEXT_1;
+ int font_height = getFontHeight(font_nr);
struct GadgetInfo *gi = level_editor_gadget[drawingarea_info[id].gadget_id];
int area_xsize = gi->drawing.area_xsize;
int area_ysize = gi->drawing.area_ysize;
- int xoffset_left= getTextWidthForDrawingArea(drawingarea_info[id].text_left);
- int xoffset_below= getTextWidth(drawingarea_info[id].text_below,FONT_TEXT_1);
+ int xoffset_left = getTextWidthForDrawingArea(drawingarea_info[id].text_left);
+ int xoffset_below = getTextWidth(drawingarea_info[id].text_below, font_nr);
int x_left = gi->x - xoffset_left;
int x_right = gi->x + gi->width + ED_DRAWINGAREA_TEXT_DISTANCE;
int x_below = gi->x + (gi->width - xoffset_below) / 2;
- int y_side = gi->y + (gi->height - getFontHeight(FONT_TEXT_1)) / 2;
+ int y_side = gi->y + (gi->height - font_height) / 2;
int y_below = gi->y + gi->height + ED_DRAWINGAREA_TEXT_DISTANCE;
if (drawingarea_info[id].text_left)
- DrawText(x_left, y_side, drawingarea_info[id].text_left, FONT_TEXT_1);
+ DrawText(x_left, y_side, drawingarea_info[id].text_left, font_nr);
if (drawingarea_info[id].text_right)
- DrawText(x_right, y_side, drawingarea_info[id].text_right, FONT_TEXT_1);
+ DrawText(x_right, y_side, drawingarea_info[id].text_right, font_nr);
if (drawingarea_info[id].text_below)
- DrawText(x_below, y_below, drawingarea_info[id].text_below, FONT_TEXT_1);
+ DrawText(x_below, y_below, drawingarea_info[id].text_below, font_nr);
if (id != ED_DRAWING_ID_DRAWING_LEVEL)
{
static void MapTextInputGadget(int id)
{
+ int font_nr = FONT_TEXT_1;
+ int font_height = getFontHeight(font_nr);
struct GadgetInfo *gi = level_editor_gadget[textinput_info[id].gadget_id];
- int xoffset_above = 0;
- int yoffset_above = -(MINI_TILEX + ED_GADGET_DISTANCE);
- int x_above = textinput_info[id].x + xoffset_above;
- int y_above = textinput_info[id].y + yoffset_above;
+ int yoffset_above = font_height + ED_GADGET_LINE_DISTANCE;
+ int x_above = textinput_info[id].x;
+ int y_above = textinput_info[id].y - yoffset_above;
if (textinput_info[id].text_above)
- DrawTextS(x_above, y_above, FONT_TEXT_1, textinput_info[id].text_above);
+ DrawTextS(x_above, y_above, font_nr, textinput_info[id].text_above);
ModifyGadget(gi, GDI_TEXT_VALUE, textinput_info[id].value, GDI_END);
static void MapTextAreaGadget(int id)
{
+ int font_nr = FONT_TEXT_1;
+ int font_height = getFontHeight(font_nr);
struct GadgetInfo *gi = level_editor_gadget[textarea_info[id].gadget_id];
- int xoffset_above = 0;
- int yoffset_above = -(MINI_TILEX + ED_GADGET_DISTANCE);
- int x_above = textarea_info[id].x + xoffset_above;
- int y_above = textarea_info[id].y + yoffset_above;
+ int yoffset_above = font_height + ED_GADGET_LINE_DISTANCE;
+ int x_above = textarea_info[id].x;
+ int y_above = textarea_info[id].y - yoffset_above;
if (textarea_info[id].text_above)
- DrawTextS(x_above, y_above, FONT_TEXT_1, textarea_info[id].text_above);
+ DrawTextS(x_above, y_above, font_nr, textarea_info[id].text_above);
ModifyGadget(gi, GDI_TEXT_VALUE, textarea_info[id].value, GDI_END);
static void MapSelectboxGadget(int id)
{
+ int font_nr = FONT_TEXT_1;
+ int font_height = getFontHeight(font_nr);
struct GadgetInfo *gi = level_editor_gadget[selectbox_info[id].gadget_id];
int xoffset_left = getTextWidthForGadget(selectbox_info[id].text_left);
int xoffset_right = ED_GADGET_TEXT_DISTANCE;
- int yoffset = ED_BORDER_SIZE;
+ int yoffset = (gi->height - font_height) / 2;
int x_left = gi->x - xoffset_left;
int x_right = gi->x + gi->width + xoffset_right;
int y = gi->y + yoffset;
if (selectbox_info[id].text_left)
- DrawText(x_left, y, selectbox_info[id].text_left, FONT_TEXT_1);
+ DrawText(x_left, y, selectbox_info[id].text_left, font_nr);
if (selectbox_info[id].text_right)
- DrawText(x_right, y, selectbox_info[id].text_right, FONT_TEXT_1);
+ DrawText(x_right, y, selectbox_info[id].text_right, font_nr);
ModifyEditorSelectboxValue(id, *selectbox_info[id].value);
static void MapTextbuttonGadget(int id)
{
+ int font_nr = FONT_TEXT_1;
+ int font_height = getFontHeight(font_nr);
struct GadgetInfo *gi = level_editor_gadget[textbutton_info[id].gadget_id];
int xoffset_left = getTextWidthForGadget(textbutton_info[id].text_left);
int xoffset_right = ED_GADGET_TEXT_DISTANCE;
- int yoffset = ED_BORDER_SIZE;
+ int yoffset = (gi->height - font_height) / 2;
int x_left = gi->x - xoffset_left;
int x_right = gi->x + gi->width + xoffset_right;
int y = gi->y + yoffset;
return;
if (textbutton_info[id].text_left)
- DrawText(x_left, y, textbutton_info[id].text_left, FONT_TEXT_1);
+ DrawText(x_left, y, textbutton_info[id].text_left, font_nr);
if (textbutton_info[id].text_right)
- DrawText(x_right, y, textbutton_info[id].text_right, FONT_TEXT_1);
+ DrawText(x_right, y, textbutton_info[id].text_right, font_nr);
MapGadget(gi);
}
static void MapGraphicbuttonGadget(int id)
{
+ int font_nr = FONT_TEXT_1;
+ int font_height = getFontHeight(font_nr);
struct GadgetInfo *gi= level_editor_gadget[graphicbutton_info[id].gadget_id];
int xoffset_left = getTextWidthForGadget(graphicbutton_info[id].text_left);
int xoffset_right = ED_GADGET_TEXT_DISTANCE;
- int yoffset = ED_BORDER_SIZE;
+ int yoffset = (gi->height - font_height) / 2;
int x_left = gi->x - xoffset_left;
int x_right = gi->x + gi->width + xoffset_right;
int y = gi->y + yoffset;
if (graphicbutton_info[id].text_left)
- DrawText(x_left, y, graphicbutton_info[id].text_left, FONT_TEXT_1);
+ DrawText(x_left, y, graphicbutton_info[id].text_left, font_nr);
if (graphicbutton_info[id].text_right)
- DrawText(x_right, y, graphicbutton_info[id].text_right, FONT_TEXT_1);
+ DrawText(x_right, y, graphicbutton_info[id].text_right, font_nr);
MapGadget(gi);
}
static void MapRadiobuttonGadget(int id)
{
+ int font_nr = FONT_TEXT_1;
+ int font_height = getFontHeight(font_nr);
struct GadgetInfo *gi = level_editor_gadget[radiobutton_info[id].gadget_id];
int xoffset_left = getTextWidthForGadget(checkbutton_info[id].text_left);
int xoffset_right = ED_GADGET_TEXT_DISTANCE;
- int yoffset = ED_BORDER_SIZE;
+ int yoffset = (gi->height - font_height) / 2;
int x_left = gi->x - xoffset_left;
int x_right = gi->x + gi->width + xoffset_right;
int y = gi->y + yoffset;
(*radiobutton_info[id].value == radiobutton_info[id].checked_value);
if (radiobutton_info[id].text_left)
- DrawText(x_left, y, radiobutton_info[id].text_left, FONT_TEXT_1);
+ DrawText(x_left, y, radiobutton_info[id].text_left, font_nr);
if (radiobutton_info[id].text_right)
- DrawText(x_right, y, radiobutton_info[id].text_right, FONT_TEXT_1);
+ DrawText(x_right, y, radiobutton_info[id].text_right, font_nr);
ModifyGadget(gi, GDI_CHECKED, checked, GDI_END);
static void MapCheckbuttonGadget(int id)
{
+ int font_nr = FONT_TEXT_1;
+ int font_height = getFontHeight(font_nr);
struct GadgetInfo *gi = level_editor_gadget[checkbutton_info[id].gadget_id];
int xoffset_left = getTextWidthForGadget(checkbutton_info[id].text_left);
int xoffset_right = ED_GADGET_TEXT_DISTANCE;
- int yoffset = ED_BORDER_SIZE;
+ int yoffset = (gi->height - font_height) / 2;
int x_left, x_right, y; /* set after gadget position was modified */
/* set position for gadgets with dynamically determined position */
y = gi->y + yoffset;
if (checkbutton_info[id].text_left)
- DrawText(x_left, y, checkbutton_info[id].text_left, FONT_TEXT_1);
+ DrawText(x_left, y, checkbutton_info[id].text_left, font_nr);
if (checkbutton_info[id].text_right)
- DrawText(x_right, y, checkbutton_info[id].text_right, FONT_TEXT_1);
+ DrawText(x_right, y, checkbutton_info[id].text_right, font_nr);
ModifyGadget(gi, GDI_CHECKED, *checkbutton_info[id].value, GDI_END);
DrawSpecialEditorDoor();
/* draw new control window */
- BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto,
- DOOR_GFX_PAGEX8, 236, EXSIZE, EYSIZE, EX, EY);
+ BlitBitmap(graphic_info[IMG_BACKGROUND_TOOLBOX].bitmap, drawto,
+ graphic_info[IMG_BACKGROUND_TOOLBOX].src_x,
+ graphic_info[IMG_BACKGROUND_TOOLBOX].src_y,
+ EXSIZE, EYSIZE, EX, EY);
// redraw_mask |= REDRAW_ALL;
DrawFixedGraphicAnimationExt(drawto, x, y, graphic, frame, NO_MASKING);
}
-static void DrawEditorElementName(int x, int y, int element)
+static void DrawEditorElementName(int x, int y, int font_nr)
{
- char *element_name = getElementInfoText(element);
- int font_nr = FONT_TEXT_1;
+ char *element_name = getElementInfoText(properties_element);
int font_width = getFontWidth(font_nr);
int font_height = getFontHeight(font_nr);
int max_text_width = SXSIZE - x - ED_ELEMENT_SETTINGS_XPOS(0);
static void DrawPropertiesWindow()
{
- int xstart = 2;
- int ystart = 4;
-
stick_element_properties_window = FALSE;
/* make sure that previous properties edit mode exists for this element */
FrameCounter = 0; /* restart animation frame counter */
- DrawElementBorder(SX + xstart * MINI_TILEX,
- SY + ystart * MINI_TILEY + MINI_TILEY / 2,
- TILEX, TILEY, FALSE);
-
- DrawEditorElementAnimation(SX + xstart * MINI_TILEX,
- SY + ystart * MINI_TILEY + MINI_TILEY / 2);
+ struct GraphicInfo *gd = &graphic_info[IMG_EDITOR_INPUT_TEXT];
+ int border_size = gd->border_size;
+ int font_nr = FONT_TEXT_1;
+ int font_height = getFontHeight(font_nr);
+ int x = ED_ELEMENT_SETTINGS_ELEM_XPOS;
+ int y = ED_ELEMENT_SETTINGS_ELEM_YPOS;
+ int xoffset = TILEX + ED_ELEMENT_BORDER + 3 * border_size;
+ int yoffset = (TILEY - font_height) / 2;
- DrawEditorElementName((xstart + 3) * MINI_TILEX + 1,
- (ystart + 1) * MINI_TILEY + 1,
- properties_element);
+ DrawElementBorder(SX + x, SY + y, TILEX, TILEY, FALSE);
+ DrawEditorElementAnimation(SX + x, SY + y);
+ DrawEditorElementName(x + xoffset, y + yoffset, font_nr);
DrawPropertiesTabulatorGadgets();
case GADGET_ID_ZOOM:
// zoom level editor tile size in or out (or reset to default size)
- ed_tilesize = (button == 1 ? ed_tilesize / 2 :
+ ed_tilesize = (button == 1 ? ed_tilesize * 2 :
button == 2 ? DEFAULT_EDITOR_TILESIZE :
- button == 3 ? ed_tilesize * 2 : ed_tilesize);
+ button == 3 ? ed_tilesize / 2 : ed_tilesize);
// limit zoom level by upper and lower bound
ed_tilesize = MIN(MAX(MICRO_TILESIZE, ed_tilesize), TILESIZE);
break;
case KSYM_Page_Up:
id = GADGET_ID_SCROLL_LIST_UP;
- button = MB_RIGHTBUTTON;
+ button = ED_ELEMENTLIST_BUTTONS_VERT - 1;
break;
case KSYM_Page_Down:
id = GADGET_ID_SCROLL_LIST_DOWN;
- button = MB_RIGHTBUTTON;
+ button = ED_ELEMENTLIST_BUTTONS_VERT - 1;
break;
case KSYM_Home: